Lines Matching refs:jump

198 static SLJIT_INLINE sljit_ins* detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, sljit…  in detect_jump_type()  argument
205 if (jump->flags & SLJIT_REWRITABLE_JUMP) in detect_jump_type()
208 if (jump->flags & JUMP_ADDR) in detect_jump_type()
209 target_addr = jump->u.target; in detect_jump_type()
211 SLJIT_ASSERT(jump->flags & JUMP_LABEL); in detect_jump_type()
212 target_addr = (sljit_uw)(code + jump->u.label->size); in detect_jump_type()
214 inst = (sljit_ins*)jump->addr; in detect_jump_type()
217 if (jump->flags & IS_CALL) { in detect_jump_type()
219 jump->flags |= PATCH_CALL; in detect_jump_type()
220 if (jump->flags & IS_MOVABLE) { in detect_jump_type()
223 jump->addr -= sizeof(sljit_ins); in detect_jump_type()
235 if (jump->flags & IS_COND) in detect_jump_type()
238 if (jump->flags & IS_MOVABLE) { in detect_jump_type()
241 jump->flags |= PATCH_B; in detect_jump_type()
243 if (jump->flags & IS_COND) { in detect_jump_type()
251 jump->addr = (sljit_uw)inst; in detect_jump_type()
258 jump->flags |= PATCH_B; in detect_jump_type()
259 if (jump->flags & IS_COND) in detect_jump_type()
264 jump->addr = (sljit_uw)inst; in detect_jump_type()
282 struct sljit_jump *jump; in sljit_generate_code() local
296 jump = compiler->jumps; in sljit_generate_code()
304 SLJIT_ASSERT(!jump || jump->addr >= word_count); in sljit_generate_code()
313 if (jump && jump->addr == word_count) { in sljit_generate_code()
315 jump->addr = (sljit_uw)(code_ptr - 3); in sljit_generate_code()
317 jump->addr = (sljit_uw)(code_ptr - 6); in sljit_generate_code()
319 code_ptr = detect_jump_type(jump, code_ptr, code); in sljit_generate_code()
320 jump = jump->next; in sljit_generate_code()
341 SLJIT_ASSERT(!jump); in sljit_generate_code()
345 jump = compiler->jumps; in sljit_generate_code()
346 while (jump) { in sljit_generate_code()
348 addr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target; in sljit_generate_code()
349 buf_ptr = (sljit_ins*)jump->addr; in sljit_generate_code()
351 if (jump->flags & PATCH_CALL) { in sljit_generate_code()
352 addr = (sljit_sw)(addr - jump->addr) >> 2; in sljit_generate_code()
357 if (jump->flags & PATCH_B) { in sljit_generate_code()
358 addr = (sljit_sw)(addr - jump->addr) >> 2; in sljit_generate_code()
372 jump = jump->next; in sljit_generate_code()
1286 struct sljit_jump *jump; in sljit_emit_jump() local
1291 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_jump()
1292 PTR_FAIL_IF(!jump); in sljit_emit_jump()
1293 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP); in sljit_emit_jump()
1297 jump->flags |= IS_COND; in sljit_emit_jump()
1299 jump->flags |= IS_MOVABLE; in sljit_emit_jump()
1307 jump->flags |= IS_COND; in sljit_emit_jump()
1309 jump->flags |= IS_MOVABLE; in sljit_emit_jump()
1317 jump->flags |= IS_MOVABLE; in sljit_emit_jump()
1319 jump->flags |= IS_CALL; in sljit_emit_jump()
1324 jump->addr = compiler->size; in sljit_emit_jump()
1327 return jump; in sljit_emit_jump()
1332 struct sljit_jump *jump = NULL; in sljit_emit_ijump() local
1342 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump)); in sljit_emit_ijump()
1343 FAIL_IF(!jump); in sljit_emit_ijump()
1344 set_jump(jump, compiler, JUMP_ADDR); in sljit_emit_ijump()
1345 jump->u.target = srcw; in sljit_emit_ijump()
1347 jump->flags |= IS_MOVABLE; in sljit_emit_ijump()
1349 jump->flags |= IS_CALL; in sljit_emit_ijump()
1360 if (jump) in sljit_emit_ijump()
1361 jump->addr = compiler->size; in sljit_emit_ijump()