36533f7c3f
Fixes for new geth version
37 lines
745 B
Go
37 lines
745 B
Go
package operand
|
|
|
|
import "fmt"
|
|
|
|
// Constant represents a constant literal.
|
|
type Constant interface {
|
|
Op
|
|
Bytes() int
|
|
constant()
|
|
}
|
|
|
|
//go:generate go run make_const.go -output zconst.go
|
|
|
|
// String is a string constant.
|
|
type String string
|
|
|
|
// Asm returns an assembly syntax representation of the string s.
|
|
func (s String) Asm() string { return fmt.Sprintf("$%q", s) }
|
|
|
|
// Bytes returns the length of s.
|
|
func (s String) Bytes() int { return len(s) }
|
|
|
|
func (s String) constant() {}
|
|
|
|
// Imm returns an unsigned integer constant with size guessed from x.
|
|
func Imm(x uint64) Constant {
|
|
switch {
|
|
case uint64(uint8(x)) == x:
|
|
return U8(x)
|
|
case uint64(uint16(x)) == x:
|
|
return U16(x)
|
|
case uint64(uint32(x)) == x:
|
|
return U32(x)
|
|
}
|
|
return U64(x)
|
|
}
|