Home | History | Annotate | Download | only in sljit_src

Lines Matching defs:jump

204 static SLJIT_INLINE sljit_ins* detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, sljit_ins *code, sljit_sw executable_offset)
211 if (jump->flags & SLJIT_REWRITABLE_JUMP)
214 if (jump->flags & JUMP_ADDR)
215 target_addr = jump->u.target;
217 SLJIT_ASSERT(jump->flags & JUMP_LABEL);
218 target_addr = (sljit_uw)(code + jump->u.label->size) + (sljit_uw)executable_offset;
220 inst = (sljit_ins*)jump->addr;
223 if (jump->flags & IS_CALL) {
225 jump->flags |= PATCH_CALL;
226 if (jump->flags & IS_MOVABLE) {
229 jump->addr -= sizeof(sljit_ins);
241 if (jump->flags & IS_COND)
246 if (jump->flags & IS_MOVABLE) {
248 jump->flags |= PATCH_B;
250 if (jump->flags & IS_COND) {
258 jump->addr = (sljit_uw)inst;
266 jump->flags |= PATCH_B;
267 if (jump->flags & IS_COND)
272 jump->addr = (sljit_uw)inst;
291 struct sljit_jump *jump;
307 jump = compiler->jumps;
316 SLJIT_ASSERT(!jump || jump->addr >= word_count);
325 if (jump && jump->addr == word_count) {
327 jump->addr = (sljit_uw)(code_ptr - 3);
329 jump->addr = (sljit_uw)(code_ptr - 6);
331 code_ptr = detect_jump_type(jump, code_ptr, code, executable_offset);
332 jump = jump->next;
353 SLJIT_ASSERT(!jump);
357 jump = compiler->jumps;
358 while (jump) {
360 addr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target;
361 buf_ptr = (sljit_ins *)jump->addr;
363 if (jump->flags & PATCH_CALL) {
369 if (jump->flags & PATCH_B) {
384 jump = jump->next;
1307 struct sljit_jump *jump;
1312 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump));
1313 PTR_FAIL_IF(!jump);
1314 set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP);
1318 jump->flags |= IS_COND;
1320 jump->flags |= IS_MOVABLE;
1328 jump->flags |= IS_COND;
1330 jump->flags |= IS_MOVABLE;
1338 jump->flags |= IS_MOVABLE;
1340 jump->flags |= IS_CALL;
1345 jump->addr = compiler->size;
1348 return jump;
1353 struct sljit_jump *jump = NULL;
1363 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump));
1364 FAIL_IF(!jump);
1365 set_jump(jump, compiler, JUMP_ADDR);
1366 jump->u.target = srcw;
1368 jump->flags |= IS_MOVABLE;
1370 jump->flags |= IS_CALL;
1381 if (jump)
1382 jump->addr = compiler->size;