summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/d5/tengo/compiler/opcodes.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/d5/tengo/compiler/opcodes.go')
-rw-r--r--vendor/github.com/d5/tengo/compiler/opcodes.go282
1 files changed, 123 insertions, 159 deletions
diff --git a/vendor/github.com/d5/tengo/compiler/opcodes.go b/vendor/github.com/d5/tengo/compiler/opcodes.go
index d4cf1ba2..d832ee17 100644
--- a/vendor/github.com/d5/tengo/compiler/opcodes.go
+++ b/vendor/github.com/d5/tengo/compiler/opcodes.go
@@ -5,173 +5,137 @@ type Opcode = byte
// List of opcodes
const (
- OpConstant Opcode = iota // Load constant
- OpAdd // Add
- OpSub // Sub
- OpMul // Multiply
- OpDiv // Divide
- OpRem // Remainder
- OpBAnd // bitwise AND
- OpBOr // bitwise OR
- OpBXor // bitwise XOR
- OpBShiftLeft // bitwise shift left
- OpBShiftRight // bitwise shift right
- OpBAndNot // bitwise AND NOT
- OpBComplement // bitwise complement
- OpPop // Pop
- OpTrue // Push true
- OpFalse // Push false
- OpEqual // Equal ==
- OpNotEqual // Not equal !=
- OpGreaterThan // Greater than >=
- OpGreaterThanEqual // Greater than or equal to >=
- OpMinus // Minus -
- OpLNot // Logical not !
- OpJumpFalsy // Jump if falsy
- OpAndJump // Logical AND jump
- OpOrJump // Logical OR jump
- OpJump // Jump
- OpNull // Push null
- OpArray // Array object
- OpMap // Map object
- OpError // Error object
- OpImmutable // Immutable object
- OpIndex // Index operation
- OpSliceIndex // Slice operation
- OpCall // Call function
- OpReturn // Return
- OpReturnValue // Return value
- OpGetGlobal // Get global variable
- OpSetGlobal // Set global variable
- OpSetSelGlobal // Set global variable using selectors
- OpGetLocal // Get local variable
- OpSetLocal // Set local variable
- OpDefineLocal // Define local variable
- OpSetSelLocal // Set local variable using selectors
- OpGetFree // Get free variables
- OpSetFree // Set free variables
- OpSetSelFree // Set free variables using selectors
- OpGetBuiltin // Get builtin function
- OpGetBuiltinModule // Get builtin module
- OpClosure // Push closure
- OpIteratorInit // Iterator init
- OpIteratorNext // Iterator next
- OpIteratorKey // Iterator key
- OpIteratorValue // Iterator value
+ OpConstant Opcode = iota // Load constant
+ OpBComplement // bitwise complement
+ OpPop // Pop
+ OpTrue // Push true
+ OpFalse // Push false
+ OpEqual // Equal ==
+ OpNotEqual // Not equal !=
+ OpMinus // Minus -
+ OpLNot // Logical not !
+ OpJumpFalsy // Jump if falsy
+ OpAndJump // Logical AND jump
+ OpOrJump // Logical OR jump
+ OpJump // Jump
+ OpNull // Push null
+ OpArray // Array object
+ OpMap // Map object
+ OpError // Error object
+ OpImmutable // Immutable object
+ OpIndex // Index operation
+ OpSliceIndex // Slice operation
+ OpCall // Call function
+ OpReturn // Return
+ OpGetGlobal // Get global variable
+ OpSetGlobal // Set global variable
+ OpSetSelGlobal // Set global variable using selectors
+ OpGetLocal // Get local variable
+ OpSetLocal // Set local variable
+ OpDefineLocal // Define local variable
+ OpSetSelLocal // Set local variable using selectors
+ OpGetFreePtr // Get free variable pointer object
+ OpGetFree // Get free variables
+ OpSetFree // Set free variables
+ OpGetLocalPtr // Get local variable as a pointer
+ OpSetSelFree // Set free variables using selectors
+ OpGetBuiltin // Get builtin function
+ OpClosure // Push closure
+ OpIteratorInit // Iterator init
+ OpIteratorNext // Iterator next
+ OpIteratorKey // Iterator key
+ OpIteratorValue // Iterator value
+ OpBinaryOp // Binary Operation
)
// OpcodeNames is opcode names.
var OpcodeNames = [...]string{
- OpConstant: "CONST",
- OpPop: "POP",
- OpTrue: "TRUE",
- OpFalse: "FALSE",
- OpAdd: "ADD",
- OpSub: "SUB",
- OpMul: "MUL",
- OpDiv: "DIV",
- OpRem: "REM",
- OpBAnd: "AND",
- OpBOr: "OR",
- OpBXor: "XOR",
- OpBAndNot: "ANDN",
- OpBShiftLeft: "SHL",
- OpBShiftRight: "SHR",
- OpBComplement: "NEG",
- OpEqual: "EQL",
- OpNotEqual: "NEQ",
- OpGreaterThan: "GTR",
- OpGreaterThanEqual: "GEQ",
- OpMinus: "NEG",
- OpLNot: "NOT",
- OpJumpFalsy: "JMPF",
- OpAndJump: "ANDJMP",
- OpOrJump: "ORJMP",
- OpJump: "JMP",
- OpNull: "NULL",
- OpGetGlobal: "GETG",
- OpSetGlobal: "SETG",
- OpSetSelGlobal: "SETSG",
- OpArray: "ARR",
- OpMap: "MAP",
- OpError: "ERROR",
- OpImmutable: "IMMUT",
- OpIndex: "INDEX",
- OpSliceIndex: "SLICE",
- OpCall: "CALL",
- OpReturn: "RET",
- OpReturnValue: "RETVAL",
- OpGetLocal: "GETL",
- OpSetLocal: "SETL",
- OpDefineLocal: "DEFL",
- OpSetSelLocal: "SETSL",
- OpGetBuiltin: "BUILTIN",
- OpGetBuiltinModule: "BLTMOD",
- OpClosure: "CLOSURE",
- OpGetFree: "GETF",
- OpSetFree: "SETF",
- OpSetSelFree: "SETSF",
- OpIteratorInit: "ITER",
- OpIteratorNext: "ITNXT",
- OpIteratorKey: "ITKEY",
- OpIteratorValue: "ITVAL",
+ OpConstant: "CONST",
+ OpPop: "POP",
+ OpTrue: "TRUE",
+ OpFalse: "FALSE",
+ OpBComplement: "NEG",
+ OpEqual: "EQL",
+ OpNotEqual: "NEQ",
+ OpMinus: "NEG",
+ OpLNot: "NOT",
+ OpJumpFalsy: "JMPF",
+ OpAndJump: "ANDJMP",
+ OpOrJump: "ORJMP",
+ OpJump: "JMP",
+ OpNull: "NULL",
+ OpGetGlobal: "GETG",
+ OpSetGlobal: "SETG",
+ OpSetSelGlobal: "SETSG",
+ OpArray: "ARR",
+ OpMap: "MAP",
+ OpError: "ERROR",
+ OpImmutable: "IMMUT",
+ OpIndex: "INDEX",
+ OpSliceIndex: "SLICE",
+ OpCall: "CALL",
+ OpReturn: "RET",
+ OpGetLocal: "GETL",
+ OpSetLocal: "SETL",
+ OpDefineLocal: "DEFL",
+ OpSetSelLocal: "SETSL",
+ OpGetBuiltin: "BUILTIN",
+ OpClosure: "CLOSURE",
+ OpGetFreePtr: "GETFP",
+ OpGetFree: "GETF",
+ OpSetFree: "SETF",
+ OpGetLocalPtr: "GETLP",
+ OpSetSelFree: "SETSF",
+ OpIteratorInit: "ITER",
+ OpIteratorNext: "ITNXT",
+ OpIteratorKey: "ITKEY",
+ OpIteratorValue: "ITVAL",
+ OpBinaryOp: "BINARYOP",
}
// OpcodeOperands is the number of operands.
var OpcodeOperands = [...][]int{
- OpConstant: {2},
- OpPop: {},
- OpTrue: {},
- OpFalse: {},
- OpAdd: {},
- OpSub: {},
- OpMul: {},
- OpDiv: {},
- OpRem: {},
- OpBAnd: {},
- OpBOr: {},
- OpBXor: {},
- OpBAndNot: {},
- OpBShiftLeft: {},
- OpBShiftRight: {},
- OpBComplement: {},
- OpEqual: {},
- OpNotEqual: {},
- OpGreaterThan: {},
- OpGreaterThanEqual: {},
- OpMinus: {},
- OpLNot: {},
- OpJumpFalsy: {2},
- OpAndJump: {2},
- OpOrJump: {2},
- OpJump: {2},
- OpNull: {},
- OpGetGlobal: {2},
- OpSetGlobal: {2},
- OpSetSelGlobal: {2, 1},
- OpArray: {2},
- OpMap: {2},
- OpError: {},
- OpImmutable: {},
- OpIndex: {},
- OpSliceIndex: {},
- OpCall: {1},
- OpReturn: {},
- OpReturnValue: {},
- OpGetLocal: {1},
- OpSetLocal: {1},
- OpDefineLocal: {1},
- OpSetSelLocal: {1, 1},
- OpGetBuiltin: {1},
- OpGetBuiltinModule: {},
- OpClosure: {2, 1},
- OpGetFree: {1},
- OpSetFree: {1},
- OpSetSelFree: {1, 1},
- OpIteratorInit: {},
- OpIteratorNext: {},
- OpIteratorKey: {},
- OpIteratorValue: {},
+ OpConstant: {2},
+ OpPop: {},
+ OpTrue: {},
+ OpFalse: {},
+ OpBComplement: {},
+ OpEqual: {},
+ OpNotEqual: {},
+ OpMinus: {},
+ OpLNot: {},
+ OpJumpFalsy: {2},
+ OpAndJump: {2},
+ OpOrJump: {2},
+ OpJump: {2},
+ OpNull: {},
+ OpGetGlobal: {2},
+ OpSetGlobal: {2},
+ OpSetSelGlobal: {2, 1},
+ OpArray: {2},
+ OpMap: {2},
+ OpError: {},
+ OpImmutable: {},
+ OpIndex: {},
+ OpSliceIndex: {},
+ OpCall: {1},
+ OpReturn: {1},
+ OpGetLocal: {1},
+ OpSetLocal: {1},
+ OpDefineLocal: {1},
+ OpSetSelLocal: {1, 1},
+ OpGetBuiltin: {1},
+ OpClosure: {2, 1},
+ OpGetFreePtr: {1},
+ OpGetFree: {1},
+ OpSetFree: {1},
+ OpGetLocalPtr: {1},
+ OpSetSelFree: {1, 1},
+ OpIteratorInit: {},
+ OpIteratorNext: {},
+ OpIteratorKey: {},
+ OpIteratorValue: {},
+ OpBinaryOp: {1},
}
// ReadOperands reads operands from the bytecode.