Lines Matching refs:jump

392 static SLJIT_INLINE sljit_si detect_jump_type(struct sljit_jump *jump, sljit_uw *code_ptr, sljit_uw…  in detect_jump_type()  argument
396 if (jump->flags & SLJIT_REWRITABLE_JUMP) in detect_jump_type()
400 if (jump->flags & IS_BL) in detect_jump_type()
403 if (jump->flags & JUMP_ADDR) in detect_jump_type()
404 diff = ((sljit_sw)jump->u.target - (sljit_sw)(code_ptr + 2)); in detect_jump_type()
406 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in detect_jump_type()
407 diff = ((sljit_sw)(code + jump->u.label->size) - (sljit_sw)(code_ptr + 2)); in detect_jump_type()
414 if (jump->flags & IS_BL) { in detect_jump_type()
417 jump->flags |= PATCH_B; in detect_jump_type()
424 jump->flags |= PATCH_B; in detect_jump_type()
428 if (jump->flags & JUMP_ADDR) in detect_jump_type()
429 diff = ((sljit_sw)jump->u.target - (sljit_sw)code_ptr); in detect_jump_type()
431 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in detect_jump_type()
432 diff = ((sljit_sw)(code + jump->u.label->size) - (sljit_sw)code_ptr); in detect_jump_type()
441 …*code_ptr = ((jump->flags & IS_BL) ? (BL - CONDITIONAL) : (B - CONDITIONAL)) | (code_ptr[2] & COND… in detect_jump_type()
442 jump->flags |= PATCH_B; in detect_jump_type()
575 struct sljit_jump *jump; in sljit_generate_code() local
607 jump = compiler->jumps; in sljit_generate_code()
651 SLJIT_ASSERT(!jump || jump->addr >= word_count); in sljit_generate_code()
653 if (jump && jump->addr == word_count) { in sljit_generate_code()
655 if (detect_jump_type(jump, code_ptr, code)) in sljit_generate_code()
657 jump->addr = (sljit_uw)code_ptr; in sljit_generate_code()
659 jump->addr = (sljit_uw)(code_ptr - 2); in sljit_generate_code()
660 if (detect_jump_type(jump, code_ptr, code)) in sljit_generate_code()
663 jump = jump->next; in sljit_generate_code()
703 SLJIT_ASSERT(!jump); in sljit_generate_code()
730 jump = compiler->jumps; in sljit_generate_code()
731 while (jump) { in sljit_generate_code()
732 buf_ptr = (sljit_uw*)jump->addr; in sljit_generate_code()
734 if (jump->flags & PATCH_B) { in sljit_generate_code()
735 if (!(jump->flags & JUMP_ADDR)) { in sljit_generate_code()
736 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in sljit_generate_code()
737 …SLJIT_ASSERT(((sljit_sw)jump->u.label->addr - (sljit_sw)(buf_ptr + 2)) <= 0x01ffffff && ((sljit_sw… in sljit_generate_code()
738 *buf_ptr |= (((sljit_sw)jump->u.label->addr - (sljit_sw)(buf_ptr + 2)) >> 2) & 0x00ffffff; in sljit_generate_code()
741 …SLJIT_ASSERT(((sljit_sw)jump->u.target - (sljit_sw)(buf_ptr + 2)) <= 0x01ffffff && ((sljit_sw)jump in sljit_generate_code()
742 *buf_ptr |= (((sljit_sw)jump->u.target - (sljit_sw)(buf_ptr + 2)) >> 2) & 0x00ffffff; in sljit_generate_code()
745 else if (jump->flags & SLJIT_REWRITABLE_JUMP) { in sljit_generate_code()
747 jump->addr = (sljit_uw)code_ptr; in sljit_generate_code()
750 …inline_set_jump_addr((sljit_uw)code_ptr, (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->… in sljit_generate_code()
753 …inline_set_jump_addr((sljit_uw)buf_ptr, (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u… in sljit_generate_code()
758 if (jump->flags & IS_BL) in sljit_generate_code()
764 *buf_ptr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target; in sljit_generate_code()
766 …inline_set_jump_addr((sljit_uw)buf_ptr, (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u… in sljit_generate_code()
769 jump = jump->next; in sljit_generate_code()
2387 struct sljit_jump *jump; in sljit_emit_jump() local
2392 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_jump()
2393 PTR_FAIL_IF(!jump); in sljit_emit_jump()
2394 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP); in sljit_emit_jump()
2404 if (jump->flags & SLJIT_REWRITABLE_JUMP) { in sljit_emit_jump()
2405 jump->addr = compiler->size; in sljit_emit_jump()
2410 jump->flags |= IS_BL; in sljit_emit_jump()
2414 if (!(jump->flags & SLJIT_REWRITABLE_JUMP)) in sljit_emit_jump()
2415 jump->addr = compiler->size; in sljit_emit_jump()
2418 jump->flags |= IS_BL; in sljit_emit_jump()
2421 jump->addr = compiler->size; in sljit_emit_jump()
2423 return jump; in sljit_emit_jump()
2428 struct sljit_jump *jump; in sljit_emit_ijump() local
2444 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_ijump()
2445 FAIL_IF(!jump); in sljit_emit_ijump()
2446 set_jump(jump, compiler, JUMP_ADDR | ((type >= SLJIT_FAST_CALL) ? IS_BL : 0)); in sljit_emit_ijump()
2447 jump->u.target = srcw; in sljit_emit_ijump()
2459 jump->addr = compiler->size; in sljit_emit_ijump()