From: Andi Gutmans Date: Thu, 24 Oct 2002 18:24:55 +0000 (+0000) Subject: - Also tune jmpz_ex X-Git-Tag: php-4.3.0pre2~87 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=023836ae25389deee6cb025230b2b7d95fc9cd0b;p=php - Also tune jmpz_ex --- diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 7709d4bab0..1e2bbec0b7 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1939,7 +1939,7 @@ int zend_jmpz_ex_handler(ZEND_OPCODE_HANDLER_ARGS) #if DEBUG_ZEND>=2 printf("Conditional jmp to %d\n", EX(opline)->op2.u.opline_num); #endif - EX(opline) = &op_array->opcodes[EX(opline)->op2.u.opline_num]; + EX(opline) = EX(opline)->op2.u.jmp_addr; return 0; /* CHECK_ME */ } NEXT_OPCODE(); @@ -1957,7 +1957,7 @@ int zend_jmpnz_ex_handler(ZEND_OPCODE_HANDLER_ARGS) #if DEBUG_ZEND>=2 printf("Conditional jmp to %d\n", EX(opline)->op2.u.opline_num); #endif - EX(opline) = &op_array->opcodes[EX(opline)->op2.u.opline_num]; + EX(opline) = EX(opline)->op2.u.jmp_addr; return 0; /* CHECK_ME */ } NEXT_OPCODE(); diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index fb7b8b2787..5feb705996 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -309,11 +309,16 @@ int pass_two(zend_op_array *op_array TSRMLS_DC) opline->op2.u.constant.is_ref = 1; opline->op2.u.constant.refcount = 2; } - if (opline->opcode == ZEND_JMP) { - opline->op1.u.jmp_addr = &op_array->opcodes[opline->op1.u.opline_num]; - } - if (opline->opcode == ZEND_JMPZ || opline->opcode == ZEND_JMPNZ) { - opline->op2.u.jmp_addr = &op_array->opcodes[opline->op2.u.opline_num]; + switch (opline->opcode) { + case ZEND_JMP: + opline->op1.u.jmp_addr = &op_array->opcodes[opline->op1.u.opline_num]; + break; + case ZEND_JMPZ: + case ZEND_JMPNZ: + case ZEND_JMPZ_EX: + case ZEND_JMPNZ_EX: + opline->op2.u.jmp_addr = &op_array->opcodes[opline->op2.u.opline_num]; + break; } opline->handler = zend_opcode_handlers[opline->opcode]; opline++;