Home | History | Annotate | Download | only in sljit_src

Lines Matching defs:jump

418 static sljit_u8* generate_far_jump_code(struct sljit_jump *jump, sljit_u8 *code_ptr, sljit_s32 type, sljit_sw executable_offset);
420 static sljit_u8* generate_far_jump_code(struct sljit_jump *jump, sljit_u8 *code_ptr, sljit_s32 type);
423 static sljit_u8* generate_near_jump_code(struct sljit_jump *jump, sljit_u8 *code_ptr, sljit_u8 *code, sljit_s32 type, sljit_sw executable_offset)
428 if (jump->flags & JUMP_LABEL)
429 label_addr = (sljit_uw)(code + jump->u.label->size);
431 label_addr = jump->u.target - executable_offset;
433 short_jump = (sljit_sw)(label_addr - (jump->addr + 2)) >= -128 && (sljit_sw)(label_addr - (jump->addr + 2)) <= 127;
436 if ((sljit_sw)(label_addr - (jump->addr + 1)) > HALFWORD_MAX || (sljit_sw)(label_addr - (jump->addr + 1)) < HALFWORD_MIN)
437 return generate_far_jump_code(jump, code_ptr, type);
445 jump->addr++;
450 jump->addr++;
454 jump->addr++;
459 jump->addr += 2;
463 jump->flags |= PATCH_MB;
466 jump->flags |= PATCH_MW;
489 struct sljit_jump *jump;
503 jump = compiler->jumps;
520 jump->addr = (sljit_uw)code_ptr;
521 if (!(jump->flags & SLJIT_REWRITABLE_JUMP))
522 code_ptr = generate_near_jump_code(jump, code_ptr, code, *buf_ptr - 2, executable_offset);
525 code_ptr = generate_far_jump_code(jump, code_ptr, *buf_ptr - 2, executable_offset);
527 code_ptr = generate_far_jump_code(jump, code_ptr, *buf_ptr - 2);
530 jump = jump->next;
549 SLJIT_ASSERT(!jump);
552 jump = compiler->jumps;
553 while (jump) {
554 jump_addr = jump->addr + executable_offset;
556 if (jump->flags & PATCH_MB) {
557 SLJIT_ASSERT((sljit_sw)(jump->u.label->addr - (jump_addr + sizeof(sljit_s8))) >= -128 && (sljit_sw)(jump->u.label->addr - (jump_addr + sizeof(sljit_s8))) <= 127);
558 *(sljit_u8*)jump->addr = (sljit_u8)(jump->u.label->addr - (jump_addr + sizeof(sljit_s8)));
559 } else if (jump->flags & PATCH_MW) {
560 if (jump->flags & JUMP_LABEL) {
562 sljit_unaligned_store_sw((void*)jump->addr, (sljit_sw)(jump->u.label->addr - (jump_addr + sizeof(sljit_sw))));
564 SLJIT_ASSERT((sljit_sw)(jump->u.label->addr - (jump_addr + sizeof(sljit_s32))) >= HALFWORD_MIN && (sljit_sw)(jump->u.label->addr - (jump_addr + sizeof(sljit_s32))) <= HALFWORD_MAX);
565 sljit_unaligned_store_s32((void*)jump->addr, (sljit_s32)(jump->u.label->addr - (jump_addr + sizeof(sljit_s32))));
570 sljit_unaligned_store_sw((void*)jump->addr, (sljit_sw)(jump->u.target - (jump_addr + sizeof(sljit_sw))));
572 SLJIT_ASSERT((sljit_sw)(jump->u.target - (jump_addr + sizeof(sljit_s32))) >= HALFWORD_MIN && (sljit_sw)(jump->u.target - (jump_addr + sizeof(sljit_s32))) <= HALFWORD_MAX);
573 sljit_unaligned_store_s32((void*)jump->addr, (sljit_s32)(jump
578 else if (jump->flags & PATCH_MD)
579 sljit_unaligned_store_sw((void*)jump->addr, jump->u.label->addr);
582 jump = jump->next;
2501 struct sljit_jump *jump;
2506 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump));
2507 PTR_FAIL_IF_NULL(jump);
2508 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP);
2526 return jump;
2532 struct sljit_jump *jump;
2561 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump));
2562 FAIL_IF_NULL(jump);
2563 set_jump(jump, compiler, JUMP_ADDR);
2564 jump->u.target = srcw;