feat: 支持成员自增自减与复合运算
This commit is contained in:
@@ -75,11 +75,23 @@ pub enum OpCode {
|
||||
NEW_ARRAY = 0x57,
|
||||
SET_ELEM = 0x58,
|
||||
|
||||
// ── Profiling — placeholders (0x60-0x6F) ──
|
||||
PROFILE_TYPE = 0x60,
|
||||
PROFILE_SHAPE = 0x61,
|
||||
PROFILE_BRANCH = 0x62,
|
||||
PROFILE_CALL = 0x63,
|
||||
// -- Member Update (0x59-0x62) --
|
||||
MEMBER_INC = 0x59,
|
||||
MEMBER_DEC = 0x5A,
|
||||
DYN_MEMBER_INC = 0x5B,
|
||||
DYN_MEMBER_DEC = 0x5C,
|
||||
COMPOUND_MEMBER_ADD = 0x5D,
|
||||
COMPOUND_MEMBER_SUB = 0x5E,
|
||||
COMPOUND_MEMBER_MUL = 0x5F,
|
||||
COMPOUND_MEMBER_DIV = 0x60,
|
||||
COMPOUND_MEMBER_MOD = 0x61,
|
||||
COMPOUND_MEMBER_EXP = 0x62,
|
||||
|
||||
// -- Profiling - placeholders (0x63-0x6F) --
|
||||
PROFILE_TYPE = 0x63,
|
||||
PROFILE_SHAPE = 0x64,
|
||||
PROFILE_BRANCH = 0x65,
|
||||
PROFILE_CALL = 0x66,
|
||||
|
||||
// ── Parallel — placeholders (0x70-0x7F) ──
|
||||
FORK = 0x70,
|
||||
@@ -162,10 +174,20 @@ impl TryFrom<u8> for OpCode {
|
||||
0x56 => Ok(OpCode::NEW_OBJECT),
|
||||
0x57 => Ok(OpCode::NEW_ARRAY),
|
||||
0x58 => Ok(OpCode::SET_ELEM),
|
||||
0x60 => Ok(OpCode::PROFILE_TYPE),
|
||||
0x61 => Ok(OpCode::PROFILE_SHAPE),
|
||||
0x62 => Ok(OpCode::PROFILE_BRANCH),
|
||||
0x63 => Ok(OpCode::PROFILE_CALL),
|
||||
0x59 => Ok(OpCode::MEMBER_INC),
|
||||
0x5A => Ok(OpCode::MEMBER_DEC),
|
||||
0x5B => Ok(OpCode::DYN_MEMBER_INC),
|
||||
0x5C => Ok(OpCode::DYN_MEMBER_DEC),
|
||||
0x5D => Ok(OpCode::COMPOUND_MEMBER_ADD),
|
||||
0x5E => Ok(OpCode::COMPOUND_MEMBER_SUB),
|
||||
0x5F => Ok(OpCode::COMPOUND_MEMBER_MUL),
|
||||
0x60 => Ok(OpCode::COMPOUND_MEMBER_DIV),
|
||||
0x61 => Ok(OpCode::COMPOUND_MEMBER_MOD),
|
||||
0x62 => Ok(OpCode::COMPOUND_MEMBER_EXP),
|
||||
0x63 => Ok(OpCode::PROFILE_TYPE),
|
||||
0x64 => Ok(OpCode::PROFILE_SHAPE),
|
||||
0x65 => Ok(OpCode::PROFILE_BRANCH),
|
||||
0x66 => Ok(OpCode::PROFILE_CALL),
|
||||
0x70 => Ok(OpCode::FORK),
|
||||
0x71 => Ok(OpCode::JOIN),
|
||||
0xF0 => Ok(OpCode::NOP),
|
||||
@@ -231,6 +253,16 @@ impl fmt::Display for OpCode {
|
||||
OpCode::NEW_OBJECT => "NEW_OBJECT",
|
||||
OpCode::NEW_ARRAY => "NEW_ARRAY",
|
||||
OpCode::SET_ELEM => "SET_ELEM",
|
||||
OpCode::MEMBER_INC => "MEMBER_INC",
|
||||
OpCode::MEMBER_DEC => "MEMBER_DEC",
|
||||
OpCode::DYN_MEMBER_INC => "DYN_MEMBER_INC",
|
||||
OpCode::DYN_MEMBER_DEC => "DYN_MEMBER_DEC",
|
||||
OpCode::COMPOUND_MEMBER_ADD => "COMPOUND_MEMBER_ADD",
|
||||
OpCode::COMPOUND_MEMBER_SUB => "COMPOUND_MEMBER_SUB",
|
||||
OpCode::COMPOUND_MEMBER_MUL => "COMPOUND_MEMBER_MUL",
|
||||
OpCode::COMPOUND_MEMBER_DIV => "COMPOUND_MEMBER_DIV",
|
||||
OpCode::COMPOUND_MEMBER_MOD => "COMPOUND_MEMBER_MOD",
|
||||
OpCode::COMPOUND_MEMBER_EXP => "COMPOUND_MEMBER_EXP",
|
||||
OpCode::PROFILE_TYPE => "PROFILE_TYPE",
|
||||
OpCode::PROFILE_SHAPE => "PROFILE_SHAPE",
|
||||
OpCode::PROFILE_BRANCH => "PROFILE_BRANCH",
|
||||
|
||||
Reference in New Issue
Block a user