Merge pull request #21411 from holiman/fix_codelookup

core/vm: avoid map lookups for accessing jumpdest analysis
pull/21419/head
Péter Szilágyi 4 years ago committed by GitHub
commit 4fde0cabc1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      core/vm/contract.go

@ -112,7 +112,13 @@ func (c *Contract) validJumpSubdest(udest uint64) bool {
// isCode returns true if the provided PC location is an actual opcode, as // isCode returns true if the provided PC location is an actual opcode, as
// opposed to a data-segment following a PUSHN operation. // opposed to a data-segment following a PUSHN operation.
func (c *Contract) isCode(udest uint64) bool { func (c *Contract) isCode(udest uint64) bool {
// Do we already have an analysis laying around?
if c.analysis != nil {
return c.analysis.codeSegment(udest)
}
// Do we have a contract hash already? // Do we have a contract hash already?
// If we do have a hash, that means it's a 'regular' contract. For regular
// contracts ( not temporary initcode), we store the analysis in a map
if c.CodeHash != (common.Hash{}) { if c.CodeHash != (common.Hash{}) {
// Does parent context have the analysis? // Does parent context have the analysis?
analysis, exist := c.jumpdests[c.CodeHash] analysis, exist := c.jumpdests[c.CodeHash]

Loading…
Cancel
Save