From 31cbb8b65260c14bde3600e7ea000e7e3f513fb1 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sat, 14 Oct 2023 01:04:49 +0800 Subject: [PATCH] add bool prediction --- src/ceval.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/ceval.cpp b/src/ceval.cpp index d4ce31ca..2ca8298a 100644 --- a/src/ceval.cpp +++ b/src/ceval.cpp @@ -464,21 +464,26 @@ __NEXT_STEP:; frame->jump_abs(byte.arg); DISPATCH(); TARGET(POP_JUMP_IF_FALSE) - if(!py_bool(POPX())) frame->jump_abs(byte.arg); + _0 = POPX(); + if(_0==False || !py_bool(_0)) frame->jump_abs(byte.arg); DISPATCH(); TARGET(POP_JUMP_IF_TRUE) - if(py_bool(POPX())) frame->jump_abs(byte.arg); + _0 = POPX(); + if(_0==True || py_bool(_0)) frame->jump_abs(byte.arg); DISPATCH(); TARGET(JUMP_IF_TRUE_OR_POP) - if(py_bool(TOP()) == true) frame->jump_abs(byte.arg); + _0 = TOP(); + if(_0==True || py_bool(_0)) frame->jump_abs(byte.arg); else POP(); DISPATCH(); TARGET(JUMP_IF_FALSE_OR_POP) - if(py_bool(TOP()) == false) frame->jump_abs(byte.arg); + _0 = TOP(); + if(_0==False || !py_bool(_0)) frame->jump_abs(byte.arg); else POP(); DISPATCH(); TARGET(SHORTCUT_IF_FALSE_OR_POP) - if(py_bool(TOP()) == false){ // [b, False] + _0 = TOP(); + if(_0==False || !py_bool(_0)){ // [b, False] STACK_SHRINK(2); // [] PUSH(vm->False); // [False] frame->jump_abs(byte.arg);