Home | History | Annotate | Download | only in sljit

Lines Matching refs:code_ptr

266 static sljit_uw patch_pc_relative_loads(sljit_uw *last_pc_patch, sljit_uw *code_ptr, sljit_uw* const_pool, sljit_uw cpool_size)
274 SLJIT_ASSERT(const_pool - code_ptr <= CONST_POOL_ALIGNMENT);
281 while (last_pc_patch < code_ptr) {
390 static SLJIT_INLINE sljit_si detect_jump_type(struct sljit_jump *jump, sljit_uw *code_ptr, sljit_uw *code)
399 code_ptr--;
402 diff = ((sljit_sw)jump->u.target - (sljit_sw)(code_ptr + 2));
405 diff = ((sljit_sw)(code + jump->u.label->size) - (sljit_sw)(code_ptr + 2));
414 *code_ptr = (BL - CONDITIONAL) | (*(code_ptr + 1) & COND_MASK);
421 *code_ptr = (B - CONDITIONAL) | (*code_ptr & COND_MASK);
427 diff = ((sljit_sw)jump->u.target - (sljit_sw)code_ptr);
430 diff = ((sljit_sw)(code + jump->u.label->size) - (sljit_sw)code_ptr);
438 code_ptr -= 2;
439 *code_ptr = ((jump->flags & IS_BL) ? (BL - CONDITIONAL) : (B - CONDITIONAL)) | (code_ptr[2] & COND_MASK);
558 sljit_uw *code_ptr;
601 code_ptr = code;
637 label->addr = (sljit_uw)code_ptr;
638 label->size = code_ptr - code;
646 *code_ptr = *buf_ptr++;
653 if (detect_jump_type(jump, code_ptr, code))
654 code_ptr--;
655 jump->addr = (sljit_uw)code_ptr;
657 jump->addr = (sljit_uw)(code_ptr - 2);
658 if (detect_jump_type(jump, code_ptr, code))
659 code_ptr -= 2;
664 /* code_ptr can be affected above. */
665 label->addr = (sljit_uw)(code_ptr + 1);
666 label->size = (code_ptr + 1) - code;
671 const_->addr = (sljit_uw)code_ptr;
673 const_->addr = (sljit_uw)(code_ptr - 1);
677 code_ptr++;
684 cpool_start_address = ALIGN_INSTRUCTION(code_ptr + 1);
685 cpool_current_index = patch_pc_relative_loads(last_pc_patch, code_ptr, cpool_start_address, cpool_size);
688 *code_ptr = B | (((cpool_start_address - code_ptr) + cpool_current_index - 2) & ~PUSH_POOL);
689 code_ptr = cpool_start_address + cpool_current_index;
693 last_pc_patch = code_ptr;
707 cpool_start_address = ALIGN_INSTRUCTION(code_ptr);
708 cpool_current_index = patch_pc_relative_loads(last_pc_patch, code_ptr, cpool_start_address, compiler->cpool_fill);
710 code_ptr = cpool_start_address + cpool_current_index;
745 jump->addr = (sljit_uw)code_ptr;
746 code_ptr[0] = (sljit_uw)buf_ptr;
747 code_ptr[1] = *buf_ptr;
748 inline_set_jump_addr((sljit_uw)code_ptr, (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target, 0);
749 code_ptr += 2;
774 const_->addr = (sljit_uw)code_ptr;
776 code_ptr[0] = (sljit_uw)buf_ptr;
777 code_ptr[1] = *buf_ptr;
783 inline_set_const((sljit_uw)code_ptr, *buf_ptr, 0);
784 code_ptr += 2;
790 SLJIT_ASSERT(code_ptr - code <= (sljit_si)size);
793 compiler->executable_size = (code_ptr - code) * sizeof(sljit_uw);
794 SLJIT_CACHE_FLUSH(code, code_ptr);