1
0
mirror of https://github.com/golang/go synced 2024-10-01 09:48:32 -06:00
The Go programming language
Go to file
Alan Donovan 94c387c610 go.tools/pointer: implement (reflect.Value).Call.
The implementation follows the basic pattern of an indirect
function call (genDynamicCall).

We use the same trick as SetFinalizer so that direct calls to
(r.V).Call, which are overwhelmingly the norm, are inlined.

Bug fix (and simplification): calling untag() to unbox a
reflect.Value is wrong for reflect.Values containing interfaces
(rare).  Now, we call untag for concrete types and typeFilter
for interface types, and we can use this pattern in all cases.
It corresponds to the ssa.TypeAssert operator, so we call
it typeAssert.  Added tests to cover this.

We also specialize reflect.{In,Out} when the operand is an int
literal.

+ Tests.

Also:
- make taggedValue() panic, not return nil, eliminating many checks.
  We call isTaggedValue for the one place that cares.
- pointer_test: recover from panics in Analyze() and dump the log.

R=crawshaw
CC=golang-dev
https://golang.org/cl/14426050
2013-10-29 21:57:53 -04:00
blog blog: Fix atom feed's `updated' time when there's only one article. 2013-10-29 15:55:27 +09:00
call go.tools/pointer: use new callgraph API. 2013-09-25 17:17:42 -04:00
cmd go.tools/ssa: CreateTestMainPackage: synthesize test driver as a package ("testmain") not 'main' function. 2013-10-23 18:07:53 -04:00
dashboard go.tools/dashboard: clone main repo from local path if it already exists locally. 2013-10-07 09:06:32 -07:00
go go.tools/go/types: update a TODO comment (not a TODO anymore) 2013-10-25 15:37:03 -07:00
godoc godoc: parallelize corpus init 2013-10-28 12:51:01 -07:00
importer go.tools/ssa: implement correct control flow for recovered panic. 2013-10-14 15:38:56 -04:00
oracle go.tools/ssa: record lvalue/rvalue distinction precisely in DebugRef. 2013-10-24 18:31:50 -04:00
playground go.tools/present: add support for non Go code execution 2013-10-14 14:14:08 -07:00
pointer go.tools/pointer: implement (reflect.Value).Call. 2013-10-29 21:57:53 -04:00
present present/code.go: remove residual file from an hg merge. 2013-10-02 11:02:33 +10:00
ssa go.tools/ssa: fix crash on (new)(T) due to missing unparen() call. 2013-10-29 11:07:09 -04:00
.hgignore go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
AUTHORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
codereview.cfg go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
CONTRIBUTORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
LICENSE LICENSE: add 2012-03-17 15:20:58 +11:00
PATENTS go.empty: add PATENTS file to the subrepo. 2012-04-16 11:24:04 +10:00
README go.tools/README: minor correction. 2013-10-29 13:20:58 -04:00

This subrepository holds the source for various packages and tools that support
the Go programming language.

Some of the tools, godoc and vet for example, are included in binary Go distributions.
Others, including the Go oracle and the test coverage tool, can be fetched with "go get".

Packages include a type-checker for Go and an implementation of the
Static Single Assignment form (SSA) representation for Go programs.

To submit changes to this repository, see http://golang.org/doc/contribute.html.