compiler: make escape analysis more strict about runtime calls
Following the previous CL, in the escape analysis list all the expected runtime calls, and fail if an unexpected one is seen. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/340397
This commit is contained in:
parent
aff75af3b5
commit
629b5699fb
2 changed files with 47 additions and 2 deletions
|
@ -1,4 +1,4 @@
|
|||
32590102c464679f845667b5554e1dcce2549ad2
|
||||
747f3a2d78c073e9b03dd81914d0edb7ddc5be14
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -1646,6 +1646,7 @@ Escape_analysis_assign::expression(Expression** pexpr)
|
|||
case Runtime::MAKECHAN:
|
||||
case Runtime::MAKECHAN64:
|
||||
case Runtime::MAKEMAP:
|
||||
case Runtime::MAKEMAP64:
|
||||
case Runtime::MAKESLICE:
|
||||
case Runtime::MAKESLICE64:
|
||||
this->context_->track(n);
|
||||
|
@ -1705,8 +1706,52 @@ Escape_analysis_assign::expression(Expression** pexpr)
|
|||
}
|
||||
break;
|
||||
|
||||
case Runtime::MEMCMP:
|
||||
case Runtime::DECODERUNE:
|
||||
case Runtime::INTSTRING:
|
||||
case Runtime::MAKEMAP_SMALL:
|
||||
case Runtime::MAPACCESS1:
|
||||
case Runtime::MAPACCESS1_FAST32:
|
||||
case Runtime::MAPACCESS1_FAST64:
|
||||
case Runtime::MAPACCESS1_FASTSTR:
|
||||
case Runtime::MAPACCESS1_FAT:
|
||||
case Runtime::MAPACCESS2:
|
||||
case Runtime::MAPACCESS2_FAST32:
|
||||
case Runtime::MAPACCESS2_FAST64:
|
||||
case Runtime::MAPACCESS2_FASTSTR:
|
||||
case Runtime::MAPACCESS2_FAT:
|
||||
case Runtime::MAPASSIGN_FAST32:
|
||||
case Runtime::MAPASSIGN_FAST64:
|
||||
case Runtime::MAPITERINIT:
|
||||
case Runtime::MAPITERNEXT:
|
||||
case Runtime::MAPCLEAR:
|
||||
case Runtime::CHANRECV2:
|
||||
case Runtime::SELECTGO:
|
||||
case Runtime::SELECTNBSEND:
|
||||
case Runtime::SELECTNBRECV:
|
||||
case Runtime::BLOCK:
|
||||
case Runtime::IFACET2IP:
|
||||
case Runtime::EQTYPE:
|
||||
case Runtime::MEMCLRHASPTR:
|
||||
case Runtime::FIELDTRACK:
|
||||
case Runtime::BUILTIN_MEMSET:
|
||||
case Runtime::PANIC_SLICE_CONVERT:
|
||||
// these do not escape.
|
||||
break;
|
||||
|
||||
case Runtime::IFACEE2E2:
|
||||
case Runtime::IFACEI2E2:
|
||||
case Runtime::IFACEE2I2:
|
||||
case Runtime::IFACEI2I2:
|
||||
case Runtime::IFACEE2T2P:
|
||||
case Runtime::IFACEI2T2P:
|
||||
// handled in ::assign.
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
// should not see other runtime calls. they are not yet
|
||||
// lowered to runtime calls at this point.
|
||||
go_unreachable();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue