Age | Commit message (Collapse) | Author | Files | Lines |
|
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
|
|
R=rsc
APPROVED=rsc
DELTA=304 (281 added, 0 deleted, 23 changed)
OCL=32361
CL=32382
|
|
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
|
|
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
|
|
R=r,gri,rsc
APPROVED=rsc
DELTA=53 (12 added, 6 deleted, 35 changed)
OCL=31822
CL=32282
|
|
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
|
|
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
|
|
R=rsc
APPROVED=rsc
DELTA=2 (0 added, 0 deleted, 2 changed)
OCL=32245
CL=32247
|
|
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
|
|
R=rsc
APPROVED=rsc
DELTA=591 (497 added, 76 deleted, 18 changed)
OCL=31933
CL=31955
|
|
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
|
|
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
|
|
R=rsc
APPROVED=rsc
DELTA=65 (29 added, 17 deleted, 19 changed)
OCL=31775
CL=31777
|
|
R=rsc
APPROVED=rsc
DELTA=41 (0 added, 0 deleted, 41 changed)
OCL=31773
CL=31773
|
|
R=rsc
APPROVED=rsc
DELTA=689 (497 added, 169 deleted, 23 changed)
OCL=31755
CL=31772
|
|
considered running, so WaitStop doesn't lock up and
breakpoints get installed and uninstalled. We also don't try
to detach from them, since that will fail.
R=rsc
APPROVED=rsc
DELTA=35 (26 added, 2 deleted, 7 changed)
OCL=31683
CL=31731
|
|
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
|
|
R=rsc
APPROVED=rsc
DELTA=81 (53 added, 3 deleted, 25 changed)
OCL=31651
CL=31675
|
|
R=rsc
APPROVED=rsc
DELTA=1543 (1528 added, 0 deleted, 15 changed)
OCL=31570
CL=31630
|
|
R=rsc
APPROVED=rsc
DELTA=422 (211 added, 211 deleted, 0 changed)
OCL=31425
CL=31431
|
|
This is meant to be implemented per platform and used by
higher-level debugging libraries.
R=rsc
APPROVED=rsc
DELTA=211 (211 added, 0 deleted, 0 changed)
OCL=31003
CL=31423
|
|
- remove some left-over files
R=rsc
DELTA=1465 (281 added, 1181 deleted, 3 changed)
OCL=30350
CL=30353
|
|
- replacement for pretty; app to format a single .go file
printer.go (pkg/go/printer):
- replacement for astprinter.go; implements AST printing
- also replaces pkg/go/ast/format.go for now
cleanups:
- removed/saved away old code
R=r,rsc,iant
DELTA=2833 (1183 added, 1628 deleted, 22 changed)
OCL=30226
CL=30306
|
|
tests: all.bash passes, gobuild still works, godoc still works.
R=rsc
OCL=30096
CL=30102
|
|
- support debug/sync (if automatic sync is enabled in the first place)
- removed debug/restart feature
R=rsc
DELTA=97 (37 added, 27 deleted, 33 changed)
OCL=30068
CL=30079
|
|
R=rsc
DELTA=31 (6 added, 8 deleted, 17 changed)
OCL=30046
CL=30051
|
|
R=rsc
DELTA=1 (1 added, 0 deleted, 0 changed)
OCL=29970
CL=29973
|
|
TBR=rsc
DELTA=1 (0 added, 0 deleted, 1 changed)
OCL=29969
CL=29969
|
|
- don't show p4 sync output if -verbose is not set
R=rsc
DELTA=25 (5 added, 15 deleted, 5 changed)
OCL=29962
CL=29962
|
|
R=rsc
DELTA=1 (0 added, 0 deleted, 1 changed)
OCL=29961
CL=29961
|
|
- set "Updated" timestamp on served pages to p4 sync time
R=rsc
DELTA=72 (66 added, 3 deleted, 3 changed)
OCL=29959
CL=29959
|
|
remove a few hardcoded paths elsewhere too.
R=r,gri
DELTA=123 (44 added, 15 deleted, 64 changed)
OCL=29914
CL=29945
|
|
convention used in template.go)
R=rsc
DELTA=22 (3 added, 1 deleted, 18 changed)
OCL=29780
CL=29782
|
|
- factored out datafmt-specifics from pretty to ast
R=rsc
DELTA=3580 (1810 added, 1763 deleted, 7 changed)
OCL=29770
CL=29774
|
|
R=r,rsc
DELTA=2871 (1712 added, 1118 deleted, 41 changed)
OCL=29222
CL=29704
|
|
extract comment text code out of go/doc/doc.go into comment.go.
no code changes, just rearrangement.
first step so i can write tests.
R=gri
DELTA=633 (318 added, 301 deleted, 14 changed)
OCL=29269
CL=29293
|
|
R=rsc
DELTA=184 (69 added, 73 deleted, 42 changed)
OCL=29178
CL=29253
|
|
- format.go implementation complete
- lots of documentation added (not quite complete)
TBR=r
OCL=29130
CL=29130
|
|
TBR=rsc
OCL=29010
CL=29010
|
|
R=rsc
DELTA=11 (10 added, 0 deleted, 1 changed)
OCL=29007
CL=29009
|
|
- added IsValid predicate to token.Position
- updated pretty, godoc, gobuild
- updated/expanded test cases
R=rsc
DELTA=265 (97 added, 78 deleted, 90 changed)
OCL=28961
CL=29005
|
|
TBR=r
DELTA=9270 (0 added, 9270 deleted, 0 changed)
OCL=28958
CL=28958
|
|
format.go:
- better error handling, indentation, support for defaults,
environments for custom formatters, cleanups (more functionality, less code)
pretty.go:
- better comment printing using format.go
made test script more robust
TBR=r
DELTA=622 (175 added, 305 deleted, 142 changed)
OCL=28956
CL=28956
|
|
R=rsc
DELTA=21 (19 added, 0 deleted, 2 changed)
OCL=28938
CL=28941
|
|
R=r
DELTA=13 (1 added, 6 deleted, 6 changed)
OCL=28840
CL=28844
|
|
- one node for array and slice types
- one node for index and slice expressions
- simplified parser, astprinter, and ast.txt
R=r
DELTA=71 (0 added, 43 deleted, 28 changed)
OCL=28768
CL=28768
|
|
This also adds a missing 'return' when a malformed URL is passed to it.
R=rsc
APPROVED=rsc
DELTA=30 (13 added, 2 deleted, 15 changed)
OCL=28598
CL=28710
|
|
- sort directories before printing
- apply filtering to factory functions and methods
- remove a couple of unused files
R=r
DELTA=84 (34 added, 40 deleted, 10 changed)
OCL=28657
CL=28657
|