summaryrefslogtreecommitdiff
path: root/usr/austin/eval/value.go
AgeCommit message (Collapse)AuthorFilesLines
2009-10-14move austin/eval and austin/ogle to exp/eval and exp/ogleRuss Cox1-731/+0
R=r OCL=35736 CL=35746
2009-09-03Thread Thread into Value Get/Set/Assign so other ValueAustin Clements1-135/+135
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
2009-09-02s/vm/Thread/Russ Cox1-1/+1
change eval functions from taking *Frame to *Thread R=austin DELTA=500 (7 added, 4 deleted, 489 changed) OCL=34256 CL=34260
2009-08-28Split decls.go up, taking advantage of whole-packageAustin Clements1-0/+115
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
2009-08-27Utilities to bridge native types and functions intoAustin Clements1-0/+9
interpreter values. Also, print nil values properly. R=rsc APPROVED=rsc DELTA=173 (173 added, 0 deleted, 0 changed) OCL=33837 CL=33973
2009-08-24Make it only necessary to exit blocks, not scopes. AllowAustin Clements1-1/+1
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
2009-08-21Implement map typesAustin Clements1-0/+63
R=rsc APPROVED=rsc DELTA=329 (301 added, 2 deleted, 26 changed) OCL=33696 CL=33706
2009-08-17Implement slice typesAustin Clements1-0/+36
R=rsc APPROVED=rsc DELTA=286 (217 added, 42 deleted, 27 changed) OCL=33319 CL=33383
2009-08-12Convert interpreter to whole-package compilation.Austin Clements1-119/+0
R=rsc APPROVED=rsc DELTA=334 (110 added, 211 deleted, 13 changed) OCL=33135 CL=33137
2009-08-05Implement struct types, selector expressions, and typeAustin Clements1-2/+45
declarations. R=rsc APPROVED=rsc DELTA=587 (519 added, 21 deleted, 47 changed) OCL=32754 CL=32788
2009-07-31Implement var declarations. Variables, constants, and types now carryAustin Clements1-2/+2
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
2009-07-27Implement multi-valued functions, multi-valued return, andAustin Clements1-0/+32
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
2009-07-27Implement single-valued, non-variadic function literals andAustin Clements1-29/+71
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
2009-07-21Cleanup of Type/Value interface. Add Type.ZeroVal, replaceAustin Clements1-112/+123
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
2009-07-20Implement array types and index expressions.Austin Clements1-0/+27
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
2009-07-15Make Value always represent an l-value and never a genericAustin Clements1-2/+7
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
2009-07-15Beginnings of a Go interpreter. This implements basic andAustin Clements1-0/+467
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