1
0
mirror of https://github.com/golang/go synced 2024-11-19 06:14:39 -07:00
go/pointer
Alan Donovan 3371b79a96 go.tools/pointer: reflect, part 2: channels.
(reflect.Value).Send
        (reflect.Value).TrySend
        (reflect.Value).Recv
        (reflect.Value).TryRecv
        (reflect.Type).ChanOf
        (reflect.Type).In
        (reflect.Type).Out
        reflect.Indirect
        reflect.MakeChan

Also:
- specialize genInvoke when the receiver is a reflect.Type under the
  assumption that there's only one possible concrete type.  This
  makes all reflect.Type operations context-sensitive since the calls
  are no longer dynamic.
- Rename all variables to match the actual parameter names used in
  the reflect API.
- Add pointer.Config.Reflection flag
  (exposed in oracle as --reflect, default false) to enable reflection.
  It currently adds about 20% running time.  I'll make it true after
  the presolver is implemented.
- Simplified worklist datatype and solver main loop slightly
  (~10% speed improvement).
- Use addLabel() utility to add a label to a PTS.

(Working on my 3 yr old 2x2GHz+4GB Mac vs 8x4GHz+24GB workstation,
one really notices the cost of pointer analysis.
Note to self: time to implement presolver.)

R=crawshaw
CC=golang-dev
https://golang.org/cl/13242062
2013-09-23 16:13:01 -04:00
..
testdata go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
analysis.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
api.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
callgraph.go go.tools/oracle: add option to output results in JSON syntax. 2013-09-03 15:29:02 -04:00
doc.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
example_test.go go.tools/pointer: add runnable example. 2013-09-09 12:25:25 -04:00
gen.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
intrinsics.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
labels.go go.tools/pointer: reflection, part 1: maps, and some core features. 2013-09-16 09:49:10 -04:00
pointer_test.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
print.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
reflect.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
solve.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
TODO go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00
util.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00