pub enum TraceOp {
Show 43 variants
LoadConst {
dest: Register,
value: Value,
},
Move {
dest: Register,
src: Register,
},
Add {
dest: Register,
lhs: Register,
rhs: Register,
lhs_type: ValueType,
rhs_type: ValueType,
},
Sub {
dest: Register,
lhs: Register,
rhs: Register,
lhs_type: ValueType,
rhs_type: ValueType,
},
Mul {
dest: Register,
lhs: Register,
rhs: Register,
lhs_type: ValueType,
rhs_type: ValueType,
},
Div {
dest: Register,
lhs: Register,
rhs: Register,
lhs_type: ValueType,
rhs_type: ValueType,
},
Mod {
dest: Register,
lhs: Register,
rhs: Register,
lhs_type: ValueType,
rhs_type: ValueType,
},
Neg {
dest: Register,
src: Register,
},
Eq {
dest: Register,
lhs: Register,
rhs: Register,
},
Ne {
dest: Register,
lhs: Register,
rhs: Register,
},
Lt {
dest: Register,
lhs: Register,
rhs: Register,
},
Le {
dest: Register,
lhs: Register,
rhs: Register,
},
Gt {
dest: Register,
lhs: Register,
rhs: Register,
},
Ge {
dest: Register,
lhs: Register,
rhs: Register,
},
And {
dest: Register,
lhs: Register,
rhs: Register,
},
Or {
dest: Register,
lhs: Register,
rhs: Register,
},
Not {
dest: Register,
src: Register,
},
Concat {
dest: Register,
lhs: Register,
rhs: Register,
},
GetIndex {
dest: Register,
array: Register,
index: Register,
},
ArrayLen {
dest: Register,
array: Register,
},
GuardNativeFunction {
register: Register,
function: TracedNativeFn,
},
GuardFunction {
register: Register,
function_idx: usize,
},
GuardClosure {
register: Register,
function_idx: usize,
upvalues_ptr: *const (),
},
CallNative {
dest: Register,
callee: Register,
function: TracedNativeFn,
first_arg: Register,
arg_count: u8,
},
CallFunction {
dest: Register,
callee: Register,
function_idx: usize,
first_arg: Register,
arg_count: u8,
is_closure: bool,
upvalues_ptr: Option<*const ()>,
},
InlineCall {
dest: Register,
callee: Register,
trace: InlineTrace,
},
CallMethod {
dest: Register,
object: Register,
method_name: String,
first_arg: Register,
arg_count: u8,
},
GetField {
dest: Register,
object: Register,
field_name: String,
field_index: Option<usize>,
value_type: Option<ValueType>,
is_weak: bool,
},
SetField {
object: Register,
field_name: String,
value: Register,
field_index: Option<usize>,
value_type: Option<ValueType>,
is_weak: bool,
},
NewArray {
dest: Register,
first_element: Register,
count: u8,
},
NewStruct {
dest: Register,
struct_name: String,
field_names: Vec<String>,
field_registers: Vec<Register>,
},
NewEnumUnit {
dest: Register,
enum_name: String,
variant_name: String,
},
NewEnumVariant {
dest: Register,
enum_name: String,
variant_name: String,
value_registers: Vec<Register>,
},
IsEnumVariant {
dest: Register,
value: Register,
enum_name: String,
variant_name: String,
},
GetEnumValue {
dest: Register,
enum_reg: Register,
index: u8,
},
Guard {
register: Register,
expected_type: ValueType,
},
GuardLoopContinue {
condition_register: Register,
expect_truthy: bool,
bailout_ip: usize,
},
NestedLoopCall {
function_idx: usize,
loop_start_ip: usize,
bailout_ip: usize,
},
Return {
value: Option<Register>,
},
Unbox {
specialized_id: usize,
source_reg: Register,
layout: SpecializedLayout,
},
Rebox {
dest_reg: Register,
specialized_id: usize,
layout: SpecializedLayout,
},
DropSpecialized {
specialized_id: usize,
layout: SpecializedLayout,
},
SpecializedOp {
op: SpecializedOpKind,
operands: Vec<Operand>,
},
}Variants§
LoadConst
Move
Add
Sub
Mul
Div
Mod
Neg
Eq
Ne
Lt
Le
Gt
Ge
And
Or
Not
Concat
GetIndex
ArrayLen
GuardNativeFunction
GuardFunction
GuardClosure
CallNative
CallFunction
Fields
InlineCall
CallMethod
GetField
Fields
SetField
Fields
NewArray
NewStruct
NewEnumUnit
NewEnumVariant
IsEnumVariant
GetEnumValue
Guard
GuardLoopContinue
NestedLoopCall
Return
Unbox
Unbox a Value into specialized representation
Rebox
Rebox a specialized value back to Value
DropSpecialized
Drop a specialized value without reboxing (cleanup for leaked specializations)
SpecializedOp
Operation on specialized values
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TraceOp
impl !RefUnwindSafe for TraceOp
impl !Send for TraceOp
impl !Sync for TraceOp
impl Unpin for TraceOp
impl UnsafeUnpin for TraceOp
impl !UnwindSafe for TraceOp
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more