annotate tests/mini/interface8.d @ 920:545f54041d91

Implemented proper support for naked asm using llvm module level asm. Still not 100% complete, but already 1000 times better that what we had before. Don's BignumX86 implementation from Tango (when turned into a standalone unittest) seems to fully work with no changes, and great performance :) Fixed align N; in asm blocks. Fixed inreg parameter passing on x86 for ref/out params. Removed support for lazy initialization of function local static variables, I have no idea why I ever implemented this, it's not in the D spec, and DMD doesn't support it :P Some of the global variable related changes might cause minor regressions, but they should be easily fixable.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Tue, 03 Feb 2009 08:54:57 +0100
parents d92acb81a583
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
807
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
1 interface InputStream
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
2 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
3 void foo();
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
4 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
5
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
6 interface OutputStream
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
7 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
8 void bar();
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
9 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
10
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
11 interface IConduit : InputStream, OutputStream
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
12 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
13 abstract uint bufferSize();
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
14 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
15
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
16 class Conduit : IConduit
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
17 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
18 abstract uint bufferSize();
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
19 abstract void foo();
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
20 abstract void bar();
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
21 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
22
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
23 interface Selectable
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
24 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
25 void car();
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
26 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
27
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
28 class DeviceConduit : Conduit, Selectable
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
29 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
30 override uint bufferSize ()
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
31 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
32 return 1024 * 16;
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
33 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
34 override void foo() {}
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
35 override void bar() {}
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
36 override void car() {}
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
37 int handle;
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
38 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
39
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
40 class ConsoleConduit : DeviceConduit
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
41 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
42 override void foo() {}
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
43 bool redirected;
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
44 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
45
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
46 class OtherConduit : Conduit
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
47 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
48 abstract uint bufferSize();
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
49 override void foo() {}
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
50 override void bar() {}
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
51 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
52
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
53 void main()
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
54 {
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
55 auto c = new ConsoleConduit;
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
56 IConduit ci = c;
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
57 assert(c.bufferSize == ci.bufferSize);
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
58 }
d92acb81a583 Add interface minitest, rework s.d.
Christian Kamm <kamm incasoftware de>
parents:
diff changeset
59