Lines Matching refs:jump

222 static SLJIT_INLINE sljit_ins* detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, sljit…  in detect_jump_type()  argument
229 if (jump->flags & SLJIT_REWRITABLE_JUMP) in detect_jump_type()
232 if (jump->flags & JUMP_ADDR) in detect_jump_type()
233 target_addr = jump->u.target; in detect_jump_type()
235 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in detect_jump_type()
236 target_addr = (sljit_uw)(code + jump->u.label->size) + (sljit_uw)executable_offset; in detect_jump_type()
238 inst = (sljit_ins*)jump->addr; in detect_jump_type()
241 if (jump->flags & IS_CALL) { in detect_jump_type()
243 jump->flags |= PATCH_CALL; in detect_jump_type()
244 if (jump->flags & IS_MOVABLE) { in detect_jump_type()
247 jump->addr -= sizeof(sljit_ins); in detect_jump_type()
259 if (jump->flags & IS_COND) in detect_jump_type()
264 if (jump->flags & IS_MOVABLE) { in detect_jump_type()
266 jump->flags |= PATCH_B; in detect_jump_type()
268 if (jump->flags & IS_COND) { in detect_jump_type()
276 jump->addr = (sljit_uw)inst; in detect_jump_type()
284 jump->flags |= PATCH_B; in detect_jump_type()
285 if (jump->flags & IS_COND) in detect_jump_type()
290 jump->addr = (sljit_uw)inst; in detect_jump_type()
310 struct sljit_jump *jump; in sljit_generate_code() local
328 jump = compiler->jumps; in sljit_generate_code()
339 SLJIT_ASSERT(!jump || jump->addr >= word_count); in sljit_generate_code()
350 if (jump && jump->addr == word_count) { in sljit_generate_code()
352 jump->addr = (sljit_uw)(code_ptr - 3); in sljit_generate_code()
354 jump->addr = (sljit_uw)(code_ptr - 6); in sljit_generate_code()
356 code_ptr = detect_jump_type(jump, code_ptr, code, executable_offset); in sljit_generate_code()
357 jump = jump->next; in sljit_generate_code()
369 next_addr = compute_next_addr(label, jump, const_, put_label); in sljit_generate_code()
385 SLJIT_ASSERT(!jump); in sljit_generate_code()
390 jump = compiler->jumps; in sljit_generate_code()
391 while (jump) { in sljit_generate_code()
393 addr = (sljit_sw)((jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target); in sljit_generate_code()
394 buf_ptr = (sljit_ins *)jump->addr; in sljit_generate_code()
396 if (jump->flags & PATCH_CALL) { in sljit_generate_code()
402 if (jump->flags & PATCH_B) { in sljit_generate_code()
418 jump = jump->next; in sljit_generate_code()
1453 struct sljit_jump *jump; in sljit_emit_jump() local
1458 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_jump()
1459 PTR_FAIL_IF(!jump); in sljit_emit_jump()
1460 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP); in sljit_emit_jump()
1464 jump->flags |= IS_COND; in sljit_emit_jump()
1466 jump->flags |= IS_MOVABLE; in sljit_emit_jump()
1474 jump->flags |= IS_COND; in sljit_emit_jump()
1476 jump->flags |= IS_MOVABLE; in sljit_emit_jump()
1485 jump->flags |= IS_MOVABLE; in sljit_emit_jump()
1487 jump->flags |= IS_CALL; in sljit_emit_jump()
1492 jump->addr = compiler->size; in sljit_emit_jump()
1495 return jump; in sljit_emit_jump()
1516 struct sljit_jump *jump = NULL; in sljit_emit_ijump() local
1526 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_ijump()
1527 FAIL_IF(!jump); in sljit_emit_ijump()
1528 set_jump(jump, compiler, JUMP_ADDR); in sljit_emit_ijump()
1529 jump->u.target = (sljit_uw)srcw; in sljit_emit_ijump()
1532 jump->flags |= IS_MOVABLE; in sljit_emit_ijump()
1534 jump->flags |= IS_CALL; in sljit_emit_ijump()
1545 if (jump) in sljit_emit_ijump()
1546 jump->addr = compiler->size; in sljit_emit_ijump()