Lines Matching refs:jump

417 static SLJIT_INLINE sljit_s32 detect_jump_type(struct sljit_jump *jump, sljit_uw *code_ptr, sljit_u…  in detect_jump_type()  argument
421 if (jump->flags & SLJIT_REWRITABLE_JUMP) in detect_jump_type()
425 if (jump->flags & IS_BL) 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 + 2) - executable_offset); 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 + 2)); in detect_jump_type()
439 if (jump->flags & IS_BL) { in detect_jump_type()
442 jump->flags |= PATCH_B; in detect_jump_type()
449 jump->flags |= PATCH_B; in detect_jump_type()
453 if (jump->flags & JUMP_ADDR) in detect_jump_type()
454 diff = ((sljit_sw)jump->u.target - (sljit_sw)code_ptr - executable_offset); in detect_jump_type()
456 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in detect_jump_type()
457 diff = ((sljit_sw)(code + jump->u.label->size) - (sljit_sw)code_ptr); in detect_jump_type()
466 …*code_ptr = ((jump->flags & IS_BL) ? (BL - CONDITIONAL) : (B - CONDITIONAL)) | (code_ptr[2] & COND… in detect_jump_type()
467 jump->flags |= PATCH_B; in detect_jump_type()
687 struct sljit_jump *jump; in sljit_generate_code() local
722 jump = compiler->jumps; in sljit_generate_code()
758 next_addr = compute_next_addr(label, jump, const_, put_label); in sljit_generate_code()
768 SLJIT_ASSERT(!jump || jump->addr >= word_count); in sljit_generate_code()
773 if (jump && jump->addr == word_count) { in sljit_generate_code()
775 if (detect_jump_type(jump, code_ptr, code, executable_offset)) in sljit_generate_code()
777 jump->addr = (sljit_uw)code_ptr; in sljit_generate_code()
779 jump->addr = (sljit_uw)(code_ptr - 2); in sljit_generate_code()
780 if (detect_jump_type(jump, code_ptr, code, executable_offset)) in sljit_generate_code()
783 jump = jump->next; in sljit_generate_code()
804 next_addr = compute_next_addr(label, jump, const_, put_label); in sljit_generate_code()
830 SLJIT_ASSERT(!jump); in sljit_generate_code()
858 jump = compiler->jumps; in sljit_generate_code()
859 while (jump) { in sljit_generate_code()
860 buf_ptr = (sljit_uw *)jump->addr; in sljit_generate_code()
862 if (jump->flags & PATCH_B) { in sljit_generate_code()
864 if (!(jump->flags & JUMP_ADDR)) { in sljit_generate_code()
865 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in sljit_generate_code()
866 …SLJIT_ASSERT((sljit_sw)(jump->u.label->addr - addr) <= 0x01ffffff && (sljit_sw)(jump->u.label->add… in sljit_generate_code()
867 *buf_ptr |= ((jump->u.label->addr - addr) >> 2) & 0x00ffffff; in sljit_generate_code()
870 …SLJIT_ASSERT((sljit_sw)(jump->u.target - addr) <= 0x01ffffff && (sljit_sw)(jump->u.target - addr) … in sljit_generate_code()
871 *buf_ptr |= ((jump->u.target - addr) >> 2) & 0x00ffffff; in sljit_generate_code()
874 else if (jump->flags & SLJIT_REWRITABLE_JUMP) { in sljit_generate_code()
876 jump->addr = (sljit_uw)code_ptr; in sljit_generate_code()
879 …ump_addr((sljit_uw)code_ptr, executable_offset, (jump->flags & JUMP_LABEL) ? jump->u.label->addr :… in sljit_generate_code()
882 …jump_addr((sljit_uw)buf_ptr, executable_offset, (jump->flags & JUMP_LABEL) ? jump->u.label->addr :… in sljit_generate_code()
887 if (jump->flags & IS_BL) in sljit_generate_code()
893 *buf_ptr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target; in sljit_generate_code()
895 …jump_addr((sljit_uw)buf_ptr, executable_offset, (jump->flags & JUMP_LABEL) ? jump->u.label->addr :… in sljit_generate_code()
898 jump = jump->next; in sljit_generate_code()
2687 struct sljit_jump *jump; in sljit_emit_jump() local
2692 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_jump()
2693 PTR_FAIL_IF(!jump); in sljit_emit_jump()
2694 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP); in sljit_emit_jump()
2705 if (jump->flags & SLJIT_REWRITABLE_JUMP) { in sljit_emit_jump()
2706 jump->addr = compiler->size; in sljit_emit_jump()
2711 jump->flags |= IS_BL; in sljit_emit_jump()
2715 if (!(jump->flags & SLJIT_REWRITABLE_JUMP)) in sljit_emit_jump()
2716 jump->addr = compiler->size; in sljit_emit_jump()
2719 jump->flags |= IS_BL; in sljit_emit_jump()
2722 jump->addr = compiler->size; in sljit_emit_jump()
2724 return jump; in sljit_emit_jump()
2912 struct sljit_jump *jump; in sljit_emit_call() local
2928 jump = sljit_emit_jump(compiler, type); in sljit_emit_call()
2929 PTR_FAIL_IF(jump == NULL); in sljit_emit_call()
2940 return jump; in sljit_emit_call()
2946 return jump; in sljit_emit_call()
2966 struct sljit_jump *jump; in sljit_emit_ijump() local
2986 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_ijump()
2987 FAIL_IF(!jump); in sljit_emit_ijump()
2988 set_jump(jump, compiler, JUMP_ADDR | ((type >= SLJIT_FAST_CALL) ? IS_BL : 0)); in sljit_emit_ijump()
2989 jump->u.target = (sljit_uw)srcw; in sljit_emit_ijump()
3001 jump->addr = compiler->size; in sljit_emit_ijump()