YJIT: Maintain MapToLocal that is just upgraded (#9876)
This commit is contained in:
parent
3e03981f25
commit
1936278461
@ -1947,6 +1947,9 @@ impl Context {
|
|||||||
let mut new_type = self.get_local_type(idx);
|
let mut new_type = self.get_local_type(idx);
|
||||||
new_type.upgrade(opnd_type);
|
new_type.upgrade(opnd_type);
|
||||||
self.set_local_type(idx, new_type);
|
self.set_local_type(idx, new_type);
|
||||||
|
// Re-attach MapToLocal for this StackOpnd(idx). set_local_type() detaches
|
||||||
|
// all MapToLocal mappings, including the one we're upgrading here.
|
||||||
|
self.set_opnd_mapping(opnd, mapping);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3581,6 +3584,14 @@ mod tests {
|
|||||||
// TODO: write more tests for Context type diff
|
// TODO: write more tests for Context type diff
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn context_upgrade_local() {
|
||||||
|
let mut asm = Assembler::new();
|
||||||
|
asm.stack_push_local(0);
|
||||||
|
asm.ctx.upgrade_opnd_type(StackOpnd(0), Type::Nil);
|
||||||
|
assert_eq!(Type::Nil, asm.ctx.get_opnd_type(StackOpnd(0)));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn context_chain_depth() {
|
fn context_chain_depth() {
|
||||||
let mut ctx = Context::default();
|
let mut ctx = Context::default();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user