Lines Matching refs:instr
132 struct instr {
146 struct instr *setup;
175 is_relative_jump(struct instr *i)
181 is_block_push(struct instr *instr)
183 int opcode = instr->i_opcode;
188 is_jump(struct instr *i)
195 instr_size(struct instr *instruction)
206 write_instr(_Py_CODEUNIT *codestr, struct instr *instruction, int ilen)
241 struct instr *b_instr;
335 /* true if we need to create an implicit basicblock before the next instr */
870 b->b_instr = (struct instr *)PyObject_Calloc(
871 DEFAULT_BLOCK_SIZE, sizeof(struct instr));
879 struct instr *tmp;
881 oldsize = b->b_ialloc * sizeof(struct instr);
894 tmp = (struct instr *)PyObject_Realloc(
1211 static int is_end_of_basic_block(struct instr *instr)
1213 int opcode = instr->i_opcode;
1215 return is_jump(instr) ||
1235 compiler_check_if_end_of_block(struct compiler *c, struct instr *instr)
1237 if (is_end_of_basic_block(instr)) {
1263 struct instr *i = &b->b_instr[off];
1508 struct instr *i = &b->b_instr[off];
1550 struct instr *i = &b->b_instr[off];
7184 struct instr *instr = &b->b_instr[i];
7185 int effect = stack_effect(instr->i_opcode, instr->i_oparg, 0);
7189 instr->i_opcode, instr->i_oparg);
7197 if (is_jump(instr) || is_block_push(instr)) {
7198 effect = stack_effect(instr->i_opcode, instr->i_oparg, 1);
7205 stackdepth_push(&sp, instr->i_target, target_depth);
7208 assert(!IS_ASSEMBLER_OPCODE(instr->i_opcode));
7209 if (instr->i_opcode == JUMP_NO_INTERRUPT ||
7210 instr->i_opcode == JUMP ||
7211 instr->i_opcode == RETURN_VALUE ||
7212 instr->i_opcode == RAISE_VARARGS ||
7213 instr->i_opcode == RERAISE)
7283 push_except_block(ExceptStack *stack, struct instr *setup) {
7361 struct instr *instr = &b->b_instr[i];
7362 if (is_block_push(instr)) {
7363 if (!instr->i_target->b_visited) {
7368 instr->i_target->b_exceptstack = copy;
7369 todo[0] = instr->i_target;
7370 instr->i_target->b_visited = 1;
7373 handler = push_except_block(except_stack, instr);
7375 else if (instr->i_opcode == POP_BLOCK) {
7378 else if (is_jump(instr)) {
7379 instr->i_except = handler;
7381 if (!instr->i_target->b_visited) {
7387 instr->i_target->b_exceptstack = copy;
7390 instr->i_target->b_exceptstack = except_stack;
7393 todo[0] = instr->i_target;
7394 instr->i_target->b_visited = 1;
7399 instr->i_except = handler;
7431 struct instr *instr = &b->b_instr[i];
7432 if (is_block_push(instr) || instr->i_opcode == POP_BLOCK) {
7433 instr->i_opcode = NOP;
7508 struct instr *instr = &b->b_instr[i];
7509 if (instr->i_except != handler) {
7514 handler = instr->i_except;
7516 ioffset += instr_size(instr);
7592 write_location_info_long_form(struct assembler* a, struct instr* i, int length)
7619 write_location_info_entry(struct assembler* a, struct instr* i, int isize)
7661 assemble_emit_location(struct assembler* a, struct instr* i)
7679 assemble_emit(struct assembler *a, struct instr *i)
7708 struct instr *last = &b->b_instr[b->b_iused-1];
7776 struct instr *instr = &b->b_instr[i];
7777 int isize = instr_size(instr);
7783 if (is_jump(instr)) {
7784 instr->i_oparg = instr->i_target->b_offset;
7785 if (is_relative_jump(instr)) {
7786 if (instr->i_oparg < bsize) {
7787 assert(IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
7788 instr->i_oparg = bsize - instr->i_oparg;
7791 assert(!IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
7792 instr->i_oparg -= bsize;
7796 assert(!IS_BACKWARDS_JUMP_OPCODE(instr->i_opcode));
7798 if (instr_size(instr) != isize) {
8079 dump_instr(struct instr *i)
8161 insert_instruction(basicblock *block, int pos, struct instr *instr) {
8168 block->b_instr[pos] = *instr;
8185 struct instr make_gen = {
8197 struct instr pop_top = {
8231 struct instr make_cell = {
8250 struct instr copy_frees = {
8280 struct instr *last = &b->b_instr[b->b_iused-1];
8319 struct instr *inst = &b->b_instr[i];
8536 struct instr *inst,
8605 struct instr *instructions = &block->b_instr[*ix];
8702 #define STORES_TO(instr) \
8703 (((instr).i_opcode == STORE_FAST) ? (instr).i_oparg : -1)
8709 struct instr *instruction = &block->b_instr[i];
8735 struct instr *swap = &block->b_instr[i];
8775 struct instr temp = block->b_instr[j];
8785 jump_thread(struct instr *inst, struct instr *target, int opcode)
8810 struct instr nop;
8812 struct instr *target;
8814 struct instr *inst = &bb->b_instr[i];
9065 struct instr *last = &bb->b_instr[bb->b_iused-1];
9198 struct instr *instr = &b->b_instr[i];
9199 if (is_jump(instr) || is_block_push(instr)) {
9200 target = instr->i_target;
9255 struct instr prev_instr = {
9332 struct instr *b_last_instr = &b->b_instr[b->b_iused - 1];