Lines Matching refs:jump

903 static SLJIT_INLINE sljit_ins * detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, slji…  in detect_jump_type()  argument
910 if (jump->flags & SLJIT_REWRITABLE_JUMP) in detect_jump_type()
913 if (jump->flags & JUMP_ADDR) in detect_jump_type()
914 target_addr = jump->u.target; in detect_jump_type()
916 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in detect_jump_type()
917 target_addr = (sljit_uw)(code + jump->u.label->size); in detect_jump_type()
920 inst = (sljit_ins *)jump->addr; in detect_jump_type()
921 if (jump->flags & IS_COND) in detect_jump_type()
926 jump->flags |= PATCH_B; in detect_jump_type()
928 if (!(jump->flags & IS_COND)) { in detect_jump_type()
929 if (jump->flags & IS_JAL) { in detect_jump_type()
930 jump->flags &= ~(PATCH_B); in detect_jump_type()
931 jump->flags |= PATCH_J; in detect_jump_type()
956 jump->addr -= sizeof(sljit_ins); in detect_jump_type()
960 if (jump->flags & IS_COND) { in detect_jump_type()
961 if ((target_addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL)) { in detect_jump_type()
962 jump->flags |= PATCH_J; in detect_jump_type()
971 if ((target_addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL)) { in detect_jump_type()
972 jump->flags |= PATCH_J; in detect_jump_type()
974 if (jump->flags & IS_JAL) { in detect_jump_type()
1008 struct sljit_jump *jump; in sljit_generate_code() local
1022 jump = compiler->jumps; in sljit_generate_code()
1030 SLJIT_ASSERT(!jump || jump->addr >= word_count); in sljit_generate_code()
1040 if (jump && jump->addr == word_count) { in sljit_generate_code()
1041 if (jump->flags & IS_JAL) in sljit_generate_code()
1042 jump->addr = (sljit_uw)(code_ptr - 4); in sljit_generate_code()
1044 jump->addr = (sljit_uw)(code_ptr - 3); in sljit_generate_code()
1046 code_ptr = detect_jump_type(jump, code_ptr, code); in sljit_generate_code()
1047 jump = jump->next; in sljit_generate_code()
1070 SLJIT_ASSERT(!jump); in sljit_generate_code()
1074 jump = compiler->jumps; in sljit_generate_code()
1075 while (jump) { in sljit_generate_code()
1077 addr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target; in sljit_generate_code()
1078 buf_ptr = (sljit_ins *)jump->addr; in sljit_generate_code()
1080 if (jump->flags & PATCH_B) { in sljit_generate_code()
1081 addr = (sljit_sw)(addr - (jump->addr)) >> 3; in sljit_generate_code()
1092 if (jump->flags & PATCH_J) { in sljit_generate_code()
1093 SLJIT_ASSERT((addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL)); in sljit_generate_code()
1094 addr = (sljit_sw)(addr - (jump->addr)) >> 3; in sljit_generate_code()
1104 SLJIT_ASSERT(!(jump->flags & IS_JAL)); in sljit_generate_code()
1112 jump = jump->next; in sljit_generate_code()
2342 struct sljit_jump *jump = NULL; in sljit_emit_ijump() local
2390 jump = (struct sljit_jump *)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_ijump()
2391 FAIL_IF(!jump); in sljit_emit_ijump()
2392 set_jump(jump, compiler, JUMP_ADDR | ((type >= SLJIT_FAST_CALL) ? IS_JAL : 0)); in sljit_emit_ijump()
2393 jump->u.target = srcw; in sljit_emit_ijump()
2398 jump->addr = compiler->size; in sljit_emit_ijump()
2401 jump->addr = compiler->size; in sljit_emit_ijump()
2412 if (jump) in sljit_emit_ijump()
2413 jump->addr = compiler->size; in sljit_emit_ijump()
2428 struct sljit_jump *jump; in sljit_emit_jump() local
2437 jump = (struct sljit_jump *)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_jump()
2438 PTR_FAIL_IF(!jump); in sljit_emit_jump()
2439 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP); in sljit_emit_jump()
2493 jump->flags |= flags; in sljit_emit_jump()
2502 jump->addr = compiler->size; in sljit_emit_jump()
2507 jump->flags |= IS_JAL | (type >= SLJIT_CALL0 ? SLJIT_REWRITABLE_JUMP : 0); in sljit_emit_jump()
2509 jump->addr = compiler->size; in sljit_emit_jump()
2513 return jump; in sljit_emit_jump()