summaryrefslogtreecommitdiff
path: root/usr/austin/eval
AgeCommit message (Collapse)AuthorFilesLines
2009-10-14move austin/eval and austin/ogle to exp/eval and exp/ogleRuss Cox20-9787/+0
R=r OCL=35736 CL=35746
2009-10-11interpreter checkpoint.Russ Cox8-132/+1447
* generate different versions of binary operators for each size of int and float, so that proper truncating happens after each operation to simulate the various sized ops. * add slice expressions * publish World.CompileStmtList, CompileDeclList, CompileExpr * handle type-less expressions in CompileExpr R=austin DELTA=1459 (1327 added, 11 deleted, 121 changed) OCL=34382 CL=35581
2009-09-25Fix unused importsAustin Clements1-3/+0
R=rsc APPROVED=rsc DELTA=3 (0 added, 3 deleted, 0 changed) OCL=34970 CL=35007
2009-09-25s/switch _ :=/switch/Austin Clements5-36/+36
R=rsc APPROVED=rsc DELTA=36 (0 added, 0 deleted, 36 changed) OCL=34971 CL=35006
2009-09-24Fix declared and not used errors and unused import errors inAustin Clements8-42/+35
the interpreter and update code to use ast.BasicDecl and multi-type switch. There are still a lot of "switch _ := x.(type)" that should make use of the new type switch syntax, but those will be a different CL. R=rsc APPROVED=rsc DELTA=58 (16 added, 23 deleted, 19 changed) OCL=34853 CL=34963
2009-09-18Rudimentary command shell for Ogle. Hack to prevent linkerAustin Clements1-6/+8
from inlining newprocreadylocked. Fix type bridge's handling of basic types. Include interpreter's Thread in bridged native function calls. ; load . "6.out" Started 6.out ; BpSet("main·merge") ; ContWait() breakpoint at 0x400800 => 400800 main·merge /home/austin/src-go1/usr/austin/ptrace/test/sort.go:19 ; bt => 400800 main·merge /home/austin/src-go1/usr/austin/ptrace/test/sort.go:19 400b6a main·mergeSort+0x1be /home/austin/src-go1/usr/austin/ptrace/test/sort.go:34 448313 goexit /home/austin/src-go1/src/pkg/runtime/proc.c:133 ; main.merge.a {1} ; load . "pid:25753" Attached to 25753 ; bt => 479ddf syscall·Syscall+0x24 /home/austin/src-go1/src/pkg/syscall/asm_linux_amd64.s:24 47c011 syscall·Read+0x5d /home/austin/src-go1/src/pkg/syscall/zsyscall_linux_amd64.go:368 4119e5 os·*File·Read+0x5f /home/austin/src-go1/src/pkg/os/file.go:122 427bf3 bufio·*Reader·fill+0x116 /home/austin/src-go1/src/pkg/bufio/bufio.go:105 428361 bufio·*Reader·ReadSlice+0x195 /home/austin/src-go1/src/pkg/bufio/bufio.go:244 40204a ogle·Main+0x94 /home/austin/src-go1/usr/austin/ogle/cmd.go:226 40080f main·main+0xf /home/austin/src-go1/usr/austin/ogle/main.go:6 41c4b8 mainstart+0xf /home/austin/src-go1/src/pkg/runtime/amd64/asm.s:55 41531f goexit /home/austin/src-go1/src/pkg/runtime/proc.c:133 R=rsc APPROVED=rsc DELTA=433 (420 added, 2 deleted, 11 changed) OCL=34410 CL=34782
2009-09-04script for running test programs in interpreter.Russ Cox1-0/+34
tweak test/literal.go to give more information. R=austin DELTA=45 (43 added, 0 deleted, 2 changed) OCL=34381 CL=34398
2009-09-04Make world.Define{Const,Var} indicate if the definition wasAustin Clements3-11/+42
successful. R=rsc APPROVED=rsc DELTA=43 (31 added, 0 deleted, 12 changed) OCL=34375 CL=34397
2009-09-03top-level funcRuss Cox3-15/+10
R=austin DELTA=21 (5 added, 10 deleted, 6 changed) OCL=34355 CL=34355
2009-09-03Thread Thread into Value Get/Set/Assign so other ValueAustin Clements6-221/+210
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-03convert testing to World.Russ Cox8-544/+540
start on Decl, but not working yet R=austin DELTA=762 (201 added, 205 deleted, 356 changed) OCL=34335 CL=34349
2009-09-02convenience wrapperRuss Cox8-14/+146
R=austin DELTA=142 (128 added, 4 deleted, 10 changed) OCL=34275 CL=34284
2009-09-02move abortChan into Thread.Russ Cox7-45/+46
reuse Thread in function calls. R=austin DELTA=59 (8 added, 7 deleted, 44 changed) OCL=34266 CL=34266
2009-09-02s/vm/Thread/Russ Cox9-366/+369
change eval functions from taking *Frame to *Thread R=austin DELTA=500 (7 added, 4 deleted, 489 changed) OCL=34256 CL=34260
2009-09-02Update asInterface now that 6g type switch is fixed.Austin Clements2-19/+15
R=rsc APPROVED=rsc DELTA=31 (0 added, 4 deleted, 27 changed) OCL=34251 CL=34259
2009-09-01add generator for expr1.goRuss Cox6-369/+678
R=austin DELTA=959 (404 added, 99 deleted, 456 changed) OCL=34214 CL=34237
2009-09-01Interpreter unit tests for statements and expressionsAustin Clements3-0/+1015
R=rsc APPROVED=rsc DELTA=1003 (1003 added, 0 deleted, 0 changed) OCL=34223 CL=34227
2009-09-01Switch back to returning Value from the public expressionAustin Clements1-23/+35
interface, but implement it better this time. Also, work around a 6g bug in asInterface. R=rsc APPROVED=rsc DELTA=39 (13 added, 1 deleted, 25 changed) OCL=34211 CL=34217
2009-09-01Clean up the statement and expression public interfaces. TheAustin Clements2-40/+29
only visible change is that evaluating an expression returns a interface{} instead of a Value. R=rsc APPROVED=rsc DELTA=60 (15 added, 26 deleted, 19 changed) OCL=34206 CL=34208
2009-09-01move generated code into its own file.Russ Cox4-867/+817
simplify expr by merging all simple eval functions into a single eval interface{}. R=austin DELTA=1597 (730 added, 780 deleted, 87 changed) OCL=34182 CL=34198
2009-08-28Split decls.go up, taking advantage of whole-packageAustin Clements6-251/+232
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-28Implement cap, len, and make, as well as the general frameworkAustin Clements4-77/+392
for built-in functions and type conversions. Extract out common operations on expression nodes for converting them to ints and implicitly dereferencing arrays. R=rsc APPROVED=rsc DELTA=442 (365 added, 50 deleted, 27 changed) OCL=34064 CL=34064
2009-08-28Fix named types being defined to named types. In general, theAustin Clements2-4/+7
code assumes that the definition of a named type is not a named type, but some code paths could violate that. R=rsc APPROVED=rsc DELTA=9 (5 added, 2 deleted, 2 changed) OCL=34046 CL=34053
2009-08-28Give NamedTypes a public interfaceAustin Clements4-18/+31
R=rsc APPROVED=rsc DELTA=32 (14 added, 1 deleted, 17 changed) OCL=34043 CL=34043
2009-08-28Implement runtime errors, divide-by-zero checking, nil pointerAustin Clements4-94/+134
checking, bounds checking, and map key checking. R=rsc APPROVED=rsc DELTA=202 (108 added, 72 deleted, 22 changed) OCL=33981 CL=34031
2009-08-27Utilities to bridge native types and functions intoAustin Clements2-0/+177
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-27Make the statement compiler not use the AST visitor.Austin Clements3-186/+149
In the process, I made error handling in the statement compiler much saner. Instead of separately tracking various error flags with weird relations, I just track if any error messages have been produced. R=rsc APPROVED=rsc DELTA=308 (98 added, 135 deleted, 75 changed) OCL=33870 CL=33961
2009-08-25Make the expression compiler not use the AST visitor. TheAustin Clements3-497/+502
statement compiler will be fixed in a later CL. The input and output of the expression compiler are now clearly distinguished. In the process, I made the individual expression compilers operate on the compiled form of their children instead of AST nodes. As a result, there are now fewer places where I hand-craft intermediate expression nodes. The diff looks scarier than it is, mostly because exprCompiler has been split into the input and output types, resulting in lots of little renames. R=rsc APPROVED=rsc DELTA=774 (204 added, 199 deleted, 371 changed) OCL=33851 CL=33851
2009-08-24Make it only necessary to exit blocks, not scopes. AllowAustin Clements4-12/+29
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 Clements6-25/+324
R=rsc APPROVED=rsc DELTA=329 (301 added, 2 deleted, 26 changed) OCL=33696 CL=33706
2009-08-17Implement slice typesAustin Clements5-65/+240
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 Clements11-224/+127
R=rsc APPROVED=rsc DELTA=334 (110 added, 211 deleted, 13 changed) OCL=33135 CL=33137
2009-08-10Implement switch statement. Can now extract effects fromAustin Clements2-35/+222
non-addressable expressions. R=rsc APPROVED=rsc DELTA=241 (202 added, 15 deleted, 24 changed) OCL=32790 CL=32995
2009-08-05Implement struct types, selector expressions, and typeAustin Clements8-59/+557
declarations. R=rsc APPROVED=rsc DELTA=587 (519 added, 21 deleted, 47 changed) OCL=32754 CL=32788
2009-07-31Implement type compatibility and fix places where I thoughtAustin Clements4-142/+164
types were supposed to be identical but only needed to be compatible. This gets rid of the Type.literal method. I renamed the Type.rep method to Type.lit because I believe it corresponds to the term "literal" as used in the spec. R=rsc APPROVED=rsc DELTA=228 (57 added, 35 deleted, 136 changed) OCL=32606 CL=32608
2009-07-31Implement var declarations. Variables, constants, and types now carryAustin Clements5-71/+184
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-30Implement labels, goto, labeled break, and labeled continue.Austin Clements5-74/+380
Return checking is now done as a general flow check at the end of function compilation, since break and goto complicated the way I was doing return checking before. Goto-over-declaration checking is also done as a final flow check. Temporary variables used for effect extraction are now actually temporary. Otherwise "op=", "++", and "--" appear as declarations that cannot be jumped over. R=rsc APPROVED=rsc DELTA=421 (344 added, 38 deleted, 39 changed) OCL=32527 CL=32535
2009-07-29Flatten the Frame tree. Now each function call produces aAustin Clements8-206/+218
single frame and non-overlapping variables reuse frame slots. As a result, entering and exiting blocks no longer requires code execution, which means jumps across block boundaries should be doable now. Frame slot initialization happens at definition time now, instead of at frame creation time. As an added bonus, Scope's are now exclusively compile-time objects and we no longer need to specially track the function activation frame for access to out vars. R=rsc APPROVED=rsc DELTA=313 (102 added, 90 deleted, 121 changed) OCL=32416 CL=32420
2009-07-28Implement comparison operators.Austin Clements1-21/+302
R=rsc APPROVED=rsc DELTA=304 (281 added, 0 deleted, 23 changed) OCL=32361 CL=32382
2009-07-28Fix segfault on unnamed function arguments. Make continueAustin Clements1-4/+9
jump to the post statement instead of the condition check. R=rsc APPROVED=rsc DELTA=10 (6 added, 1 deleted, 3 changed) OCL=32359 CL=32379
2009-07-28Implement if, for (modulo ranges), break, continue, increment,Austin Clements3-31/+322
and decrement. blockCompilers now form a tree the mimics the nesting of scopes and provide convenient ways to enter and exit scopes. blockCompilers also track the break and continue PC for the current block. The statement testing interface now works in lists of statements, which simplifies a bunch of things. R=rsc APPROVED=rsc DELTA=401 (335 added, 44 deleted, 22 changed) OCL=32308 CL=32317
2009-07-28Fix bug where typeArrayMap was using the address of theAustin Clements1-1/+1
pointer to the Type instead of the address of the Type. R=rsc APPROVED=rsc DELTA=1 (0 added, 0 deleted, 1 changed) OCL=32265 CL=32279
2009-07-27Implement multi-valued functions, multi-valued return, andAustin Clements5-164/+425
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-27Fix bug where nothing could ever be added to a code buffer.Austin Clements1-2/+2
R=rsc APPROVED=rsc DELTA=2 (0 added, 0 deleted, 2 changed) OCL=32245 CL=32247
2009-07-27Implement single-valued, non-variadic function literals andAustin Clements9-265/+1453
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-21Implement assignment. Move convertTo.Austin Clements2-93/+518
R=rsc APPROVED=rsc DELTA=591 (497 added, 76 deleted, 18 changed) OCL=31933 CL=31955
2009-07-21Cleanup of Type/Value interface. Add Type.ZeroVal, replaceAustin Clements5-145/+190
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 Clements5-57/+258
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-17Gather errors in a go.scanner.ErrorList instead of printingAustin Clements2-33/+55
them as we go. Lots of bug fixes. Let the parser toss illegal character and string literals. Compile unary + correctly. Allow float OP ideal. Compile unary * correctly. Implement min and max float values. R=rsc APPROVED=rsc DELTA=64 (29 added, 7 deleted, 28 changed) OCL=31811 CL=31814
2009-07-17Finish shift implementation for ideals.Austin Clements1-34/+46
R=rsc APPROVED=rsc DELTA=65 (29 added, 17 deleted, 19 changed) OCL=31775 CL=31777