]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: print pointers to go:notinheap types without converting to unsafe.Pointer
authorKeith Randall <khr@golang.org>
Tue, 27 Oct 2020 21:15:00 +0000 (14:15 -0700)
committerKeith Randall <khr@golang.org>
Tue, 27 Oct 2020 22:13:30 +0000 (22:13 +0000)
Pretty minor concern, but after auditing the compiler/runtime for
conversions from pointers to go:notinheap types to unsafe.Pointer,
this is the only remaining one I found.

Update #42076

Change-Id: I81d5b893c9ada2fc19a51c2559262f2e9ff71c35
Reviewed-on: https://go-review.googlesource.com/c/go/+/265757
Trust: Keith Randall <khr@golang.org>
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/builtin.go
src/cmd/compile/internal/gc/builtin/runtime.go
src/cmd/compile/internal/gc/walk.go
src/runtime/print.go

index da7b107bfe7c8b8352457a42e98e52d8d44426b1..fd95b657b26621504abd70bd4ddcf0c7d984fafd 100644 (file)
@@ -44,6 +44,7 @@ var runtimeDecls = [...]struct {
        {"printcomplex", funcTag, 27},
        {"printstring", funcTag, 29},
        {"printpointer", funcTag, 30},
+       {"printuintptr", funcTag, 31},
        {"printiface", funcTag, 30},
        {"printeface", funcTag, 30},
        {"printslice", funcTag, 30},
@@ -51,134 +52,134 @@ var runtimeDecls = [...]struct {
        {"printsp", funcTag, 9},
        {"printlock", funcTag, 9},
        {"printunlock", funcTag, 9},
-       {"concatstring2", funcTag, 33},
-       {"concatstring3", funcTag, 34},
-       {"concatstring4", funcTag, 35},
-       {"concatstring5", funcTag, 36},
-       {"concatstrings", funcTag, 38},
-       {"cmpstring", funcTag, 39},
-       {"intstring", funcTag, 42},
-       {"slicebytetostring", funcTag, 43},
-       {"slicebytetostringtmp", funcTag, 44},
-       {"slicerunetostring", funcTag, 47},
-       {"stringtoslicebyte", funcTag, 49},
-       {"stringtoslicerune", funcTag, 52},
-       {"slicecopy", funcTag, 53},
-       {"decoderune", funcTag, 54},
-       {"countrunes", funcTag, 55},
-       {"convI2I", funcTag, 56},
-       {"convT16", funcTag, 57},
-       {"convT32", funcTag, 57},
-       {"convT64", funcTag, 57},
-       {"convTstring", funcTag, 57},
-       {"convTslice", funcTag, 57},
-       {"convT2E", funcTag, 58},
-       {"convT2Enoptr", funcTag, 58},
-       {"convT2I", funcTag, 58},
-       {"convT2Inoptr", funcTag, 58},
-       {"assertE2I", funcTag, 56},
-       {"assertE2I2", funcTag, 59},
-       {"assertI2I", funcTag, 56},
-       {"assertI2I2", funcTag, 59},
-       {"panicdottypeE", funcTag, 60},
-       {"panicdottypeI", funcTag, 60},
-       {"panicnildottype", funcTag, 61},
-       {"ifaceeq", funcTag, 63},
-       {"efaceeq", funcTag, 63},
-       {"fastrand", funcTag, 65},
-       {"makemap64", funcTag, 67},
-       {"makemap", funcTag, 68},
-       {"makemap_small", funcTag, 69},
-       {"mapaccess1", funcTag, 70},
-       {"mapaccess1_fast32", funcTag, 71},
-       {"mapaccess1_fast64", funcTag, 71},
-       {"mapaccess1_faststr", funcTag, 71},
-       {"mapaccess1_fat", funcTag, 72},
-       {"mapaccess2", funcTag, 73},
-       {"mapaccess2_fast32", funcTag, 74},
-       {"mapaccess2_fast64", funcTag, 74},
-       {"mapaccess2_faststr", funcTag, 74},
-       {"mapaccess2_fat", funcTag, 75},
-       {"mapassign", funcTag, 70},
-       {"mapassign_fast32", funcTag, 71},
-       {"mapassign_fast32ptr", funcTag, 71},
-       {"mapassign_fast64", funcTag, 71},
-       {"mapassign_fast64ptr", funcTag, 71},
-       {"mapassign_faststr", funcTag, 71},
-       {"mapiterinit", funcTag, 76},
-       {"mapdelete", funcTag, 76},
-       {"mapdelete_fast32", funcTag, 77},
-       {"mapdelete_fast64", funcTag, 77},
-       {"mapdelete_faststr", funcTag, 77},
-       {"mapiternext", funcTag, 78},
-       {"mapclear", funcTag, 79},
-       {"makechan64", funcTag, 81},
-       {"makechan", funcTag, 82},
-       {"chanrecv1", funcTag, 84},
-       {"chanrecv2", funcTag, 85},
-       {"chansend1", funcTag, 87},
+       {"concatstring2", funcTag, 34},
+       {"concatstring3", funcTag, 35},
+       {"concatstring4", funcTag, 36},
+       {"concatstring5", funcTag, 37},
+       {"concatstrings", funcTag, 39},
+       {"cmpstring", funcTag, 40},
+       {"intstring", funcTag, 43},
+       {"slicebytetostring", funcTag, 44},
+       {"slicebytetostringtmp", funcTag, 45},
+       {"slicerunetostring", funcTag, 48},
+       {"stringtoslicebyte", funcTag, 50},
+       {"stringtoslicerune", funcTag, 53},
+       {"slicecopy", funcTag, 54},
+       {"decoderune", funcTag, 55},
+       {"countrunes", funcTag, 56},
+       {"convI2I", funcTag, 57},
+       {"convT16", funcTag, 58},
+       {"convT32", funcTag, 58},
+       {"convT64", funcTag, 58},
+       {"convTstring", funcTag, 58},
+       {"convTslice", funcTag, 58},
+       {"convT2E", funcTag, 59},
+       {"convT2Enoptr", funcTag, 59},
+       {"convT2I", funcTag, 59},
+       {"convT2Inoptr", funcTag, 59},
+       {"assertE2I", funcTag, 57},
+       {"assertE2I2", funcTag, 60},
+       {"assertI2I", funcTag, 57},
+       {"assertI2I2", funcTag, 60},
+       {"panicdottypeE", funcTag, 61},
+       {"panicdottypeI", funcTag, 61},
+       {"panicnildottype", funcTag, 62},
+       {"ifaceeq", funcTag, 64},
+       {"efaceeq", funcTag, 64},
+       {"fastrand", funcTag, 66},
+       {"makemap64", funcTag, 68},
+       {"makemap", funcTag, 69},
+       {"makemap_small", funcTag, 70},
+       {"mapaccess1", funcTag, 71},
+       {"mapaccess1_fast32", funcTag, 72},
+       {"mapaccess1_fast64", funcTag, 72},
+       {"mapaccess1_faststr", funcTag, 72},
+       {"mapaccess1_fat", funcTag, 73},
+       {"mapaccess2", funcTag, 74},
+       {"mapaccess2_fast32", funcTag, 75},
+       {"mapaccess2_fast64", funcTag, 75},
+       {"mapaccess2_faststr", funcTag, 75},
+       {"mapaccess2_fat", funcTag, 76},
+       {"mapassign", funcTag, 71},
+       {"mapassign_fast32", funcTag, 72},
+       {"mapassign_fast32ptr", funcTag, 72},
+       {"mapassign_fast64", funcTag, 72},
+       {"mapassign_fast64ptr", funcTag, 72},
+       {"mapassign_faststr", funcTag, 72},
+       {"mapiterinit", funcTag, 77},
+       {"mapdelete", funcTag, 77},
+       {"mapdelete_fast32", funcTag, 78},
+       {"mapdelete_fast64", funcTag, 78},
+       {"mapdelete_faststr", funcTag, 78},
+       {"mapiternext", funcTag, 79},
+       {"mapclear", funcTag, 80},
+       {"makechan64", funcTag, 82},
+       {"makechan", funcTag, 83},
+       {"chanrecv1", funcTag, 85},
+       {"chanrecv2", funcTag, 86},
+       {"chansend1", funcTag, 88},
        {"closechan", funcTag, 30},
-       {"writeBarrier", varTag, 89},
-       {"typedmemmove", funcTag, 90},
-       {"typedmemclr", funcTag, 91},
-       {"typedslicecopy", funcTag, 92},
-       {"selectnbsend", funcTag, 93},
-       {"selectnbrecv", funcTag, 94},
-       {"selectnbrecv2", funcTag, 96},
-       {"selectsetpc", funcTag, 97},
-       {"selectgo", funcTag, 98},
+       {"writeBarrier", varTag, 90},
+       {"typedmemmove", funcTag, 91},
+       {"typedmemclr", funcTag, 92},
+       {"typedslicecopy", funcTag, 93},
+       {"selectnbsend", funcTag, 94},
+       {"selectnbrecv", funcTag, 95},
+       {"selectnbrecv2", funcTag, 97},
+       {"selectsetpc", funcTag, 98},
+       {"selectgo", funcTag, 99},
        {"block", funcTag, 9},
-       {"makeslice", funcTag, 99},
-       {"makeslice64", funcTag, 100},
-       {"makeslicecopy", funcTag, 101},
-       {"growslice", funcTag, 103},
-       {"memmove", funcTag, 104},
-       {"memclrNoHeapPointers", funcTag, 105},
-       {"memclrHasPointers", funcTag, 105},
-       {"memequal", funcTag, 106},
-       {"memequal0", funcTag, 107},
-       {"memequal8", funcTag, 107},
-       {"memequal16", funcTag, 107},
-       {"memequal32", funcTag, 107},
-       {"memequal64", funcTag, 107},
-       {"memequal128", funcTag, 107},
-       {"f32equal", funcTag, 108},
-       {"f64equal", funcTag, 108},
-       {"c64equal", funcTag, 108},
-       {"c128equal", funcTag, 108},
-       {"strequal", funcTag, 108},
-       {"interequal", funcTag, 108},
-       {"nilinterequal", funcTag, 108},
-       {"memhash", funcTag, 109},
-       {"memhash0", funcTag, 110},
-       {"memhash8", funcTag, 110},
-       {"memhash16", funcTag, 110},
-       {"memhash32", funcTag, 110},
-       {"memhash64", funcTag, 110},
-       {"memhash128", funcTag, 110},
-       {"f32hash", funcTag, 110},
-       {"f64hash", funcTag, 110},
-       {"c64hash", funcTag, 110},
-       {"c128hash", funcTag, 110},
-       {"strhash", funcTag, 110},
-       {"interhash", funcTag, 110},
-       {"nilinterhash", funcTag, 110},
-       {"int64div", funcTag, 111},
-       {"uint64div", funcTag, 112},
-       {"int64mod", funcTag, 111},
-       {"uint64mod", funcTag, 112},
-       {"float64toint64", funcTag, 113},
-       {"float64touint64", funcTag, 114},
-       {"float64touint32", funcTag, 115},
-       {"int64tofloat64", funcTag, 116},
-       {"uint64tofloat64", funcTag, 117},
-       {"uint32tofloat64", funcTag, 118},
-       {"complex128div", funcTag, 119},
-       {"racefuncenter", funcTag, 120},
+       {"makeslice", funcTag, 100},
+       {"makeslice64", funcTag, 101},
+       {"makeslicecopy", funcTag, 102},
+       {"growslice", funcTag, 104},
+       {"memmove", funcTag, 105},
+       {"memclrNoHeapPointers", funcTag, 106},
+       {"memclrHasPointers", funcTag, 106},
+       {"memequal", funcTag, 107},
+       {"memequal0", funcTag, 108},
+       {"memequal8", funcTag, 108},
+       {"memequal16", funcTag, 108},
+       {"memequal32", funcTag, 108},
+       {"memequal64", funcTag, 108},
+       {"memequal128", funcTag, 108},
+       {"f32equal", funcTag, 109},
+       {"f64equal", funcTag, 109},
+       {"c64equal", funcTag, 109},
+       {"c128equal", funcTag, 109},
+       {"strequal", funcTag, 109},
+       {"interequal", funcTag, 109},
+       {"nilinterequal", funcTag, 109},
+       {"memhash", funcTag, 110},
+       {"memhash0", funcTag, 111},
+       {"memhash8", funcTag, 111},
+       {"memhash16", funcTag, 111},
+       {"memhash32", funcTag, 111},
+       {"memhash64", funcTag, 111},
+       {"memhash128", funcTag, 111},
+       {"f32hash", funcTag, 111},
+       {"f64hash", funcTag, 111},
+       {"c64hash", funcTag, 111},
+       {"c128hash", funcTag, 111},
+       {"strhash", funcTag, 111},
+       {"interhash", funcTag, 111},
+       {"nilinterhash", funcTag, 111},
+       {"int64div", funcTag, 112},
+       {"uint64div", funcTag, 113},
+       {"int64mod", funcTag, 112},
+       {"uint64mod", funcTag, 113},
+       {"float64toint64", funcTag, 114},
+       {"float64touint64", funcTag, 115},
+       {"float64touint32", funcTag, 116},
+       {"int64tofloat64", funcTag, 117},
+       {"uint64tofloat64", funcTag, 118},
+       {"uint32tofloat64", funcTag, 119},
+       {"complex128div", funcTag, 120},
+       {"racefuncenter", funcTag, 31},
        {"racefuncenterfp", funcTag, 9},
        {"racefuncexit", funcTag, 9},
-       {"raceread", funcTag, 120},
-       {"racewrite", funcTag, 120},
+       {"raceread", funcTag, 31},
+       {"racewrite", funcTag, 31},
        {"racereadrange", funcTag, 121},
        {"racewriterange", funcTag, 121},
        {"msanread", funcTag, 121},
@@ -233,96 +234,96 @@ func runtimeTypes() []*types.Type {
        typs[28] = types.Types[TSTRING]
        typs[29] = functype(nil, []*Node{anonfield(typs[28])}, nil)
        typs[30] = functype(nil, []*Node{anonfield(typs[2])}, nil)
-       typs[31] = types.NewArray(typs[0], 32)
-       typs[32] = types.NewPtr(typs[31])
-       typs[33] = functype(nil, []*Node{anonfield(typs[32]), anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[28])})
-       typs[34] = functype(nil, []*Node{anonfield(typs[32]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[28])})
-       typs[35] = functype(nil, []*Node{anonfield(typs[32]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[28])})
-       typs[36] = functype(nil, []*Node{anonfield(typs[32]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[28])})
-       typs[37] = types.NewSlice(typs[28])
-       typs[38] = functype(nil, []*Node{anonfield(typs[32]), anonfield(typs[37])}, []*Node{anonfield(typs[28])})
-       typs[39] = functype(nil, []*Node{anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[15])})
-       typs[40] = types.NewArray(typs[0], 4)
-       typs[41] = types.NewPtr(typs[40])
-       typs[42] = functype(nil, []*Node{anonfield(typs[41]), anonfield(typs[22])}, []*Node{anonfield(typs[28])})
-       typs[43] = functype(nil, []*Node{anonfield(typs[32]), anonfield(typs[1]), anonfield(typs[15])}, []*Node{anonfield(typs[28])})
-       typs[44] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15])}, []*Node{anonfield(typs[28])})
-       typs[45] = types.Runetype
-       typs[46] = types.NewSlice(typs[45])
-       typs[47] = functype(nil, []*Node{anonfield(typs[32]), anonfield(typs[46])}, []*Node{anonfield(typs[28])})
-       typs[48] = types.NewSlice(typs[0])
-       typs[49] = functype(nil, []*Node{anonfield(typs[32]), anonfield(typs[28])}, []*Node{anonfield(typs[48])})
-       typs[50] = types.NewArray(typs[45], 32)
-       typs[51] = types.NewPtr(typs[50])
-       typs[52] = functype(nil, []*Node{anonfield(typs[51]), anonfield(typs[28])}, []*Node{anonfield(typs[46])})
-       typs[53] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[15]), anonfield(typs[3]), anonfield(typs[15]), anonfield(typs[5])}, []*Node{anonfield(typs[15])})
-       typs[54] = functype(nil, []*Node{anonfield(typs[28]), anonfield(typs[15])}, []*Node{anonfield(typs[45]), anonfield(typs[15])})
-       typs[55] = functype(nil, []*Node{anonfield(typs[28])}, []*Node{anonfield(typs[15])})
-       typs[56] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[2])}, []*Node{anonfield(typs[2])})
-       typs[57] = functype(nil, []*Node{anonfield(typs[2])}, []*Node{anonfield(typs[7])})
-       typs[58] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3])}, []*Node{anonfield(typs[2])})
-       typs[59] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[2])}, []*Node{anonfield(typs[2]), anonfield(typs[6])})
-       typs[60] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[1]), anonfield(typs[1])}, nil)
-       typs[61] = functype(nil, []*Node{anonfield(typs[1])}, nil)
-       typs[62] = types.NewPtr(typs[5])
-       typs[63] = functype(nil, []*Node{anonfield(typs[62]), anonfield(typs[7]), anonfield(typs[7])}, []*Node{anonfield(typs[6])})
-       typs[64] = types.Types[TUINT32]
-       typs[65] = functype(nil, nil, []*Node{anonfield(typs[64])})
-       typs[66] = types.NewMap(typs[2], typs[2])
-       typs[67] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[22]), anonfield(typs[3])}, []*Node{anonfield(typs[66])})
-       typs[68] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15]), anonfield(typs[3])}, []*Node{anonfield(typs[66])})
-       typs[69] = functype(nil, nil, []*Node{anonfield(typs[66])})
-       typs[70] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3])}, []*Node{anonfield(typs[3])})
-       typs[71] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[2])}, []*Node{anonfield(typs[3])})
-       typs[72] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3]), anonfield(typs[1])}, []*Node{anonfield(typs[3])})
-       typs[73] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3])}, []*Node{anonfield(typs[3]), anonfield(typs[6])})
-       typs[74] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[2])}, []*Node{anonfield(typs[3]), anonfield(typs[6])})
-       typs[75] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3]), anonfield(typs[1])}, []*Node{anonfield(typs[3]), anonfield(typs[6])})
-       typs[76] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[3])}, nil)
-       typs[77] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66]), anonfield(typs[2])}, nil)
-       typs[78] = functype(nil, []*Node{anonfield(typs[3])}, nil)
-       typs[79] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[66])}, nil)
-       typs[80] = types.NewChan(typs[2], types.Cboth)
-       typs[81] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[22])}, []*Node{anonfield(typs[80])})
-       typs[82] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15])}, []*Node{anonfield(typs[80])})
-       typs[83] = types.NewChan(typs[2], types.Crecv)
-       typs[84] = functype(nil, []*Node{anonfield(typs[83]), anonfield(typs[3])}, nil)
-       typs[85] = functype(nil, []*Node{anonfield(typs[83]), anonfield(typs[3])}, []*Node{anonfield(typs[6])})
-       typs[86] = types.NewChan(typs[2], types.Csend)
-       typs[87] = functype(nil, []*Node{anonfield(typs[86]), anonfield(typs[3])}, nil)
-       typs[88] = types.NewArray(typs[0], 3)
-       typs[89] = tostruct([]*Node{namedfield("enabled", typs[6]), namedfield("pad", typs[88]), namedfield("needed", typs[6]), namedfield("cgo", typs[6]), namedfield("alignme", typs[24])})
-       typs[90] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3]), anonfield(typs[3])}, nil)
-       typs[91] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3])}, nil)
-       typs[92] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3]), anonfield(typs[15]), anonfield(typs[3]), anonfield(typs[15])}, []*Node{anonfield(typs[15])})
-       typs[93] = functype(nil, []*Node{anonfield(typs[86]), anonfield(typs[3])}, []*Node{anonfield(typs[6])})
-       typs[94] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[83])}, []*Node{anonfield(typs[6])})
-       typs[95] = types.NewPtr(typs[6])
-       typs[96] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[95]), anonfield(typs[83])}, []*Node{anonfield(typs[6])})
-       typs[97] = functype(nil, []*Node{anonfield(typs[62])}, nil)
-       typs[98] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[1]), anonfield(typs[62]), anonfield(typs[15]), anonfield(typs[15]), anonfield(typs[6])}, []*Node{anonfield(typs[15]), anonfield(typs[6])})
-       typs[99] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15]), anonfield(typs[15])}, []*Node{anonfield(typs[7])})
-       typs[100] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[22]), anonfield(typs[22])}, []*Node{anonfield(typs[7])})
-       typs[101] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15]), anonfield(typs[15]), anonfield(typs[7])}, []*Node{anonfield(typs[7])})
-       typs[102] = types.NewSlice(typs[2])
-       typs[103] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[102]), anonfield(typs[15])}, []*Node{anonfield(typs[102])})
-       typs[104] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3]), anonfield(typs[5])}, nil)
-       typs[105] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[5])}, nil)
-       typs[106] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3]), anonfield(typs[5])}, []*Node{anonfield(typs[6])})
-       typs[107] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3])}, []*Node{anonfield(typs[6])})
-       typs[108] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[7])}, []*Node{anonfield(typs[6])})
-       typs[109] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[5]), anonfield(typs[5])}, []*Node{anonfield(typs[5])})
-       typs[110] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[5])}, []*Node{anonfield(typs[5])})
-       typs[111] = functype(nil, []*Node{anonfield(typs[22]), anonfield(typs[22])}, []*Node{anonfield(typs[22])})
-       typs[112] = functype(nil, []*Node{anonfield(typs[24]), anonfield(typs[24])}, []*Node{anonfield(typs[24])})
-       typs[113] = functype(nil, []*Node{anonfield(typs[20])}, []*Node{anonfield(typs[22])})
-       typs[114] = functype(nil, []*Node{anonfield(typs[20])}, []*Node{anonfield(typs[24])})
-       typs[115] = functype(nil, []*Node{anonfield(typs[20])}, []*Node{anonfield(typs[64])})
-       typs[116] = functype(nil, []*Node{anonfield(typs[22])}, []*Node{anonfield(typs[20])})
-       typs[117] = functype(nil, []*Node{anonfield(typs[24])}, []*Node{anonfield(typs[20])})
-       typs[118] = functype(nil, []*Node{anonfield(typs[64])}, []*Node{anonfield(typs[20])})
-       typs[119] = functype(nil, []*Node{anonfield(typs[26]), anonfield(typs[26])}, []*Node{anonfield(typs[26])})
-       typs[120] = functype(nil, []*Node{anonfield(typs[5])}, nil)
+       typs[31] = functype(nil, []*Node{anonfield(typs[5])}, nil)
+       typs[32] = types.NewArray(typs[0], 32)
+       typs[33] = types.NewPtr(typs[32])
+       typs[34] = functype(nil, []*Node{anonfield(typs[33]), anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[28])})
+       typs[35] = functype(nil, []*Node{anonfield(typs[33]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[28])})
+       typs[36] = functype(nil, []*Node{anonfield(typs[33]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[28])})
+       typs[37] = functype(nil, []*Node{anonfield(typs[33]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[28])})
+       typs[38] = types.NewSlice(typs[28])
+       typs[39] = functype(nil, []*Node{anonfield(typs[33]), anonfield(typs[38])}, []*Node{anonfield(typs[28])})
+       typs[40] = functype(nil, []*Node{anonfield(typs[28]), anonfield(typs[28])}, []*Node{anonfield(typs[15])})
+       typs[41] = types.NewArray(typs[0], 4)
+       typs[42] = types.NewPtr(typs[41])
+       typs[43] = functype(nil, []*Node{anonfield(typs[42]), anonfield(typs[22])}, []*Node{anonfield(typs[28])})
+       typs[44] = functype(nil, []*Node{anonfield(typs[33]), anonfield(typs[1]), anonfield(typs[15])}, []*Node{anonfield(typs[28])})
+       typs[45] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15])}, []*Node{anonfield(typs[28])})
+       typs[46] = types.Runetype
+       typs[47] = types.NewSlice(typs[46])
+       typs[48] = functype(nil, []*Node{anonfield(typs[33]), anonfield(typs[47])}, []*Node{anonfield(typs[28])})
+       typs[49] = types.NewSlice(typs[0])
+       typs[50] = functype(nil, []*Node{anonfield(typs[33]), anonfield(typs[28])}, []*Node{anonfield(typs[49])})
+       typs[51] = types.NewArray(typs[46], 32)
+       typs[52] = types.NewPtr(typs[51])
+       typs[53] = functype(nil, []*Node{anonfield(typs[52]), anonfield(typs[28])}, []*Node{anonfield(typs[47])})
+       typs[54] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[15]), anonfield(typs[3]), anonfield(typs[15]), anonfield(typs[5])}, []*Node{anonfield(typs[15])})
+       typs[55] = functype(nil, []*Node{anonfield(typs[28]), anonfield(typs[15])}, []*Node{anonfield(typs[46]), anonfield(typs[15])})
+       typs[56] = functype(nil, []*Node{anonfield(typs[28])}, []*Node{anonfield(typs[15])})
+       typs[57] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[2])}, []*Node{anonfield(typs[2])})
+       typs[58] = functype(nil, []*Node{anonfield(typs[2])}, []*Node{anonfield(typs[7])})
+       typs[59] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3])}, []*Node{anonfield(typs[2])})
+       typs[60] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[2])}, []*Node{anonfield(typs[2]), anonfield(typs[6])})
+       typs[61] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[1]), anonfield(typs[1])}, nil)
+       typs[62] = functype(nil, []*Node{anonfield(typs[1])}, nil)
+       typs[63] = types.NewPtr(typs[5])
+       typs[64] = functype(nil, []*Node{anonfield(typs[63]), anonfield(typs[7]), anonfield(typs[7])}, []*Node{anonfield(typs[6])})
+       typs[65] = types.Types[TUINT32]
+       typs[66] = functype(nil, nil, []*Node{anonfield(typs[65])})
+       typs[67] = types.NewMap(typs[2], typs[2])
+       typs[68] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[22]), anonfield(typs[3])}, []*Node{anonfield(typs[67])})
+       typs[69] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15]), anonfield(typs[3])}, []*Node{anonfield(typs[67])})
+       typs[70] = functype(nil, nil, []*Node{anonfield(typs[67])})
+       typs[71] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67]), anonfield(typs[3])}, []*Node{anonfield(typs[3])})
+       typs[72] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67]), anonfield(typs[2])}, []*Node{anonfield(typs[3])})
+       typs[73] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67]), anonfield(typs[3]), anonfield(typs[1])}, []*Node{anonfield(typs[3])})
+       typs[74] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67]), anonfield(typs[3])}, []*Node{anonfield(typs[3]), anonfield(typs[6])})
+       typs[75] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67]), anonfield(typs[2])}, []*Node{anonfield(typs[3]), anonfield(typs[6])})
+       typs[76] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67]), anonfield(typs[3]), anonfield(typs[1])}, []*Node{anonfield(typs[3]), anonfield(typs[6])})
+       typs[77] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67]), anonfield(typs[3])}, nil)
+       typs[78] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67]), anonfield(typs[2])}, nil)
+       typs[79] = functype(nil, []*Node{anonfield(typs[3])}, nil)
+       typs[80] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[67])}, nil)
+       typs[81] = types.NewChan(typs[2], types.Cboth)
+       typs[82] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[22])}, []*Node{anonfield(typs[81])})
+       typs[83] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15])}, []*Node{anonfield(typs[81])})
+       typs[84] = types.NewChan(typs[2], types.Crecv)
+       typs[85] = functype(nil, []*Node{anonfield(typs[84]), anonfield(typs[3])}, nil)
+       typs[86] = functype(nil, []*Node{anonfield(typs[84]), anonfield(typs[3])}, []*Node{anonfield(typs[6])})
+       typs[87] = types.NewChan(typs[2], types.Csend)
+       typs[88] = functype(nil, []*Node{anonfield(typs[87]), anonfield(typs[3])}, nil)
+       typs[89] = types.NewArray(typs[0], 3)
+       typs[90] = tostruct([]*Node{namedfield("enabled", typs[6]), namedfield("pad", typs[89]), namedfield("needed", typs[6]), namedfield("cgo", typs[6]), namedfield("alignme", typs[24])})
+       typs[91] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3]), anonfield(typs[3])}, nil)
+       typs[92] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3])}, nil)
+       typs[93] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[3]), anonfield(typs[15]), anonfield(typs[3]), anonfield(typs[15])}, []*Node{anonfield(typs[15])})
+       typs[94] = functype(nil, []*Node{anonfield(typs[87]), anonfield(typs[3])}, []*Node{anonfield(typs[6])})
+       typs[95] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[84])}, []*Node{anonfield(typs[6])})
+       typs[96] = types.NewPtr(typs[6])
+       typs[97] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[96]), anonfield(typs[84])}, []*Node{anonfield(typs[6])})
+       typs[98] = functype(nil, []*Node{anonfield(typs[63])}, nil)
+       typs[99] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[1]), anonfield(typs[63]), anonfield(typs[15]), anonfield(typs[15]), anonfield(typs[6])}, []*Node{anonfield(typs[15]), anonfield(typs[6])})
+       typs[100] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15]), anonfield(typs[15])}, []*Node{anonfield(typs[7])})
+       typs[101] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[22]), anonfield(typs[22])}, []*Node{anonfield(typs[7])})
+       typs[102] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[15]), anonfield(typs[15]), anonfield(typs[7])}, []*Node{anonfield(typs[7])})
+       typs[103] = types.NewSlice(typs[2])
+       typs[104] = functype(nil, []*Node{anonfield(typs[1]), anonfield(typs[103]), anonfield(typs[15])}, []*Node{anonfield(typs[103])})
+       typs[105] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3]), anonfield(typs[5])}, nil)
+       typs[106] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[5])}, nil)
+       typs[107] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3]), anonfield(typs[5])}, []*Node{anonfield(typs[6])})
+       typs[108] = functype(nil, []*Node{anonfield(typs[3]), anonfield(typs[3])}, []*Node{anonfield(typs[6])})
+       typs[109] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[7])}, []*Node{anonfield(typs[6])})
+       typs[110] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[5]), anonfield(typs[5])}, []*Node{anonfield(typs[5])})
+       typs[111] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[5])}, []*Node{anonfield(typs[5])})
+       typs[112] = functype(nil, []*Node{anonfield(typs[22]), anonfield(typs[22])}, []*Node{anonfield(typs[22])})
+       typs[113] = functype(nil, []*Node{anonfield(typs[24]), anonfield(typs[24])}, []*Node{anonfield(typs[24])})
+       typs[114] = functype(nil, []*Node{anonfield(typs[20])}, []*Node{anonfield(typs[22])})
+       typs[115] = functype(nil, []*Node{anonfield(typs[20])}, []*Node{anonfield(typs[24])})
+       typs[116] = functype(nil, []*Node{anonfield(typs[20])}, []*Node{anonfield(typs[65])})
+       typs[117] = functype(nil, []*Node{anonfield(typs[22])}, []*Node{anonfield(typs[20])})
+       typs[118] = functype(nil, []*Node{anonfield(typs[24])}, []*Node{anonfield(typs[20])})
+       typs[119] = functype(nil, []*Node{anonfield(typs[65])}, []*Node{anonfield(typs[20])})
+       typs[120] = functype(nil, []*Node{anonfield(typs[26]), anonfield(typs[26])}, []*Node{anonfield(typs[26])})
        typs[121] = functype(nil, []*Node{anonfield(typs[5]), anonfield(typs[5])}, nil)
        typs[122] = functype(nil, []*Node{anonfield(typs[7]), anonfield(typs[1]), anonfield(typs[5])}, nil)
        typs[123] = types.NewSlice(typs[7])
@@ -331,7 +332,7 @@ func runtimeTypes() []*types.Type {
        typs[126] = functype(nil, []*Node{anonfield(typs[125]), anonfield(typs[125])}, nil)
        typs[127] = types.Types[TUINT16]
        typs[128] = functype(nil, []*Node{anonfield(typs[127]), anonfield(typs[127])}, nil)
-       typs[129] = functype(nil, []*Node{anonfield(typs[64]), anonfield(typs[64])}, nil)
+       typs[129] = functype(nil, []*Node{anonfield(typs[65]), anonfield(typs[65])}, nil)
        typs[130] = functype(nil, []*Node{anonfield(typs[24]), anonfield(typs[24])}, nil)
        return typs[:]
 }
index 02d6c7b7f5d33606f1e24f19112d36e0f351e4ea..aac2de38c699522b06683ac9c8c66915417a541f 100644 (file)
@@ -54,6 +54,7 @@ func printuint(uint64)
 func printcomplex(complex128)
 func printstring(string)
 func printpointer(any)
+func printuintptr(uintptr)
 func printiface(any)
 func printeface(any)
 func printslice(any)
index 927f6c4b1eb8ff75c33bcd63f2ce54a6459b1668..b453e9f1d922e7b51d74347691043b4b6bb66602 100644 (file)
@@ -1957,7 +1957,17 @@ func walkprint(nn *Node, init *Nodes) *Node {
                                on = syslook("printiface")
                        }
                        on = substArgTypes(on, n.Type) // any-1
-               case TPTR, TCHAN, TMAP, TFUNC, TUNSAFEPTR:
+               case TPTR:
+                       if n.Type.Elem().NotInHeap() {
+                               on = syslook("printuintptr")
+                               n = nod(OCONV, n, nil)
+                               n.Type = types.Types[TUNSAFEPTR]
+                               n = nod(OCONV, n, nil)
+                               n.Type = types.Types[TUINTPTR]
+                               break
+                       }
+                       fallthrough
+               case TCHAN, TMAP, TFUNC, TUNSAFEPTR:
                        on = syslook("printpointer")
                        on = substArgTypes(on, n.Type) // any-1
                case TSLICE:
index e605eb34cb90a52a60849e55eb445b7d2fa895c0..64055a34ccde28488693c58b5c1503926fd16dc3 100644 (file)
@@ -237,6 +237,9 @@ func printhex(v uint64) {
 func printpointer(p unsafe.Pointer) {
        printhex(uint64(uintptr(p)))
 }
+func printuintptr(p uintptr) {
+       printhex(uint64(p))
+}
 
 func printstring(s string) {
        gwrite(bytes(s))