fix: 修复多分配寄存器导致的空属性问题
This commit is contained in:
@@ -205,9 +205,8 @@ impl Compiler {
|
||||
}
|
||||
Expression::StaticMemberExpression(member) => {
|
||||
self.count_expression(&member.object, ctx);
|
||||
ctx.alloc_reg(); // key register
|
||||
ctx.alloc_reg();
|
||||
ctx.projected_pc += 1; // LOAD_CONST key
|
||||
ctx.alloc_reg(); // result register
|
||||
ctx.projected_pc += 1; // IC_GET_PROP
|
||||
ctx.projected_pc += 1; // IC ext word
|
||||
}
|
||||
|
||||
@@ -382,15 +382,14 @@ impl Compiler {
|
||||
(idx & 0xFF) as u8,
|
||||
((idx >> 8) & 0xFF) as u8,
|
||||
));
|
||||
let result_reg = ctx.alloc_reg();
|
||||
ctx.emit(opcode::encode(
|
||||
OpCode::IC_GET_PROP,
|
||||
result_reg,
|
||||
0,
|
||||
obj_reg,
|
||||
key_reg,
|
||||
));
|
||||
ctx.emit(0);
|
||||
Ok(result_reg)
|
||||
Ok(obj_reg)
|
||||
}
|
||||
Expression::ComputedMemberExpression(member) => {
|
||||
let obj_reg = self.emit_expression(&member.object, ctx)?;
|
||||
|
||||
Reference in New Issue
Block a user