Commit 7dd9c385 authored by Matthew Dempsky's avatar Matthew Dempsky

Revert "cmd/compile: inline convI2E"

This reverts commit 395d36a6.

Appears to be responsible for builder failures.

Change-Id: Ic6c6307f662767e529060b88704a9f074785d99e
Reviewed-on: https://go-review.googlesource.com/31310
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarAustin Clements <austin@google.com>
parent 9ee21f90
...@@ -26,82 +26,83 @@ const runtimeimport = "" + ...@@ -26,82 +26,83 @@ const runtimeimport = "" +
"ne\x00\x03\x17\x0f@|S\x00 \x00\x01\x11|S\x00\t\x13decoderune\x00\x03 \x00\x02\x00\x04|S\rr" + "ne\x00\x03\x17\x0f@|S\x00 \x00\x01\x11|S\x00\t\x13decoderune\x00\x03 \x00\x02\x00\x04|S\rr" +
"etv·1\x00\x00\x02\rretk·2\x00\x00\t\x11slicecopy\x00\x06:\tto·2\x00" + "etv·1\x00\x00\x02\rretk·2\x00\x00\t\x11slicecopy\x00\x06:\tto·2\x00" +
"\x00:\tfr·3\x00\x00\x16\vwid·4\x00\x1bunsafe-uintptr\x01\x02\x00\t\x1ds" + "\x00:\tfr·3\x00\x00\x16\vwid·4\x00\x1bunsafe-uintptr\x01\x02\x00\t\x1ds" +
"licestringcopy\x00\x04:X\x00\x00:Z\x00\x00\x01\x02\x00\t\rconvI2I\x00\x04\x17\"" + "licestringcopy\x00\x04:X\x00\x00:Z\x00\x00\x01\x02\x00\t\rconvI2E\x00\x02:\r" +
"\x06\x00\x00:\relem·3\x00\x00\x02:\vret·1\x00\x00\t\rconvT2E\x00\x04\x17\"\x06\x00" + "elem·2\x00\x00\x02:\vret·1\x00\x00\t\rconvI2I\x00\x04\x17\"\x06\x00\x00:\rel" +
"\x00\x17:d\x00\x00\x02:f\x00\x00\t\rconvT2I\x00\x04\x17\"\vtab·2\x00\x00\x17:d\x00\x00\x02:" + "em·3\x00\x00\x02:f\x00\x00\t\rconvT2E\x00\x04\x17\"\x06\x00\x00\x17:j\x00\x00\x02:f\x00\x00\t\r" +
"f\x00\x00\t\x11assertE2E\x00\x06\x17\"\vtyp·1\x00\x00:\x0fiface·2\x00\x00\x17" + "convT2I\x00\x04\x17\"\vtab·2\x00\x00\x17:j\x00\x00\x02:f\x00\x00\t\x11assertE2" +
":\vret·3\x00\x00\x00\t\x13assertE2E2\x00\x06\x17\"\x06\x00\x00:\x0fiface·3" + "E\x00\x06\x17\"\vtyp·1\x00\x00:\x0fiface·2\x00\x00\x17:\vret·3\x00\x00\x00\t\x13" +
"\x00\x00\x17:\vret·4\x00\x00\x01\x00\x00\t\x11assertE2I\x00\x06\x17\"p\x00\x00:r\x00\x00\x17:" + "assertE2E2\x00\x06\x17\"\x06\x00\x00:\x0fiface·3\x00\x00\x17:\vret·4\x00\x00" +
"t\x00\x00\x00\t\x13assertE2I2\x00\x06\x17\"\x06\x00\x00:x\x00\x00\x17:z\x00\x00\x01\x00\x00\t\x11ass" + "\x01\x00\x00\t\x11assertE2I\x00\x06\x17\"t\x00\x00:v\x00\x00\x17:x\x00\x00\x00\t\x13assertE" +
"ertE2T\x00\x06\x17\"p\x00\x00:r\x00\x00\x17:t\x00\x00\x00\t\x13assertE2T2\x00\x06\x17\"\x06" + "2I2\x00\x06\x17\"\x06\x00\x00:||\x00\x00\x17:~\x00\x00\x01\x00\x00\t\x11assertE2T\x00\x06\x17\"t\x00" +
"\x00\x00:x\x00\x00\x17:z\x00\x00\x01\x00\x00\t\x11assertI2E\x00\x06\x17\"p\x00\x00:r\x00\x00\x17:t\x00" + "\x00:v\x00\x00\x17:x\x00\x00\x00\t\x13assertE2T2\x00\x06\x17\"\x06\x00\x00:||\x00\x00\x17:~\x00\x00" +
"\x00\x00\t\x13assertI2E2\x00\x06\x17\"\x06\x00\x00:x\x00\x00\x17:z\x00\x00\x01\x00\x00\t\x11asser" + "\x01\x00\x00\t\x11assertI2E\x00\x06\x17\"t\x00\x00:v\x00\x00\x17:x\x00\x00\x00\t\x13assertI" +
"tI2I\x00\x06\x17\"p\x00\x00:r\x00\x00\x17:t\x00\x00\x00\t\x13assertI2I2\x00\x06\x17\"\x06\x00\x00" + "2E2\x00\x06\x17\"\x06\x00\x00:||\x00\x00\x17:~\x00\x00\x01\x00\x00\t\x11assertI2I\x00\x06\x17\"t\x00" +
":x\x00\x00\x17:z\x00\x00\x01\x00\x00\t\x11assertI2T\x00\x06\x17\"p\x00\x00:r\x00\x00\x17:t\x00\x00\x00" + "\x00:v\x00\x00\x17:x\x00\x00\x00\t\x13assertI2I2\x00\x06\x17\"\x06\x00\x00:||\x00\x00\x17:~\x00\x00" +
"\t\x13assertI2T2\x00\x06\x17\"\x06\x00\x00:x\x00\x00\x17:z\x00\x00\x01\x00\x00\t\x17panicdo" + "\x01\x00\x00\t\x11assertI2T\x00\x06\x17\"t\x00\x00:v\x00\x00\x17:x\x00\x00\x00\t\x13assertI" +
"ttype\x00\x06\x17\"\rhave·1\x00\x00\x17\"\rwant·2\x00\x00\x17\"x\x00\x00\x00\t\ri" + "2T2\x00\x06\x17\"\x06\x00\x00:||\x00\x00\x17:~\x00\x00\x01\x00\x00\t\x17panicdottype\x00\x06\x17" +
"faceeq\x00\x04:\ti1·2\x00\x00:\ti2·3\x00\x00\x02\x00f\x00\x00\t\refaceeq" + "\"\rhave·1\x00\x00\x17\"\rwant·2\x00\x00\x17\"||\x00\x00\x00\t\rifaceeq\x00" +
"\x00\x04:\x98\x01\x00\x00:\x9a\x01\x00\x00\x02\x00f\x00\x00\t\rmakemap\x00\b\x17\"\x13mapType·" + "\x04:\ti1·2\x00\x00:\ti2·3\x00\x00\x02\x00f\x00\x00\t\refaceeq\x00\x04:\x9c\x01\x00\x00" +
"2\x00\x00\n\rhint·3\x00\x00\x17:\x11mapbuf·4\x00\x00\x17:\x17bucketbuf" + ":\x9e\x01\x00\x00\x02\x00f\x00\x00\t\rmakemap\x00\b\x17\"\x13mapType·2\x00\x00\n\rhi" +
"·5\x00\x00\x02\x1d::\rhmap·1\x00\x00\t\x13mapaccess1\x00\x06\x17\"\xa0\x01\x00\x00\x1d" + "nt·3\x00\x00\x17:\x11mapbuf·4\x00\x00\x17:\x17bucketbuf·5\x00\x00\x02\x1d" +
"::\rhmap·3\x00\x00\x17:\vkey·4\x00\x00\x02\x17:\vval·1\x00\x00\t!map" + "::\rhmap·1\x00\x00\t\x13mapaccess1\x00\x06\x17\"\xa4\x01\x00\x00\x1d::\rhmap" +
"access1_fast32\x00\x06\x17\"\xa0\x01\x00\x00\x1d::\xac\x01\x00\x00:\xae\x01\x00\x00\x02\x17:\xb0\x01\x00" + "·3\x00\x00\x17:\vkey·4\x00\x00\x02\x17:\vval·1\x00\x00\t!mapaccess1" +
"\x00\t!mapaccess1_fast64\x00\x06\x17\"\xa0\x01\x00\x00\x1d::\xac\x01\x00\x00:\xae\x01\x00\x00" + "_fast32\x00\x06\x17\"\xa4\x01\x00\x00\x1d::\xb0\x01\x00\x00:\xb2\x01\x00\x00\x02\x17:\xb4\x01\x00\x00\t!mapa" +
"\x02\x17:\xb0\x01\x00\x00\t#mapaccess1_faststr\x00\x06\x17\"\xa0\x01\x00\x00\x1d::\xac\x01" + "ccess1_fast64\x00\x06\x17\"\xa4\x01\x00\x00\x1d::\xb0\x01\x00\x00:\xb2\x01\x00\x00\x02\x17:\xb4\x01\x00\x00" +
"\x00\x00:\xae\x01\x00\x00\x02\x17:\xb0\x01\x00\x00\t\x1bmapaccess1_fat\x00\b\x17\"\xa0\x01\x00\x00\x1d:" + "\t#mapaccess1_faststr\x00\x06\x17\"\xa4\x01\x00\x00\x1d::\xb0\x01\x00\x00:\xb2\x01\x00\x00" +
":\xac\x01\x00\x00\x17:\xae\x01\x00\x00\x17\"\rzero·5\x00\x00\x02\x17:\xb0\x01\x00\x00\t\x13mapacces" + "\x02\x17:\xb4\x01\x00\x00\t\x1bmapaccess1_fat\x00\b\x17\"\xa4\x01\x00\x00\x1d::\xb0\x01\x00\x00\x17:" +
"s2\x00\x06\x17\"\x13mapType·3\x00\x00\x1d::\rhmap·4\x00\x00\x17:\vkey·" + "\xb2\x01\x00\x00\x17\"\rzero·5\x00\x00\x02\x17:\xb4\x01\x00\x00\t\x13mapaccess2\x00\x06\x17\"\x13" +
"5\x00\x00\x04\x17:\xb0\x01\x00\x00\x00\rpres·2\x00\x00\t!mapaccess2_fast32" + "mapType·3\x00\x00\x1d::\rhmap·4\x00\x00\x17:\vkey·5\x00\x00\x04\x17:\xb4" +
"\x00\x06\x17\"\xbe\x01\x00\x00\x1d::\xc0\x01\x00\x00:\xc2\x01\x00\x00\x04\x17:\xb0\x01\x00\x00\x00\xc4\x01\x00\x00\t!mapacc" + "\x01\x00\x00\x00\rpres·2\x00\x00\t!mapaccess2_fast32\x00\x06\x17\"\xc2\x01\x00" +
"ess2_fast64\x00\x06\x17\"\xbe\x01\x00\x00\x1d::\xc0\x01\x00\x00:\xc2\x01\x00\x00\x04\x17:\xb0\x01\x00\x00\x00\xc4" + "\x00\x1d::\xc4\x01\x00\x00:\xc6\x01\x00\x00\x04\x17:\xb4\x01\x00\x00\x00\xc8\x01\x00\x00\t!mapaccess2_fa" +
"\x01\x00\x00\t#mapaccess2_faststr\x00\x06\x17\"\xbe\x01\x00\x00\x1d::\xc0\x01\x00\x00:\xc2" + "st64\x00\x06\x17\"\xc2\x01\x00\x00\x1d::\xc4\x01\x00\x00:\xc6\x01\x00\x00\x04\x17:\xb4\x01\x00\x00\x00\xc8\x01\x00\x00\t#ma" +
"\x01\x00\x00\x04\x17:\xb0\x01\x00\x00\x00\xc4\x01\x00\x00\t\x1bmapaccess2_fat\x00\b\x17\"\xbe\x01\x00\x00\x1d" + "paccess2_faststr\x00\x06\x17\"\xc2\x01\x00\x00\x1d::\xc4\x01\x00\x00:\xc6\x01\x00\x00\x04\x17:\xb4" +
"::\xc0\x01\x00\x00\x17:\xc2\x01\x00\x00\x17\"\rzero·6\x00\x00\x04\x17:\xb0\x01\x00\x00\x00\xc4\x01\x00\x00\t\x11ma" + "\x01\x00\x00\x00\xc8\x01\x00\x00\t\x1bmapaccess2_fat\x00\b\x17\"\xc2\x01\x00\x00\x1d::\xc4\x01\x00\x00\x17" +
"passign\x00\x06\x17\"\xa0\x01\x00\x00\x1d::\xac\x01\x00\x00\x17:\xae\x01\x00\x00\x02\x17:\xb0\x01\x00\x00\t\x15map" + ":\xc6\x01\x00\x00\x17\"\rzero·6\x00\x00\x04\x17:\xb4\x01\x00\x00\x00\xc8\x01\x00\x00\t\x11mapassign" +
"iterinit\x00\x06\x17\"\x13mapType·1\x00\x00\x1d::\rhmap·2\x00\x00\x17:" + "\x00\x06\x17\"\xa4\x01\x00\x00\x1d::\xb0\x01\x00\x00\x17:\xb2\x01\x00\x00\x02\x17:\xb4\x01\x00\x00\t\x15mapiterini" +
"\x0fhiter·3\x00\x00\x00\t\x11mapdelete\x00\x06\x17\"\xd4\x01\x00\x00\x1d::\xd6\x01\x00\x00\x17:" + "t\x00\x06\x17\"\x13mapType·1\x00\x00\x1d::\rhmap·2\x00\x00\x17:\x0fhiter\xc2" +
"\vkey·3\x00\x00\x00\t\x15mapiternext\x00\x02\x17:\x0fhiter·1\x00\x00\x00\t" + "\xb73\x00\x00\x00\t\x11mapdelete\x00\x06\x17\"\xd8\x01\x00\x00\x1d::\xda\x01\x00\x00\x17:\vkey·3" +
"\x0fmakechan\x00\x04\x17\"\x15chanType·2\x00\x00\n\xa2\x01\x00\x00\x02\x1f\x06:\x0fhch" + "\x00\x00\x00\t\x15mapiternext\x00\x02\x17:\x0fhiter·1\x00\x00\x00\t\x0fmakech" +
"an·1\x00\x00\t\x11chanrecv1\x00\x06\x17\"\x15chanType·1\x00\x00\x1f\x02:\x0f" + "an\x00\x04\x17\"\x15chanType·2\x00\x00\n\xa6\x01\x00\x00\x02\x1f\x06:\x0fhchan·1\x00\x00" +
"hchan·2\x00\x00\x17:d\x00\x00\x00\t\x11chanrecv2\x00\x06\x17\"\xe4\x01\x00\x00\x1f\x02:\x0fh" + "\t\x11chanrecv1\x00\x06\x17\"\x15chanType·1\x00\x00\x1f\x02:\x0fhchan·" +
"chan·3\x00\x00\x17:\relem·4\x00\x00\x01\x00\x00\t\x11chansend1\x00\x06\x17\"\xea" + "2\x00\x00\x17:j\x00\x00\x00\t\x11chanrecv2\x00\x06\x17\"\xe8\x01\x00\x00\x1f\x02:\x0fhchan·3" +
"\x01\x00\x00\x1f\x04:\xec\x01\x00\x00\x17:d\x00\x00\x00\t\x11closechan\x00\x02:\xe6\x01\x00\x00\x00\a\x17wri" + "\x00\x00\x17:\relem·4\x00\x00\x01\x00\x00\t\x11chansend1\x00\x06\x17\"\xee\x01\x00\x00\x1f\x04:\xf0" +
"teBarrier\x00\x15\x06\renabled\x00\x00\x00\vneeded\x00\x00\x00\x05cgo\x00\x00\x00" + "\x01\x00\x00\x17:j\x00\x00\x00\t\x11closechan\x00\x02:\xea\x01\x00\x00\x00\a\x17writeBarri" +
"\t\x1dwritebarrierptr\x00\x04\x17:\vdst·1\x00\x00:\vsrc·2\x00\x00" + "er\x00\x15\x06\renabled\x00\x00\x00\vneeded\x00\x00\x00\x05cgo\x00\x00\x00\t\x1dwrite" +
"\x00\t\x17typedmemmove\x00\x06\x17\"p\x00\x00\x17:\vdst·2\x00\x00\x17:\vsrc\xc2" + "barrierptr\x00\x04\x17:\vdst·1\x00\x00:\vsrc·2\x00\x00\x00\t\x17type" +
"\xb73\x00\x00\x00\t\x1btypedslicecopy\x00\x06\x17\"\x06\x00\x00:\vdst·3\x00\x00:\v" + "dmemmove\x00\x06\x17\"t\x00\x00\x17:\vdst·2\x00\x00\x17:\vsrc·3\x00\x00\x00\t\x1b" +
"src·4\x00\x00\x01\x02\x00\t\x17selectnbsend\x00\x06\x17\"\xe4\x01\x00\x00\x1f\x04:\xf0\x01\x00\x00" + "typedslicecopy\x00\x06\x17\"\x06\x00\x00:\vdst·3\x00\x00:\vsrc·4\x00" +
"\x17:\xf2\x01\x00\x00\x01\x00\x00\t\x17selectnbrecv\x00\x06\x17\"\xe4\x01\x00\x00\x17:d\x00\x00\x1f\x02:\x0f" + "\x00\x01\x02\x00\t\x17selectnbsend\x00\x06\x17\"\xe8\x01\x00\x00\x1f\x04:\xf4\x01\x00\x00\x17:\xf6\x01\x00\x00\x01" +
"hchan·4\x00\x00\x01\x00\x00\t\x19selectnbrecv2\x00\b\x17\"\xe4\x01\x00\x00\x17:d\x00" + "\x00\x00\t\x17selectnbrecv\x00\x06\x17\"\xe8\x01\x00\x00\x17:j\x00\x00\x1f\x02:\x0fhchan·" +
"\x00\x17\x00\x15received·4\x00\x00\x1f\x02:\x0fhchan·5\x00\x00\x01\x00\x00\t\x11news" + "4\x00\x00\x01\x00\x00\t\x19selectnbrecv2\x00\b\x17\"\xe8\x01\x00\x00\x17:j\x00\x00\x17\x00\x15rec" +
"elect\x00\x06\x17\"\vsel·1\x00\x00\n\x13selsize·2\x00\x00\b\rsize·" + "eived·4\x00\x00\x1f\x02:\x0fhchan·5\x00\x00\x01\x00\x00\t\x11newselect\x00\x06" +
"3\x00\x00\x00\t\x13selectsend\x00\x06\x17\"\vsel·2\x00\x00\x1f\x04:\xf0\x01\x00\x00\x17:\xf2\x01" + "\x17\"\vsel·1\x00\x00\n\x13selsize·2\x00\x00\b\rsize·3\x00\x00\x00\t\x13s" +
"\x00\x00\x02\x00\x15selected·1\x00\x00\t\x13selectrecv\x00\x06\x17\"\xa8\x02\x00\x00\x1f\x02" + "electsend\x00\x06\x17\"\vsel·2\x00\x00\x1f\x04:\xf4\x01\x00\x00\x17:\xf6\x01\x00\x00\x02\x00\x15se" +
":\xf0\x01\x00\x00\x17:\xf2\x01\x00\x00\x02\x00\xaa\x02\x00\x00\t\x15selectrecv2\x00\b\x17\"\xa8\x02\x00\x00\x1f\x02" + "lected·1\x00\x00\t\x13selectrecv\x00\x06\x17\"\xac\x02\x00\x00\x1f\x02:\xf4\x01\x00\x00\x17:" +
":\xf0\x01\x00\x00\x17:\xf2\x01\x00\x00\x17\x00\x15received·5\x00\x00\x02\x00\xaa\x02\x00\x00\t\x19selec" + "\xf6\x01\x00\x00\x02\x00\xae\x02\x00\x00\t\x15selectrecv2\x00\b\x17\"\xac\x02\x00\x00\x1f\x02:\xf4\x01\x00\x00\x17:" +
"tdefault\x00\x02\x17\"\xa8\x02\x00\x00\x02\x00\xaa\x02\x00\x00\t\x0fselectgo\x00\x02\x17\"\xa0\x02\x00\x00" + "\xf6\x01\x00\x00\x17\x00\x15received·5\x00\x00\x02\x00\xae\x02\x00\x00\t\x19selectdefaul" +
"\x00\t\tblock\x00\x00\x00\t\x11makeslice\x00\x06\x17\"\x06\x00\x00\x02\vlen·3\x00\x00\x02" + "t\x00\x02\x17\"\xac\x02\x00\x00\x02\x00\xae\x02\x00\x00\t\x0fselectgo\x00\x02\x17\"\xa4\x02\x00\x00\x00\t\tbloc" +
"\vcap·4\x00\x00\x02\x11:\vary·1\x00\x00\t\x15makeslice64\x00\x06\x17\"\x06\x00" + "k\x00\x00\x00\t\x11makeslice\x00\x06\x17\"\x06\x00\x00\x02\vlen·3\x00\x00\x02\vcap·4" +
"\x00\n\xba\x02\x00\x00\n\xbc\x02\x00\x00\x02\x11:\xbe\x02\x00\x00\t\x11growslice\x00\x06\x17\"\x06\x00\x00\x11:\vo" + "\x00\x00\x02\x11:\vary·1\x00\x00\t\x15makeslice64\x00\x06\x17\"\x06\x00\x00\n\xbe\x02\x00\x00\n" +
"ld·3\x00\x00\x02\xbc\x02\x00\x00\x02\x11:\xbe\x02\x00\x00\t\rmemmove\x00\x06\x17:\tto·1\x00\x00" + "\xc0\x02\x00\x00\x02\x11:\xc2\x02\x00\x00\t\x11growslice\x00\x06\x17\"\x06\x00\x00\x11:\vold·3\x00\x00" +
"\x17:\vfrm·2\x00\x00\x16\x11length·3\x00^\x00\t\vmemclr\x00\x04\x17\"\vpt" + "\x02\xc0\x02\x00\x00\x02\x11:\xc2\x02\x00\x00\t\rmemmove\x00\x06\x17:\tto·1\x00\x00\x17:\vfrm\xc2" +
"r·1\x00\x00\x16\x11length·2\x00^\x00\t\x0fmemequal\x00\x06\x17:\ax·2\x00" + "\xb72\x00\x00\x16\x11length·3\x00^\x00\t\vmemclr\x00\x04\x17\"\vptr·1\x00\x00\x16" +
"\x00\x17:\ay·3\x00\x00\x16\rsize·4\x00^\x01\x00\x00\t\x11memequal8\x00\x04\x17:\xd6" + "\x11length·2\x00^\x00\t\x0fmemequal\x00\x06\x17:\ax·2\x00\x00\x17:\ay·" +
"\x02\x00\x00\x17:\xd8\x02\x00\x00\x01\x00\x00\t\x13memequal16\x00\x04\x17:\xd6\x02\x00\x00\x17:\xd8\x02\x00\x00\x01\x00" + "3\x00\x00\x16\rsize·4\x00^\x01\x00\x00\t\x11memequal8\x00\x04\x17:\xda\x02\x00\x00\x17:\xdc\x02" +
"\x00\t\x13memequal32\x00\x04\x17:\xd6\x02\x00\x00\x17:\xd8\x02\x00\x00\x01\x00\x00\t\x13memequal" + "\x00\x00\x01\x00\x00\t\x13memequal16\x00\x04\x17:\xda\x02\x00\x00\x17:\xdc\x02\x00\x00\x01\x00\x00\t\x13meme" +
"64\x00\x04\x17:\xd6\x02\x00\x00\x17:\xd8\x02\x00\x00\x01\x00\x00\t\x15memequal128\x00\x04\x17:\xd6\x02\x00\x00" + "qual32\x00\x04\x17:\xda\x02\x00\x00\x17:\xdc\x02\x00\x00\x01\x00\x00\t\x13memequal64\x00\x04\x17:\xda" +
"\x17:\xd8\x02\x00\x00\x01\x00\x00\t\x0fint64div\x00\x03\n\x00\n\x00\x01\n\x00\t\x11uint64div\x00" + "\x02\x00\x00\x17:\xdc\x02\x00\x00\x01\x00\x00\t\x15memequal128\x00\x04\x17:\xda\x02\x00\x00\x17:\xdc\x02\x00\x00\x01" +
"\x03\x14\x00\x14\x00\x01\x14\x00\t\x0fint64mod\x00\x03\n\x00\n\x00\x01\n\x00\t\x11uint64mod\x00\x03" + "\x00\x00\t\x0fint64div\x00\x03\n\x00\n\x00\x01\n\x00\t\x11uint64div\x00\x03\x14\x00\x14\x00\x01\x14" +
"\x14\x00\x14\x00\x01\x14\x00\t\x1bfloat64toint64\x00\x01\x1a\x00\x01\n\x00\t\x1dfloat64t" + "\x00\t\x0fint64mod\x00\x03\n\x00\n\x00\x01\n\x00\t\x11uint64mod\x00\x03\x14\x00\x14\x00\x01\x14\x00" +
"ouint64\x00\x01\x1a\x00\x01\x14\x00\t\x1dfloat64touint32\x00\x01\x1a\x00\x01\x12\x00\t\x1b" + "\t\x1bfloat64toint64\x00\x01\x1a\x00\x01\n\x00\t\x1dfloat64touint64" +
"int64tofloat64\x00\x01\n\x00\x01\x1a\x00\t\x1duint64tofloat64\x00\x01" + "\x00\x01\x1a\x00\x01\x14\x00\t\x1dfloat64touint32\x00\x01\x1a\x00\x01\x12\x00\t\x1bint64to" +
"\x14\x00\x01\x1a\x00\t\x1duint32tofloat64\x00\x01\x12\x00\x01\x1a\x00\t\x19complex12" + "float64\x00\x01\n\x00\x01\x1a\x00\t\x1duint64tofloat64\x00\x01\x14\x00\x01\x1a\x00\t\x1d" +
"8div\x00\x04\x1e\vnum·2\x00\x00\x1e\vden·3\x00\x00\x02\x1e\vquo·1\x00\x00\t\x19r" + "uint32tofloat64\x00\x01\x12\x00\x01\x1a\x00\t\x19complex128div\x00\x04\x1e" +
"acefuncenter\x00\x01\x16^\x00\t\x17racefuncexit\x00\x00\x00\t\x0frace" + "\vnum·2\x00\x00\x1e\vden·3\x00\x00\x02\x1e\vquo·1\x00\x00\t\x19racefunc" +
"read\x00\x01\x16^\x00\t\x11racewrite\x00\x01\x16^\x00\t\x19racereadrange" + "enter\x00\x01\x16^\x00\t\x17racefuncexit\x00\x00\x00\t\x0fraceread\x00\x01\x16" +
"\x00\x04\x16\raddr·1\x00^\x16\rsize·2\x00^\x00\t\x1bracewriterang" + "^\x00\t\x11racewrite\x00\x01\x16^\x00\t\x19racereadrange\x00\x04\x16\radd" +
"e\x00\x04\x16\x8c\x03\x00^\x16\x8e\x03\x00^\x00\t\x0fmsanread\x00\x04\x16\x8c\x03\x00^\x16\x8e\x03\x00^\x00\t\x11m" + "r·1\x00^\x16\rsize·2\x00^\x00\t\x1bracewriterange\x00\x04\x16\x90\x03\x00" +
"sanwrite\x00\x04\x16\x8c\x03\x00^\x16\x8e\x03\x00^\x00\v\xf4\x01\v\x00\x01\x00\n$$\n" "^\x16\x92\x03\x00^\x00\t\x0fmsanread\x00\x04\x16\x90\x03\x00^\x16\x92\x03\x00^\x00\t\x11msanwrit" +
"e\x00\x04\x16\x90\x03\x00^\x16\x92\x03\x00^\x00\v\xf6\x01\v\x00\x01\x00\n$$\n"
const unsafeimport = "" + const unsafeimport = "" +
"version 2\n\n\x00\x00\x01\vunsafe\x00\t\x0fOffsetof\x00\x01:\x00\x01\x16\x00\t" + "version 2\n\n\x00\x00\x01\vunsafe\x00\t\x0fOffsetof\x00\x01:\x00\x01\x16\x00\t" +
......
...@@ -58,6 +58,7 @@ func slicecopy(to any, fr any, wid uintptr) int ...@@ -58,6 +58,7 @@ func slicecopy(to any, fr any, wid uintptr) int
func slicestringcopy(to any, fr any) int func slicestringcopy(to any, fr any) int
// interface conversions // interface conversions
func convI2E(elem any) (ret any)
func convI2I(typ *byte, elem any) (ret any) func convI2I(typ *byte, elem any) (ret any)
func convT2E(typ *byte, elem *any) (ret any) func convT2E(typ *byte, elem *any) (ret any)
func convT2I(tab *byte, elem *any) (ret any) func convT2I(tab *byte, elem *any) (ret any)
......
...@@ -410,14 +410,16 @@ func walkexprlistcheap(s []*Node, init *Nodes) { ...@@ -410,14 +410,16 @@ func walkexprlistcheap(s []*Node, init *Nodes) {
} }
} }
// Build name of function for interface conversion. // Build name of function: convI2E etc.
// Not all names are possible // Not all names are possible
// (e.g., we'll never generate convE2E or convE2I or convI2E). // (e.g., we'll never generate convE2E or convE2I).
func convFuncName(from, to *Type) string { func convFuncName(from, to *Type) string {
tkind := to.iet() tkind := to.iet()
switch from.iet() { switch from.iet() {
case 'I': case 'I':
switch tkind { switch tkind {
case 'E':
return "convI2E"
case 'I': case 'I':
return "convI2I" return "convI2I"
} }
...@@ -1078,34 +1080,6 @@ opswitch: ...@@ -1078,34 +1080,6 @@ opswitch:
break break
} }
// Implement interface to empty interface conversion.
// tmp = i.itab
// if tmp != nil {
// tmp = tmp.type
// }
// e = iface{tmp, i.data}
if n.Type.IsEmptyInterface() && n.Left.Type.IsInterface() && !n.Left.Type.IsEmptyInterface() {
// Evaluate the input interface.
c := temp(n.Left.Type)
init.Append(nod(OAS, c, n.Left))
// Get the itab out of the interface.
tmp := temp(ptrto(Types[TUINT8]))
init.Append(nod(OAS, tmp, typecheck(nod(OITAB, c, nil), Erv)))
// Get the type out of the itab.
nif := nod(OIF, typecheck(nod(ONE, tmp, nodnil()), Erv), nil)
nif.Nbody.Set1(nod(OAS, tmp, itabType(tmp)))
init.Append(nif)
// Build the result.
e := nod(OEFACE, tmp, ifaceData(c, ptrto(Types[TUINT8])))
e.Type = n.Type // assign type manually, typecheck doesn't understand OEFACE.
e.Typecheck = 1
n = e
break
}
var ll []*Node var ll []*Node
if n.Type.IsEmptyInterface() { if n.Type.IsEmptyInterface() {
if !n.Left.Type.IsInterface() { if !n.Left.Type.IsInterface() {
......
...@@ -264,6 +264,16 @@ func assertE2T2(t *_type, e eface, r unsafe.Pointer) bool { ...@@ -264,6 +264,16 @@ func assertE2T2(t *_type, e eface, r unsafe.Pointer) bool {
return true return true
} }
func convI2E(i iface) (r eface) {
tab := i.tab
if tab == nil {
return
}
r._type = tab._type
r.data = i.data
return
}
func assertI2E(inter *interfacetype, i iface, r *eface) { func assertI2E(inter *interfacetype, i iface, r *eface) {
tab := i.tab tab := i.tab
if tab == nil { if tab == nil {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment