Lines Matching refs:jump

284 static SLJIT_INLINE sljit_s32 detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, sljit_…  in detect_jump_type()  argument
291 if (jump->flags & (SLJIT_REWRITABLE_JUMP | IS_CALL)) in detect_jump_type()
294 if (jump->flags & SLJIT_REWRITABLE_JUMP) in detect_jump_type()
298 if (jump->flags & JUMP_ADDR) in detect_jump_type()
299 target_addr = jump->u.target; in detect_jump_type()
301 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in detect_jump_type()
302 target_addr = (sljit_uw)(code + jump->u.label->size) + (sljit_uw)executable_offset; in detect_jump_type()
306 if (jump->flags & IS_CALL) in detect_jump_type()
313 if (jump->flags & IS_COND) { in detect_jump_type()
315 jump->flags |= PATCH_B; in detect_jump_type()
319 jump->flags |= PATCH_B | PATCH_ABS_B; in detect_jump_type()
328 jump->flags |= PATCH_B | extra_jump_flags; in detect_jump_type()
333 jump->flags |= PATCH_B | PATCH_ABS_B | extra_jump_flags; in detect_jump_type()
342 jump->flags |= PATCH_ABS32; in detect_jump_type()
347 jump->flags |= PATCH_ABS48; in detect_jump_type()
417 struct sljit_jump *jump; in sljit_generate_code() local
442 jump = compiler->jumps; in sljit_generate_code()
453 SLJIT_ASSERT(!jump || jump->addr >= word_count); in sljit_generate_code()
464 if (jump && jump->addr == word_count) { in sljit_generate_code()
466 jump->addr = (sljit_uw)(code_ptr - 3); in sljit_generate_code()
468 jump->addr = (sljit_uw)(code_ptr - 6); in sljit_generate_code()
470 if (detect_jump_type(jump, code_ptr, code, executable_offset)) { in sljit_generate_code()
475 if (jump->flags & PATCH_ABS32) { in sljit_generate_code()
480 else if (jump->flags & PATCH_ABS48) { in sljit_generate_code()
495 if (jump->flags & REMOVE_COND) { in sljit_generate_code()
498 jump->addr += sizeof(sljit_ins); in sljit_generate_code()
500 jump->flags -= IS_COND; in sljit_generate_code()
503 jump = jump->next; in sljit_generate_code()
518 next_addr = compute_next_addr(label, jump, const_, put_label); in sljit_generate_code()
534 SLJIT_ASSERT(!jump); in sljit_generate_code()
544 jump = compiler->jumps; in sljit_generate_code()
545 while (jump) { in sljit_generate_code()
547 addr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target; in sljit_generate_code()
548 buf_ptr = (sljit_ins *)jump->addr; in sljit_generate_code()
550 if (jump->flags & PATCH_B) { in sljit_generate_code()
551 if (jump->flags & IS_COND) { in sljit_generate_code()
552 if (!(jump->flags & PATCH_ABS_B)) { in sljit_generate_code()
563 if (!(jump->flags & PATCH_ABS_B)) { in sljit_generate_code()
582 if (jump->flags & PATCH_ABS32) { in sljit_generate_code()
590 if (jump->flags & PATCH_ABS48) { in sljit_generate_code()
606 jump = jump->next; in sljit_generate_code()
2291 struct sljit_jump *jump; in sljit_emit_jump() local
2301 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_jump()
2302 PTR_FAIL_IF(!jump); in sljit_emit_jump()
2303 set_jump(jump, compiler, (sljit_u32)type & SLJIT_REWRITABLE_JUMP); in sljit_emit_jump()
2311 jump->flags |= IS_COND; in sljit_emit_jump()
2314 jump->flags |= IS_CALL; in sljit_emit_jump()
2319 jump->addr = compiler->size; in sljit_emit_jump()
2321 return jump; in sljit_emit_jump()
2346 struct sljit_jump *jump = NULL; in sljit_emit_ijump() local
2365 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_ijump()
2366 FAIL_IF(!jump); in sljit_emit_ijump()
2367 set_jump(jump, compiler, JUMP_ADDR); in sljit_emit_ijump()
2368 jump->u.target = (sljit_uw)srcw; in sljit_emit_ijump()
2372 jump->flags |= IS_CALL; in sljit_emit_ijump()
2384 if (jump) in sljit_emit_ijump()
2385 jump->addr = compiler->size; in sljit_emit_ijump()