Lines Matching defs:jump
905 static SLJIT_INLINE sljit_ins * detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, sljit_ins *code)
911 if (jump->flags & SLJIT_REWRITABLE_JUMP)
914 if (jump->flags & JUMP_ADDR)
915 target_addr = jump->u.target;
917 SLJIT_ASSERT(jump->flags & JUMP_LABEL);
918 target_addr = (sljit_uw)(code + jump->u.label->size);
921 inst = (sljit_ins *)jump->addr;
922 if (jump->flags & IS_COND)
927 jump->flags |= PATCH_B;
929 if (!(jump->flags & IS_COND)) {
930 if (jump->flags & IS_JAL) {
931 jump->flags &= ~(PATCH_B);
932 jump->flags |= PATCH_J;
957 jump->addr -= sizeof(sljit_ins);
961 if (jump->flags & IS_COND) {
962 if ((target_addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL)) {
963 jump->flags |= PATCH_J;
972 if ((target_addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL)) {
973 jump->flags |= PATCH_J;
975 if (jump->flags & IS_JAL) {
1009 struct sljit_jump *jump;
1023 jump = compiler->jumps;
1031 SLJIT_ASSERT(!jump || jump->addr >= word_count);
1041 if (jump && jump->addr == word_count) {
1042 if (jump->flags & IS_JAL)
1043 jump->addr = (sljit_uw)(code_ptr - 4);
1045 jump->addr = (sljit_uw)(code_ptr - 3);
1047 code_ptr = detect_jump_type(jump, code_ptr, code);
1048 jump = jump->next;
1071 SLJIT_ASSERT(!jump);
1075 jump = compiler->jumps;
1076 while (jump) {
1078 addr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target;
1079 buf_ptr = (sljit_ins *)jump->addr;
1081 if (jump->flags & PATCH_B) {
1082 addr = (sljit_sw)(addr - (jump->addr)) >> 3;
1093 if (jump->flags & PATCH_J) {
1094 SLJIT_ASSERT((addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL));
1095 addr = (sljit_sw)(addr - (jump->addr)) >> 3;
1105 SLJIT_ASSERT(!(jump->flags & IS_JAL));
1113 jump = jump->next;
2322 struct sljit_jump *jump = NULL;
2370 jump = (struct sljit_jump *)ensure_abuf(compiler, sizeof(struct sljit_jump));
2371 FAIL_IF(!jump);
2372 set_jump(jump, compiler, JUMP_ADDR | ((type >= SLJIT_FAST_CALL) ? IS_JAL : 0));
2373 jump->u.target = srcw;
2378 jump->addr = compiler->size;
2381 jump->addr = compiler->size;
2394 if (jump)
2395 jump->addr = compiler->size;
2410 struct sljit_jump *jump;
2419 jump = (struct sljit_jump *)ensure_abuf(compiler, sizeof(struct sljit_jump));
2420 PTR_FAIL_IF(!jump);
2421 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP);
2469 jump->flags |= flags;
2478 jump->addr = compiler->size;
2483 jump->flags |= IS_JAL | (type >= SLJIT_CALL0 ? SLJIT_REWRITABLE_JUMP : 0);
2485 jump->addr = compiler->size;
2489 return jump;