Lines Matching defs:jump
254 static SLJIT_INLINE sljit_s32 detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, sljit_ins *code, sljit_sw executable_offset)
261 if (jump->flags & (SLJIT_REWRITABLE_JUMP | IS_CALL))
264 if (jump->flags & SLJIT_REWRITABLE_JUMP)
268 if (jump->flags & JUMP_ADDR)
269 target_addr = jump->u.target;
271 SLJIT_ASSERT(jump->flags & JUMP_LABEL);
272 target_addr = (sljit_uw)(code + jump->u.label->size) + (sljit_uw)executable_offset;
276 if (jump->flags & IS_CALL)
283 if (jump->flags & IS_COND) {
285 jump->flags |= PATCH_B;
289 jump->flags |= PATCH_B | PATCH_ABS_B;
298 jump->flags |= PATCH_B | extra_jump_flags;
303 jump->flags |= PATCH_B | PATCH_ABS_B | extra_jump_flags;
312 jump->flags |= PATCH_ABS32;
317 jump->flags |= PATCH_ABS48;
337 struct sljit_jump *jump;
360 jump = compiler->jumps;
369 SLJIT_ASSERT(!jump || jump->addr >= word_count);
378 if (jump && jump->addr == word_count) {
380 jump->addr = (sljit_uw)(code_ptr - 3);
382 jump->addr = (sljit_uw)(code_ptr - 6);
384 if (detect_jump_type(jump, code_ptr, code, executable_offset)) {
389 if (jump->flags & PATCH_ABS32) {
394 else if (jump->flags & PATCH_ABS48) {
409 if (jump->flags & REMOVE_COND) {
412 jump->addr += sizeof(sljit_ins);
414 jump->flags -= IS_COND;
417 jump = jump->next;
437 SLJIT_ASSERT(!jump);
445 jump = compiler->jumps;
446 while (jump) {
448 addr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target;
449 buf_ptr = (sljit_ins *)jump->addr;
451 if (jump->flags & PATCH_B) {
452 if (jump->flags & IS_COND) {
453 if (!(jump->flags & PATCH_ABS_B)) {
464 if (!(jump->flags & PATCH_ABS_B)) {
482 if (jump->flags & PATCH_ABS32) {
488 if (jump->flags & PATCH_ABS48) {
501 jump = jump->next;
2151 struct sljit_jump *jump;
2161 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump));
2162 PTR_FAIL_IF(!jump);
2163 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP);
2168 jump->flags |= IS_COND;
2171 jump->flags |= IS_CALL;
2176 jump->addr = compiler->size;
2178 return jump;
2183 struct sljit_jump *jump = NULL;
2202 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump));
2203 FAIL_IF(!jump);
2204 set_jump(jump, compiler, JUMP_ADDR);
2205 jump->u.target = srcw;
2208 jump->flags |= IS_CALL;
2219 if (jump)
2220 jump->addr = compiler->size;