Age | Commit message (Collapse) | Author | Files | Lines |
|
R=r
OCL=35736
CL=35746
|
|
implementations can abort. Make genConstant get values lazily
since we need the Thread now.
R=rsc
APPROVED=rsc
DELTA=299 (8 added, 19 deleted, 272 changed)
OCL=34353
CL=34353
|
|
change eval functions from taking *Frame to *Thread
R=austin
DELTA=500 (7 added, 4 deleted, 489 changed)
OCL=34256
CL=34260
|
|
compilation to put the definitions in reasonable places. No
code changes, just movement.
R=rsc
APPROVED=rsc
DELTA=479 (232 added, 247 deleted, 0 changed)
OCL=34067
CL=34069
|
|
interpreter values. Also, print nil values properly.
R=rsc
APPROVED=rsc
DELTA=173 (173 added, 0 deleted, 0 changed)
OCL=33837
CL=33973
|
|
variables to be given initial values in some cases, to make
building global scopes more convenient.
R=rsc
APPROVED=rsc
DELTA=29 (17 added, 0 deleted, 12 changed)
OCL=33760
CL=33766
|
|
R=rsc
APPROVED=rsc
DELTA=329 (301 added, 2 deleted, 26 changed)
OCL=33696
CL=33706
|
|
R=rsc
APPROVED=rsc
DELTA=286 (217 added, 42 deleted, 27 changed)
OCL=33319
CL=33383
|
|
R=rsc
APPROVED=rsc
DELTA=334 (110 added, 211 deleted, 13 changed)
OCL=33135
CL=33137
|
|
declarations.
R=rsc
APPROVED=rsc
DELTA=587 (519 added, 21 deleted, 47 changed)
OCL=32754
CL=32788
|
|
the position where they were defined so I can produce good
error messages on redefinitions.
R=rsc
APPROVED=rsc
DELTA=204 (126 added, 13 deleted, 65 changed)
OCL=32599
CL=32605
|
|
unpacking for assignments, call arguments, and returns. This
change revamps the whole assignment compilation system to be
multi-valued, using the new MultiType type and multiV value.
Function calls, returns, and assignments now share a lot of
code and produce very consistent error messages.
R=rsc
APPROVED=rsc
DELTA=510 (335 added, 74 deleted, 101 changed)
OCL=32248
CL=32258
|
|
function calling. Implement a type compiler and named types.
Implement a universal scope containing built-in named types,
and some built-in constants. Implement a simple virtual
machine for executing statements and single-valued return.
Fix many places that incorrectly dealt with named types. In
particular, the Type.Zero methods now use the type's bit count
to determine the appropriate value representation. As a
result, a bit count of 0 now means architecture-dependent and
bounded types use unsafe.Sizeof to determine the correct
bounds. Previously, the bounds on a 32-bit machine would have
been wrong.
Eliminated Type.compatible, since the implementation is
equivalent for all types. Added Type.rep that shallowly
strips named types. Replaced almost all uses of Type.literal
with Type.rep.
Fix implementation of assign-op's so it only evaluates the
left side once. As part of this, there is now a generic way
to separate out the effect and value of an expression.
R=rsc
APPROVED=rsc
DELTA=1530 (1244 added, 68 deleted, 218 changed)
OCL=32184
CL=32230
|
|
all type-specific value functions, and use ZeroVal to create
new frames. Remove Value.Type; it was unused and difficult
for values with composite types. Add Value.Assign methods.
R=rsc
APPROVED=rsc
DELTA=282 (135 added, 90 deleted, 57 changed)
OCL=31894
CL=31930
|
|
Some cleanup. Elem() on PtrType is now just Elem and matches
with ArrayType. Generators now switch over the result type
instead of the operand type. Delete unused diag function.
R=rsc
APPROVED=rsc
DELTA=281 (219 added, 18 deleted, 44 changed)
OCL=31876
CL=31891
|
|
container for values.
Instead of having one evaluator function that returns a
generic Value, there is now an evaluator function for each
generalized type that simply returns a native type.
The compiler is more type-safe now because there are almost no
type conversions at evaluation time and it's impossible to
invoke a nil evaluator function during evaluation. This also
makes ideals and pointers really clean.
As an added bonus, expression evaluation should be faster
because it doesn't require heap allocation for every
intermediate value, type switches, or lots of conversions to
and from Value. It also involves fewer function calls.
R=rsc
APPROVED=rsc
DELTA=431 (280 added, 115 deleted, 36 changed)
OCL=31705
CL=31709
|
|
pointer types, supports literals, identifiers, type-checking
most unary and binary operators, "compiling" a few unary and
binary operators, and assignment and declaration statements.
R=rsc
APPROVED=rsc
DELTA=1751 (1751 added, 0 deleted, 0 changed)
OCL=31309
CL=31691
|