Dragging in some modules when X86Compiler is used, so scripts can use them.
[trylon.git] / Notes
blob4a9518bf314d0697b4ab35391d01ea066639b77b
1 Field Codegen Bug
2         [2007.8.31]
4         trylon main
6         fields my-field
8 Classes can see "my-field" (which is correct), but the codegen is a field access, when it should be a send to the "Main" proto.  "emit-c-call:builder:" methods of FieldGetter and FieldSetter need to be fixed.  [Fixed 2007.9.1]
10 To optimize field access, "MethodContext lookup-function:" would need to explicitly check fields before checking for function calls on "this".  But that's not semantically safe, as a subclass could override the getter and/or setter.
12 =====
14 64-Bit
15         [2008.10.25]
17 Can't use setjmp()/longjmp() to pass the exception object, as they only pass an "int", not a "long".  This is easily fixed by only passing 1 there, and using a global to hold the exception value.  That's not thread-safe, but our exception chain isn't thread-safe currently either.
19 ClassInfo stores size in bytes, rt number of fields.  That doesn't work when the generated C code is moved between 32 and 64 bit platforms.
21 Int should go to 64-bit on 64-bit platforms... but that probably won't be necessary to make it work.
24 =====
26 New Parser Bug
27         [2007.10.19]
29 Current crash is due to a problem with precedence.  Need to separate assignments from other binops:
31         foo = quux bar: baz
33 currently parses as:
35         (foo = quux) bar: baz
37 The old parser doesn't have that problem, but at the expense of not being clean about its syntax.  It ought to be fixed before the Trylon 2 release (assuming we don't switch to the new parser).
39 New precedence:
41         ,
42         =, +=, etc.
43         ||
44         &&
45         !
46         keyword:
47         |
48         ^
49         &
50         ==, !=
51         <, >, <=, >=
52         <<, >>
53         +, -
54         *, /, %
55         unary+, unary-, ~       [Used to have !.]
56         unary send
57         primary
59 Tests:
61         foo: bar && !bar: baz
62         foo: x | 0x03
65 =====
67 To Do
68         [live]
70 Lambdas.
71 Field access optimization.  Strictly optional, since even in constructors we can't be sure we aren't dealing with a subclass that overrides the getter and/or setter.  But it might be a helpful optimization for those who know what they're doing.