1
0
mirror of https://github.com/golang/go synced 2024-11-19 00:44:40 -07:00
go/pointer
Alan Donovan 8bb20b8231 go.tools/pointer: more reflection.
Support for:
        (*reflect.rtype).Field
        (*reflect.rtype).FieldByName
        reflect.MakeSlice
        runtime.SetFinalizer

Details:
- analysis locates ssa.Functions for (reflect.Value).Call
  and runtime.SetFinalizer during startup to that it can
  special-case them during genCall.  ('Call' is forthcoming.)
- The callsite.targets mechanism is only used for dynamic
  calls now.  For static calls we call callEdge during constraint
  generation; this is a minor optimisation.
- Static calls to SetFinalizer are inlined so that the call
  appears to go direct to the finalizer.  (We'll use the same
  trick for (reflect.Value).Call.)
- runtime.FuncForPC: treat as a no-op.
- Fixed pointer_test to properly deal with expectations
  that are multi-sets.
- Inlined rtypeMethodByNameConstraint.addMethod.
- More tests.

R=crawshaw
CC=golang-dev
https://golang.org/cl/14682045
2013-10-17 09:26:44 -04:00
..
testdata go.tools/pointer: more reflection. 2013-10-17 09:26:44 -04:00
analysis.go go.tools/pointer: more reflection. 2013-10-17 09:26:44 -04:00
api.go go.tools/pointer: minor API simplifications. 2013-09-30 12:39:54 -04:00
callgraph.go go.tools/pointer: more reflection. 2013-10-17 09:26:44 -04:00
doc.go go.tools/pointer: make os.Args point to something. 2013-10-01 09:46:33 -04:00
example_test.go go.tools/importer: expose CreatePackage method. 2013-10-10 12:37:49 -04:00
gen.go go.tools/pointer: more reflection. 2013-10-17 09:26:44 -04:00
intrinsics.go go.tools/pointer: more reflection. 2013-10-17 09:26:44 -04:00
labels.go go.tools/pointer: make os.Args point to something. 2013-10-01 09:46:33 -04:00
pointer_test.go go.tools/pointer: more reflection. 2013-10-17 09:26:44 -04:00
print.go go.tools/pointer: use assignable not identical type predicate in reflect.{Send,SetMapIndex,etc} 2013-10-14 13:53:41 -04:00
reflect.go go.tools/pointer: more reflection. 2013-10-17 09:26:44 -04:00
solve.go go.tools/pointer: use assignable not identical type predicate in reflect.{Send,SetMapIndex,etc} 2013-10-14 13:53:41 -04:00
TODO go.tools/pointer: make os.Args point to something. 2013-10-01 09:46:33 -04:00
util.go go.tools/pointer: reflect, part 2: channels. 2013-09-23 16:13:01 -04:00