author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2022年10月04日 11:37:15 -0300 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2022年10月04日 11:37:15 -0300 |
commit | 5a740c6fb521d288f2bd342de035fd28ef24389c (patch) | |
tree | cb521684baec02748bf08d765d754decf64b914a /lib | |
parent | ba0c4b1e696e34775e4916c96dc4b264c7c597bb (diff) | |
download | lightning-5a740c6fb521d288f2bd342de035fd28ef24389c.tar.gz |
-rw-r--r-- | lib/lightning.c | 13 |
diff --git a/lib/lightning.c b/lib/lightning.c index 6c0aed6..df69159 100644 --- a/lib/lightning.c +++ b/lib/lightning.c @@ -1700,9 +1700,16 @@ _check_block_again(jit_state_t *_jit) continue; /* Remember current label */ - if (node->code == jit_code_label || node->code == jit_code_prolog) { + if (node->code == jit_code_label || + node->code == jit_code_prolog || + node->code == jit_code_epilog) { + + /* If previous block does not pass through */ + if (!(node->flag & jit_flag_head)) + block = NULL; + target = _jitc->blocks.ptr + node->v.w; - /* Code just start in a new block */ + /* Update if previous block pass through */ if (block && block->again && block_update_set(target, block)) todo = 1; block = target; @@ -1711,7 +1718,7 @@ _check_block_again(jit_state_t *_jit) } /* If not the first jmpi */ else if (block) { - /* If not a jump or if a jump to raw address */ + /* If a jump to dynamic address or if a jump to raw address */ if (!(jit_classify(node->code) & jit_cc_a0_jmp) || !(node->flag & jit_flag_node)) continue; |