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