1
0
mirror of https://github.com/golang/go synced 2024-11-26 18:36:48 -07:00
Commit Graph

82 Commits

Author SHA1 Message Date
Russ Cox
e98412290e interpreter checkpoint.
* 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-10-11 02:35:53 -07:00
Russ Cox
11d3805579 clean more
R=r
DELTA=40  (9 added, 3 deleted, 28 changed)
OCL=35277
CL=35305
2009-10-03 10:38:03 -07:00
Austin Clements
3c8a1de720 Add eval and ogle to the build process so they can be kept up
to date.

R=rsc
APPROVED=rsc
DELTA=8  (6 added, 0 deleted, 2 changed)
OCL=35009
CL=35011
2009-09-25 11:36:27 -07:00
Austin Clements
4211384976 Switch ogle to in-tree gosym package. Delete my private sym
package.  If a Sym is a function symbol, include a reference
to the Func so it's easily accessible when you're traversing
the list of all symbols.  This diff is more interesting than
the proc switch because the gosym interface differs from the
old sym interface.

R=rsc
APPROVED=rsc
DELTA=1957  (34 added, 1868 deleted, 55 changed)
OCL=34969
CL=35008
2009-09-25 09:39:08 -07:00
Austin Clements
60098a41fb Fix unused imports
R=rsc
APPROVED=rsc
DELTA=3  (0 added, 3 deleted, 0 changed)
OCL=34970
CL=35007
2009-09-25 09:38:10 -07:00
Austin Clements
cbcd146f5d s/switch _ :=/switch/
R=rsc
APPROVED=rsc
DELTA=36  (0 added, 0 deleted, 36 changed)
OCL=34971
CL=35006
2009-09-25 09:37:35 -07:00
Austin Clements
ffe83e582e Switch ogle over to the in-tree debug/proc package. Fix
debug/proc to install to the right place.  Delete the old
ptrace package.  The diff looks huge, but it's mostly
s/ptrace/proc/.

R=rsc
APPROVED=rsc
DELTA=1940  (10 added, 1835 deleted, 95 changed)
OCL=34966
CL=34968
2009-09-24 09:07:47 -07:00
Austin Clements
495b3db88b Fix declared and not used errors in ogle.
R=rsc
APPROVED=rsc
DELTA=8  (0 added, 2 deleted, 6 changed)
OCL=34854
CL=34965
2009-09-24 08:32:59 -07:00
Austin Clements
9f6328633d Fix declared and not set errors in old ptrace package (still
used by ogle)

R=rsc
APPROVED=rsc
DELTA=4  (0 added, 1 deleted, 3 changed)
OCL=34852
CL=34964
2009-09-24 08:32:10 -07:00
Austin Clements
da4a22993e Fix declared and not used errors and unused import errors in
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-24 08:25:14 -07:00
Austin Clements
73bac0416b Fix declared and not used errors in old sym package (ogle
hasn't been ported to the new sym package yet)

R=rsc
APPROVED=rsc
DELTA=9  (0 added, 1 deleted, 8 changed)
OCL=34851
CL=34962
2009-09-24 08:19:16 -07:00
Austin Clements
ad9c6f7700 Rudimentary command shell for Ogle. Hack to prevent linker
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-18 09:11:19 -07:00
Austin Clements
20583b5874 Implement remote variables
R=rsc
APPROVED=rsc
DELTA=282  (281 added, 0 deleted, 1 changed)
OCL=34407
CL=34781
2009-09-18 09:09:40 -07:00
Austin Clements
eabcb10a32 Don't crash in Sym.ReceiverName for symbols like "x.x"
R=rsc
APPROVED=rsc
DELTA=2  (0 added, 0 deleted, 2 changed)
OCL=34404
CL=34406
2009-09-04 16:12:50 -07:00
Russ Cox
c702bdd828 script for running test programs in interpreter.
tweak test/literal.go to give more information.

R=austin
DELTA=45  (43 added, 0 deleted, 2 changed)
OCL=34381
CL=34398
2009-09-04 13:04:11 -07:00
Austin Clements
c7d27f88f8 Make world.Define{Const,Var} indicate if the definition was
successful.

R=rsc
APPROVED=rsc
DELTA=43  (31 added, 0 deleted, 12 changed)
OCL=34375
CL=34397
2009-09-04 12:55:25 -07:00
Austin Clements
fdf5efe43c Update debugger to use Abort interface
R=rsc
APPROVED=rsc
DELTA=314  (132 added, 2 deleted, 180 changed)
OCL=34376
CL=34396
2009-09-04 11:58:00 -07:00
Austin Clements
05522cd51e s/Thread/Goroutine/
R=rsc
APPROVED=rsc
DELTA=328  (112 added, 110 deleted, 106 changed)
OCL=34356
CL=34356
2009-09-03 17:41:25 -07:00
Russ Cox
920c6106ca top-level func
R=austin
DELTA=21  (5 added, 10 deleted, 6 changed)
OCL=34355
CL=34355
2009-09-03 17:22:20 -07:00
Austin Clements
851497bc65 Thread Thread into Value Get/Set/Assign so other Value
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-03 17:14:49 -07:00
Austin Clements
db27b5bcb1 Implement Go threads. Implement a general event system
including breakpoints and Go thread create/exit.

R=rsc
APPROVED=rsc
DELTA=751  (729 added, 6 deleted, 16 changed)
OCL=34345
CL=34351
2009-09-03 16:59:41 -07:00
Russ Cox
dcb1c5f5d4 convert testing to World.
start on Decl, but not working yet

R=austin
DELTA=762  (201 added, 205 deleted, 356 changed)
OCL=34335
CL=34349
2009-09-03 16:20:49 -07:00
Austin Clements
37aa6c9962 Fix uninstalling of breakpoints when a process exits. Process
exit is still handled poorly.

R=rsc
APPROVED=rsc
DELTA=6  (6 added, 0 deleted, 0 changed)
OCL=34288
CL=34315
2009-09-03 10:55:20 -07:00
Russ Cox
c9edbbd4d0 convenience wrapper
R=austin
DELTA=142  (128 added, 4 deleted, 10 changed)
OCL=34275
CL=34284
2009-09-02 17:15:43 -07:00
Russ Cox
dd7b583179 move abortChan into Thread.
reuse Thread in function calls.

R=austin
DELTA=59  (8 added, 7 deleted, 44 changed)
OCL=34266
CL=34266
2009-09-02 14:11:40 -07:00
Russ Cox
747cde8161 s/vm/Thread/
change eval functions from taking *Frame to *Thread

R=austin
DELTA=500  (7 added, 4 deleted, 489 changed)
OCL=34256
CL=34260
2009-09-02 12:03:20 -07:00
Austin Clements
72a11c5752 Update asInterface now that 6g type switch is fixed.
R=rsc
APPROVED=rsc
DELTA=31  (0 added, 4 deleted, 27 changed)
OCL=34251
CL=34259
2009-09-02 11:59:53 -07:00
Russ Cox
e905cb2df7 add generator for expr1.go
R=austin
DELTA=959  (404 added, 99 deleted, 456 changed)
OCL=34214
CL=34237
2009-09-01 22:57:53 -07:00
Austin Clements
ad9fabd769 Interpreter unit tests for statements and expressions
R=rsc
APPROVED=rsc
DELTA=1003  (1003 added, 0 deleted, 0 changed)
OCL=34223
CL=34227
2009-09-01 17:21:44 -07:00
Austin Clements
264641711b Switch back to returning Value from the public expression
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-01 16:17:50 -07:00
Austin Clements
3dfbfdabce Clean up the statement and expression public interfaces. The
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-01 14:16:51 -07:00
Austin Clements
155fe7925b Add stack frame support. Architectures are now responsible
for decoding closures.  There is now no notion of a current OS
thread, though that needs to come back in the form of a
current Go thread.  As a result, Process now implements Peek
and Poke and maps them to any stopped OS thread, since they
all share the address space anyways.

R=rsc
APPROVED=rsc
DELTA=322  (310 added, 3 deleted, 9 changed)
OCL=34136
CL=34201
2009-09-01 13:01:37 -07:00
Russ Cox
8c7eb44249 move generated code into its own file.
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-09-01 11:51:33 -07:00
Austin Clements
30dcb13420 Split decls.go up, taking advantage of whole-package
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-28 18:25:56 -07:00
Austin Clements
345c1bd473 Debugged processes, remote values, and remote type parser
R=rsc
APPROVED=rsc
DELTA=917  (917 added, 0 deleted, 0 changed)
OCL=34049
CL=34066
2009-08-28 18:04:35 -07:00
Austin Clements
0a969fa983 Debugger's remote runtime definitions.
R=rsc
APPROVED=rsc
DELTA=237  (237 added, 0 deleted, 0 changed)
OCL=33966
CL=34065
2009-08-28 18:04:18 -07:00
Austin Clements
c90bc34d75 Implement cap, len, and make, as well as the general framework
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-28 18:03:03 -07:00
Austin Clements
d11a4b0dd4 Fix named types being defined to named types. In general, the
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-28 14:39:12 -07:00
Austin Clements
8fdc5b6041 Give NamedTypes a public interface
R=rsc
APPROVED=rsc
DELTA=32  (14 added, 1 deleted, 17 changed)
OCL=34043
CL=34043
2009-08-28 12:45:30 -07:00
Austin Clements
9d517ba3fd Implement runtime errors, divide-by-zero checking, nil pointer
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-28 10:39:57 -07:00
Austin Clements
e653280cad Utilities to bridge native types and functions into
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-27 13:11:06 -07:00
Austin Clements
ea62b3441f Debugger architecture interface and definitions for AMD64.
R=rsc
APPROVED=rsc
DELTA=114  (114 added, 0 deleted, 0 changed)
OCL=33957
CL=33962
2009-08-27 11:24:13 -07:00
Austin Clements
c0dd9f526b Make the statement compiler not use the AST visitor.
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-27 11:21:52 -07:00
Russ Cox
4b409289f6 remove Line in bufio.ReadLine(Bytes|Slice|String)
also drop bool arg from ReadString

R=r
DELTA=45  (13 added, 1 deleted, 31 changed)
OCL=33923
CL=33960
2009-08-27 11:20:15 -07:00
Austin Clements
36eee6d1e1 Make the expression compiler not use the AST visitor. The
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-25 17:57:40 -07:00
Austin Clements
9a36b8087c Make it only necessary to exit blocks, not scopes. Allow
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-24 13:48:16 -07:00
Austin Clements
30a2dabdc3 Implement map types
R=rsc
APPROVED=rsc
DELTA=329  (301 added, 2 deleted, 26 changed)
OCL=33696
CL=33706
2009-08-21 18:37:38 -07:00
Austin Clements
fc18391209 Decode overlapping section names correctly.
R=rsc
APPROVED=rsc
DELTA=23  (14 added, 8 deleted, 1 changed)
OCL=33699
CL=33705
2009-08-21 18:30:20 -07:00
Austin Clements
bd65739bc2 Implement line-to-PC mapping. Add unit tests for
PC/line/aline conversion methods.

R=rsc
APPROVED=rsc
DELTA=458  (434 added, 15 deleted, 9 changed)
OCL=33677
CL=33702
2009-08-21 18:13:35 -07:00
Austin Clements
1068bcab96 Make stop causes pointers so users outside the package can
type switch on them despite their private fields.  Add some
tracing stuff.

R=rsc
APPROVED=rsc
DELTA=18  (7 added, 0 deleted, 11 changed)
OCL=33678
CL=33683
2009-08-21 15:54:54 -07:00