This commit is contained in:
Shunsuke Shibayama 2022-11-03 00:54:50 +09:00
parent c2b228d5d5
commit 32f6cbe7fb

View file

@ -1914,7 +1914,7 @@ impl CodeGenerator {
self.write_arg(1); self.write_arg(1);
self.stack_dec(); self.stack_dec();
let idx = match self.py_version.minor { let idx = match self.py_version.minor {
Some(11) => (self.cur_block().lasti - pop_jump_point) / 2, Some(11) => (self.cur_block().lasti - pop_jump_point - 2) / 2,
Some(10) => self.cur_block().lasti / 2, Some(10) => self.cur_block().lasti / 2,
Some(_) => self.cur_block().lasti, Some(_) => self.cur_block().lasti,
_ => todo!(), _ => todo!(),
@ -2507,15 +2507,6 @@ impl CodeGenerator {
if !self.cfg.no_std && !self.prelude_loaded { if !self.cfg.no_std && !self.prelude_loaded {
self.load_prelude(); self.load_prelude();
} }
let mut print_point = 0;
if self.input().is_repl() {
self.emit_push_null();
print_point = self.cur_block().lasti;
self.emit_load_name_instr(Identifier::public("print"));
// Consistency will be taken later (when NOP replacing)
// 後で(NOP書き換え時)整合性を取る
self.stack_dec();
}
for expr in hir.module.into_iter() { for expr in hir.module.into_iter() {
self.emit_expr(expr); self.emit_expr(expr);
// TODO: discard // TODO: discard
@ -2525,16 +2516,8 @@ impl CodeGenerator {
} }
self.cancel_pop_top(); // 最後の値は戻り値として取っておく self.cancel_pop_top(); // 最後の値は戻り値として取っておく
if self.input().is_repl() { if self.input().is_repl() {
if self.cur_block().stack_len == 0 { if self.cur_block().stack_len == 1 {
// remains `print`, nothing to be printed self.emit_print_expr();
self.edit_code(print_point, NOP as usize);
if self.py_version.minor >= Some(11) {
// delete PUSH_NULL
self.edit_code(print_point - 2, NOP as usize);
}
} else {
self.stack_inc();
self.emit_call_instr(1, Name);
} }
self.stack_dec_n(self.cur_block().stack_len as usize); self.stack_dec_n(self.cur_block().stack_len as usize);
} }