diff options
author | Anatol Belski <ab@php.net> | 2014-12-12 14:25:59 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2014-12-12 14:25:59 +0100 |
commit | dfb18b1188492efa48ade07029172c5535f65f93 (patch) | |
tree | 5da6d50a4918a06299162a22aa5cb98e5c76a26a /ext/opcache/Optimizer/zend_optimizer.c | |
parent | de99a94c384fdb6a71c20692df33dc24a2b81a4b (diff) | |
parent | f4311686cc2c7d07abce2b752b4e8597771c5b25 (diff) | |
download | php-git-dfb18b1188492efa48ade07029172c5535f65f93.tar.gz |
Merge remote-tracking branch 'origin/master' into native-tls
* origin/master:
updated NEWS
PowerPC64 support for add and sub with overflow check
PowerPC64 support for operators with overflow check
Fixed bug #68583 Crash in timeout thread
Reduced size of zend_op on 64-bit systems.
Make ZEND_INIT_FCALL keep predcalculted size of necessary stack space in opline->op1.num to avoid its recalculation on each execution.
Removed unused variables
Improved array_merge() and array_replace() (1-st array may be added using simple procedure).
Replaced zendi_convert_to_long() with _zval_get_long_func()
Moved zend_is_true() from zend_execute.h/zend_execute_API.c into zend_operators.h/zend_operators.c. Splited the most expensive part of inline i_zend_is_true() into a separate zend_object_is_true(). Replaced zendi_convert_to_long() with cals to zend_is_true().
Revert "Save one xor instr"
Save one xor instr
Conflicts:
Zend/zend_execute_API.c
Diffstat (limited to 'ext/opcache/Optimizer/zend_optimizer.c')
-rw-r--r-- | ext/opcache/Optimizer/zend_optimizer.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 32009791ed..a36b6584b3 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -428,20 +428,20 @@ static void zend_accel_optimize(zend_op_array *op_array, end = opline + op_array->last; while (opline < end) { if (opline->op1_type == IS_CONST) { - opline->op1.constant = opline->op1.zv - op_array->literals; + ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline->op1); } if (opline->op2_type == IS_CONST) { - opline->op2.constant = opline->op2.zv - op_array->literals; + ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline->op2); } switch (opline->opcode) { case ZEND_JMP: case ZEND_GOTO: case ZEND_FAST_CALL: - ZEND_OP1(opline).opline_num = ZEND_OP1(opline).jmp_addr - op_array->opcodes; + ZEND_PASS_TWO_UNDO_JMP_TARGET(op_array, opline, ZEND_OP1(opline)); break; case ZEND_JMPZNZ: /* relative offset into absolute index */ - opline->extended_value = (zend_op*)(((char*)opline) + opline->extended_value) - op_array->opcodes; + opline->extended_value = ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value); /* break omitted intentionally */ case ZEND_JMPZ: case ZEND_JMPNZ: @@ -452,7 +452,7 @@ static void zend_accel_optimize(zend_op_array *op_array, case ZEND_NEW: case ZEND_FE_RESET: case ZEND_FE_FETCH: - ZEND_OP2(opline).opline_num = ZEND_OP2(opline).jmp_addr - op_array->opcodes; + ZEND_PASS_TWO_UNDO_JMP_TARGET(op_array, opline, ZEND_OP2(opline)); break; } opline++; @@ -466,20 +466,20 @@ static void zend_accel_optimize(zend_op_array *op_array, end = opline + op_array->last; while (opline < end) { if (opline->op1_type == IS_CONST) { - opline->op1.zv = &op_array->literals[opline->op1.constant]; + ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op1); } if (opline->op2_type == IS_CONST) { - opline->op2.zv = &op_array->literals[opline->op2.constant]; + ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op2); } switch (opline->opcode) { case ZEND_JMP: case ZEND_GOTO: case ZEND_FAST_CALL: - ZEND_OP1(opline).jmp_addr = &op_array->opcodes[ZEND_OP1(opline).opline_num]; + ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, ZEND_OP1(opline)); break; case ZEND_JMPZNZ: /* absolute index to relative offset */ - opline->extended_value = (char*)(op_array->opcodes + opline->extended_value) - (char*)opline; + opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, opline->extended_value); /* break omitted intentionally */ case ZEND_JMPZ: case ZEND_JMPNZ: @@ -490,7 +490,7 @@ static void zend_accel_optimize(zend_op_array *op_array, case ZEND_NEW: case ZEND_FE_RESET: case ZEND_FE_FETCH: - ZEND_OP2(opline).jmp_addr = &op_array->opcodes[ZEND_OP2(opline).opline_num]; + ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, ZEND_OP2(opline)); break; } ZEND_VM_SET_OPCODE_HANDLER(opline); |