Fix VM memory allocation optimizations by reducing what we allocate on the heap
This commit is contained in:
@@ -8,53 +8,53 @@ type Boolean struct {
|
||||
Value bool
|
||||
}
|
||||
|
||||
func (b *Boolean) Bool() bool {
|
||||
func (b Boolean) Bool() bool {
|
||||
return b.Value
|
||||
}
|
||||
|
||||
func (b *Boolean) Type() Type {
|
||||
func (b Boolean) Type() Type {
|
||||
return BooleanType
|
||||
}
|
||||
|
||||
func (b *Boolean) Inspect() string {
|
||||
func (b Boolean) Inspect() string {
|
||||
return fmt.Sprintf("%t", b.Value)
|
||||
}
|
||||
|
||||
func (b *Boolean) Clone() Object {
|
||||
return &Boolean{Value: b.Value}
|
||||
func (b Boolean) Clone() Object {
|
||||
return Boolean{Value: b.Value}
|
||||
}
|
||||
|
||||
func (b *Boolean) String() string {
|
||||
func (b Boolean) String() string {
|
||||
return b.Inspect()
|
||||
}
|
||||
|
||||
func (b *Boolean) Int() int {
|
||||
func (b Boolean) Int() int {
|
||||
if b.Value {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (b *Boolean) LogicalAnd(other Object) (Object, error) {
|
||||
func (b Boolean) LogicalAnd(other Object) (Object, error) {
|
||||
if !AssertTypes(other, BooleanType, IntegerType) {
|
||||
return nil, NewBinaryOpError(b, other, "&&")
|
||||
}
|
||||
return &Boolean{b.Value && other.Bool()}, nil
|
||||
return Boolean{b.Value && other.Bool()}, nil
|
||||
}
|
||||
|
||||
func (b *Boolean) LogicalOr(other Object) (Object, error) {
|
||||
func (b Boolean) LogicalOr(other Object) (Object, error) {
|
||||
if !AssertTypes(other, BooleanType, IntegerType) {
|
||||
return nil, NewBinaryOpError(b, other, "||")
|
||||
}
|
||||
return &Boolean{b.Value || other.Bool()}, nil
|
||||
return Boolean{b.Value || other.Bool()}, nil
|
||||
}
|
||||
|
||||
func (b *Boolean) LogicalNot() Object {
|
||||
return &Boolean{!b.Value}
|
||||
func (b Boolean) LogicalNot() Object {
|
||||
return Boolean{!b.Value}
|
||||
}
|
||||
|
||||
func (b *Boolean) Compare(other Object) int {
|
||||
if obj, ok := other.(*Boolean); ok {
|
||||
func (b Boolean) Compare(other Object) int {
|
||||
if obj, ok := other.(Boolean); ok {
|
||||
return b.Int() - obj.Int()
|
||||
}
|
||||
return 1
|
||||
|
||||
Reference in New Issue
Block a user