com php-src: fixes after merge and some opcache revamp: ext/opcache/Optimizer/block_pass.c ext/opcache/Optimizer/ compact_literals.c
ext/opcache/Optimizer/pass1_5. c ext/opcache/Optimizer/pass2.c ext/opcache/Optimizer/p ass3.c ext/opcache/Optimizer/zend_optimizer.c ext/o
pcache/Optimizer/zend_optimizer_internal.h
| From: | Anatol Belski | Date: | Mon, 30 Dec 2013 09:42:05 +0000 |
| Subject: | com php-src: fixes after merge and some opcache revamp: ext/opcache/Optimizer/block_pass.c ext/opcache/Optimizer/ compact_literals.c ext/opcache/Optimizer/pass1_5. c ext/opcache/Optimizer/pass2.c ext/opcache/Optimizer/p ass3.c ext/opcache/Optimizer/zend_optimizer.c ext/o pcache/Optimizer/zend_optimizer_internal.h |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-75502@lists.php.net to get a copy of this message | ||
Commit: 4e9b54757a2af14e66906df00e57a1e88248935f
Author: Anatol Belski <ab@php.net> Mon, 30 Dec 2013 10:42:05 +0100
Parents: d40315a09d1f59fd7e593613a8951fe6c49cbbd5
Branches: str_size_and_int64
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=4e9b54757a2af14e66906df00e57a1e88248935f
Log:
fixes after merge and some opcache revamp
Changed paths:
M ext/opcache/Optimizer/block_pass.c
M ext/opcache/Optimizer/compact_literals.c
M ext/opcache/Optimizer/pass1_5.c
M ext/opcache/Optimizer/pass2.c
M ext/opcache/Optimizer/pass3.c
M ext/opcache/Optimizer/zend_optimizer.c
M ext/opcache/Optimizer/zend_optimizer_internal.h
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index 7b3a6f1..5060056 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -1,7 +1,7 @@ #define DEBUG_BLOCKPASS 0 /* Checks if a constant (like "true") may be replaced by its value */ -static int zend_get_persistent_constant(char *name, uint name_len, zval *result, int copy TSRMLS_DC ELS_DC) +static int zend_get_persistent_constant(char *name, zend_uint_t name_len, zval *result, int copy TSRMLS_DC ELS_DC) { zend_constant *c; char *lookup_name; @@ -583,7 +583,7 @@ static void strip_nop(zend_code_block *block) while (opline < end) { zend_op *src; - int len = 0; + zend_size_t len = 0; while (opline < end && opline->opcode == ZEND_NOP) { opline++; @@ -838,7 +838,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, case ZEND_JMPZNZ: { /* T = BOOL_NOT(X) + JMPZNZ(T,L1,L2) -> NOP, JMPZNZ(X,L2,L1) */ - int op_t; + zend_uint_t op_t; zend_code_block *op_b; op_t = opline->extended_value; @@ -907,7 +907,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, * Float to string conversion may be affected by current * locale setting. */ - int l; + zend_size_t l; if (Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) { convert_to_string_safe(&ZEND_OP1_LITERAL(opline)); @@ -944,7 +944,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, ZEND_RESULT(VAR_SOURCE(opline->op1)).var == ZEND_OP1(opline).var) { /* compress consecutive CONCATs */ zend_op *src = VAR_SOURCE(opline->op1); - int l; + zend_size_t l; if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) { convert_to_string_safe(&ZEND_OP2_LITERAL(opline)); @@ -1013,7 +1013,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, /* evaluate constant expressions */ int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC) = get_binary_op(opline->opcode); zval result; - int er; + zend_int_t er; if ((opline->opcode == ZEND_DIV || opline->opcode == ZEND_MOD) && ((Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_INT && diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index 4bd17b6..b711dec 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -98,7 +98,7 @@ static void optimizer_compact_literals(zend_op_array *op_array TSRMLS_DC) int l_true = -1; HashTable hash; char *key; - int key_len; + zend_size_t key_len; if (op_array->last_literal) { info = (literal_info*)ecalloc(op_array->last_literal, sizeof(literal_info)); diff --git a/ext/opcache/Optimizer/pass1_5.c b/ext/opcache/Optimizer/pass1_5.c index af1c57e..88283f6 100644 --- a/ext/opcache/Optimizer/pass1_5.c +++ b/ext/opcache/Optimizer/pass1_5.c @@ -44,7 +44,7 @@ if (ZEND_OPTIMIZER_PASS_1 & OPTIMIZATION_LEVEL) { int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC) = get_binary_op(opline->opcode); zend_uint tv = ZEND_RESULT(opline).var; /* temporary variable */ zval result; - int er; + zend_int_t er; if (opline->opcode == ZEND_DIV && Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_INT && @@ -117,7 +117,7 @@ if (ZEND_OPTIMIZER_PASS_1 & OPTIMIZATION_LEVEL) { unary_op_type unary_op = get_unary_op(opline->opcode); zval result; zend_uint tv = ZEND_RESULT(opline).var; /* temporary variable */ - int er; + zend_int_t er; er = EG(error_reporting); EG(error_reporting) = 0; diff --git a/ext/opcache/Optimizer/pass2.c b/ext/opcache/Optimizer/pass2.c index c5ffb90..1255705 100644 --- a/ext/opcache/Optimizer/pass2.c +++ b/ext/opcache/Optimizer/pass2.c @@ -146,7 +146,7 @@ if (ZEND_OPTIMIZER_PASS_2 & OPTIMIZATION_LEVEL) { case ZEND_JMPZNZ: if (ZEND_OP1_TYPE(opline) == IS_CONST) { - int opline_num; + zend_uint_t opline_num; #if ZEND_EXTENSION_API_NO > PHP_5_6_X_API_NO if (zend_is_true(&ZEND_OP1_LITERAL(opline) TSRMLS_CC)) { #else @@ -167,8 +167,8 @@ if (ZEND_OPTIMIZER_PASS_2 & OPTIMIZATION_LEVEL) { case ZEND_CONT: { zend_brk_cont_element *jmp_to; - int array_offset; - int nest_levels; + zend_int_t array_offset; + zend_int_t nest_levels; int dont_optimize = 0; if (ZEND_OP2_TYPE(opline) != IS_CONST) { diff --git a/ext/opcache/Optimizer/pass3.c b/ext/opcache/Optimizer/pass3.c index fd2a190..ec655c5 100644 --- a/ext/opcache/Optimizer/pass3.c +++ b/ext/opcache/Optimizer/pass3.c @@ -270,7 +270,7 @@ if (ZEND_OPTIMIZER_PASS_3 & OPTIMIZATION_LEVEL) { } else if (op_array->opcodes[target].opcode == ZEND_JMPZNZ && SAME_VAR(op_array->opcodes[target].op1, T)) { /* Check for JMPZNZ with same cond variable */ - int new_target; + zend_uint_t new_target; CHECK_JMP2(target, continue_jmp_ex_optimization); if (opline->opcode == ZEND_JMPZ_EX) { new_target = ZEND_OP2(&op_array->opcodes[target]).opline_num; @@ -398,7 +398,7 @@ continue_jmpznz_optimization: /* JMPZNZ(X,L1,L2), L2: JMP(L3) => JMPZNZ(X,L1,L3), L2: JMP(L3) */ while (opline->extended_value < op_array->last && op_array->opcodes[opline->extended_value].opcode == ZEND_JMP) { - int target = opline->extended_value; + zend_uint_t target = opline->extended_value; CHECK_JMP(target, done_jmp_optimization); opline->extended_value = ZEND_OP1(&op_array->opcodes[target]).opline_num; } diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 44deef5..6b10f7a 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -45,14 +45,14 @@ static void zend_optimizer_collect_constant(HashTable **constants, zval *name, z } val = *value; zval_copy_ctor(&val); - zend_hash_add(*constants, Z_STRVAL_P(name), Z_STRLEN_P(name)+1, (void**)&val, sizeof(zval), NULL); + zend_hash_add(*constants, Z_STRVAL_P(name), Z_STRSIZE_P(name)+1, (void**)&val, sizeof(zval), NULL); } static int zend_optimizer_get_collected_constant(HashTable *constants, zval *name, zval* value) { zval *val; - if (zend_hash_find(constants, Z_STRVAL_P(name), Z_STRLEN_P(name)+1, (void**)&val) == SUCCESS) { + if (zend_hash_find(constants, Z_STRVAL_P(name), Z_STRSIZE_P(name)+1, (void**)&val) == SUCCESS) { *value = *val; zval_copy_ctor(value); return 1; @@ -61,10 +61,10 @@ static int zend_optimizer_get_collected_constant(HashTable *constants, zval *nam } #if ZEND_EXTENSION_API_NO >= PHP_5_5_X_API_NO -static int zend_optimizer_lookup_cv(zend_op_array *op_array, char* name, int name_len) +static int zend_optimizer_lookup_cv(zend_op_array *op_array, char* name, zend_size_t name_len) { int i = 0; - ulong hash_value = zend_inline_hash_func(name, name_len+1); + zend_uint_t hash_value = zend_inline_hash_func(name, name_len+1); while (i < op_array->last_var) { if (op_array->vars[i].name == name || @@ -103,9 +103,9 @@ int zend_optimizer_add_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC return i; } -# define LITERAL_LONG(op, val) do { \ +# define LITERAL_INT(op, val) do { \ zval _c; \ - ZVAL_LONG(&_c, val); \ + ZVAL_INT(&_c, val); \ op.constant = zend_optimizer_add_literal(op_array, &_c TSRMLS_CC); \ } while (0) @@ -127,7 +127,7 @@ int zend_optimizer_add_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC #else -# define LITERAL_LONG(op, val) ZVAL_LONG(&op.u.constant, val) +# define LITERAL_LONG(op, val) ZVAL_INT(&op.u.constant, val) # define LITERAL_BOOL(op, val) ZVAL_BOOL(&op.u.constant, val) @@ -155,21 +155,21 @@ static void update_op1_const(zend_op_array *op_array, case ZEND_CATCH: case ZEND_FETCH_CONSTANT: opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); - Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1); + Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRSIZE(ZEND_OP1_LITERAL(opline)) + 1); op_array->literals[opline->op1.constant].cache_slot = op_array->last_cache_slot++; - zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val)); + zend_str_tolower(Z_STRVAL_P(val), Z_STRSIZE_P(val)); zend_optimizer_add_literal(op_array, val TSRMLS_CC); - op_array->literals[opline->op1.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op1.constant+1].constant), Z_STRLEN(op_array->literals[opline->op1.constant+1].constant) + 1); + op_array->literals[opline->op1.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op1.constant+1].constant), Z_STRSIZE(op_array->literals[opline->op1.constant+1].constant) + 1); break; case ZEND_DO_FCALL: - zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val)); + zend_str_tolower(Z_STRVAL_P(val), Z_STRSIZE_P(val)); opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); - Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1); + Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRSIZE(ZEND_OP1_LITERAL(opline)) + 1); op_array->literals[opline->op1.constant].cache_slot = op_array->last_cache_slot++; break; default: opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); - Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1); + Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRSIZE(ZEND_OP1_LITERAL(opline)) + 1); break; } } else { @@ -189,7 +189,7 @@ static void update_op2_const(zend_op_array *op_array, #if ZEND_EXTENSION_API_NO > PHP_5_3_X_API_NO opline->op2.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); if (Z_TYPE_P(val) == IS_STRING) { - Z_HASH_P(&ZEND_OP2_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)) + 1); + Z_HASH_P(&ZEND_OP2_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRSIZE(ZEND_OP2_LITERAL(opline)) + 1); switch (opline->opcode) { case ZEND_FETCH_R: case ZEND_FETCH_W: @@ -205,15 +205,15 @@ static void update_op2_const(zend_op_array *op_array, case ZEND_ADD_INTERFACE: case ZEND_ADD_TRAIT: op_array->literals[opline->op2.constant].cache_slot = op_array->last_cache_slot++; - zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val)); + zend_str_tolower(Z_STRVAL_P(val), Z_STRSIZE_P(val)); zend_optimizer_add_literal(op_array, val TSRMLS_CC); - op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRLEN(op_array->literals[opline->op2.constant+1].constant) + 1); + op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRSIZE(op_array->literals[opline->op2.constant+1].constant) + 1); break; case ZEND_INIT_METHOD_CALL: case ZEND_INIT_STATIC_METHOD_CALL: - zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val)); + zend_str_tolower(Z_STRVAL_P(val), Z_STRSIZE_P(val)); zend_optimizer_add_literal(op_array, val TSRMLS_CC); - op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRLEN(op_array->literals[opline->op2.constant+1].constant) + 1); + op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRSIZE(op_array->literals[opline->op2.constant+1].constant) + 1); /* break missing intentionally */ /*case ZEND_FETCH_CONSTANT:*/ case ZEND_ASSIGN_OBJ: @@ -279,13 +279,13 @@ static void update_op2_const(zend_op_array *op_array, case ZEND_FETCH_DIM_TMP_VAR: check_numeric: { - ulong index; + zend_uint_t index; int numeric = 0; - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(val), Z_STRLEN_P(val)+1, index, numeric = 1); + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(val), Z_STRSIZE_P(val)+1, index, numeric = 1); if (numeric) { zval_dtor(val); - ZVAL_LONG(val, index); + ZVAL_INT(val, index); op_array->literals[opline->op2.constant].constant = *val; } } diff --git a/ext/opcache/Optimizer/zend_optimizer_internal.h b/ext/opcache/Optimizer/zend_optimizer_internal.h index feaa59c..0d3cf44 100644 --- a/ext/opcache/Optimizer/zend_optimizer_internal.h +++ b/ext/opcache/Optimizer/zend_optimizer_internal.h @@ -58,8 +58,8 @@ typedef struct _zend_block_source zend_block_source; struct _zend_code_block { int access; zend_op *start_opline; - int start_opline_no; - int len; + zend_uint_t start_opline_no; + zend_size_t len; zend_code_block *op1_to; zend_code_block *op2_to; zend_code_block *ext_to;
diff --git a/ext/opcache/Optimizer/block_pass.c b/ext/opcache/Optimizer/block_pass.c index 7b3a6f1..5060056 100644 --- a/ext/opcache/Optimizer/block_pass.c +++ b/ext/opcache/Optimizer/block_pass.c @@ -1,7 +1,7 @@ #define DEBUG_BLOCKPASS 0 /* Checks if a constant (like "true") may be replaced by its value */ -static int zend_get_persistent_constant(char *name, uint name_len, zval *result, int copy TSRMLS_DC ELS_DC) +static int zend_get_persistent_constant(char *name, zend_uint_t name_len, zval *result, int copy TSRMLS_DC ELS_DC) { zend_constant *c; char *lookup_name; @@ -583,7 +583,7 @@ static void strip_nop(zend_code_block *block) while (opline < end) { zend_op *src; - int len = 0; + zend_size_t len = 0; while (opline < end && opline->opcode == ZEND_NOP) { opline++; @@ -838,7 +838,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, case ZEND_JMPZNZ: { /* T = BOOL_NOT(X) + JMPZNZ(T,L1,L2) -> NOP, JMPZNZ(X,L2,L1) */ - int op_t; + zend_uint_t op_t; zend_code_block *op_b; op_t = opline->extended_value; @@ -907,7 +907,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, * Float to string conversion may be affected by current * locale setting. */ - int l; + zend_size_t l; if (Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) { convert_to_string_safe(&ZEND_OP1_LITERAL(opline)); @@ -944,7 +944,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, ZEND_RESULT(VAR_SOURCE(opline->op1)).var == ZEND_OP1(opline).var) { /* compress consecutive CONCATs */ zend_op *src = VAR_SOURCE(opline->op1); - int l; + zend_size_t l; if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) { convert_to_string_safe(&ZEND_OP2_LITERAL(opline)); @@ -1013,7 +1013,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array, /* evaluate constant expressions */ int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC) = get_binary_op(opline->opcode); zval result; - int er; + zend_int_t er; if ((opline->opcode == ZEND_DIV || opline->opcode == ZEND_MOD) && ((Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_INT && diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index 4bd17b6..b711dec 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -98,7 +98,7 @@ static void optimizer_compact_literals(zend_op_array *op_array TSRMLS_DC) int l_true = -1; HashTable hash; char *key; - int key_len; + zend_size_t key_len; if (op_array->last_literal) { info = (literal_info*)ecalloc(op_array->last_literal, sizeof(literal_info)); diff --git a/ext/opcache/Optimizer/pass1_5.c b/ext/opcache/Optimizer/pass1_5.c index af1c57e..88283f6 100644 --- a/ext/opcache/Optimizer/pass1_5.c +++ b/ext/opcache/Optimizer/pass1_5.c @@ -44,7 +44,7 @@ if (ZEND_OPTIMIZER_PASS_1 & OPTIMIZATION_LEVEL) { int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC) = get_binary_op(opline->opcode); zend_uint tv = ZEND_RESULT(opline).var; /* temporary variable */ zval result; - int er; + zend_int_t er; if (opline->opcode == ZEND_DIV && Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_INT && @@ -117,7 +117,7 @@ if (ZEND_OPTIMIZER_PASS_1 & OPTIMIZATION_LEVEL) { unary_op_type unary_op = get_unary_op(opline->opcode); zval result; zend_uint tv = ZEND_RESULT(opline).var; /* temporary variable */ - int er; + zend_int_t er; er = EG(error_reporting); EG(error_reporting) = 0; diff --git a/ext/opcache/Optimizer/pass2.c b/ext/opcache/Optimizer/pass2.c index c5ffb90..1255705 100644 --- a/ext/opcache/Optimizer/pass2.c +++ b/ext/opcache/Optimizer/pass2.c @@ -146,7 +146,7 @@ if (ZEND_OPTIMIZER_PASS_2 & OPTIMIZATION_LEVEL) { case ZEND_JMPZNZ: if (ZEND_OP1_TYPE(opline) == IS_CONST) { - int opline_num; + zend_uint_t opline_num; #if ZEND_EXTENSION_API_NO > PHP_5_6_X_API_NO if (zend_is_true(&ZEND_OP1_LITERAL(opline) TSRMLS_CC)) { #else @@ -167,8 +167,8 @@ if (ZEND_OPTIMIZER_PASS_2 & OPTIMIZATION_LEVEL) { case ZEND_CONT: { zend_brk_cont_element *jmp_to; - int array_offset; - int nest_levels; + zend_int_t array_offset; + zend_int_t nest_levels; int dont_optimize = 0; if (ZEND_OP2_TYPE(opline) != IS_CONST) { diff --git a/ext/opcache/Optimizer/pass3.c b/ext/opcache/Optimizer/pass3.c index fd2a190..ec655c5 100644 --- a/ext/opcache/Optimizer/pass3.c +++ b/ext/opcache/Optimizer/pass3.c @@ -270,7 +270,7 @@ if (ZEND_OPTIMIZER_PASS_3 & OPTIMIZATION_LEVEL) { } else if (op_array->opcodes[target].opcode == ZEND_JMPZNZ && SAME_VAR(op_array->opcodes[target].op1, T)) { /* Check for JMPZNZ with same cond variable */ - int new_target; + zend_uint_t new_target; CHECK_JMP2(target, continue_jmp_ex_optimization); if (opline->opcode == ZEND_JMPZ_EX) { new_target = ZEND_OP2(&op_array->opcodes[target]).opline_num; @@ -398,7 +398,7 @@ continue_jmpznz_optimization: /* JMPZNZ(X,L1,L2), L2: JMP(L3) => JMPZNZ(X,L1,L3), L2: JMP(L3) */ while (opline->extended_value < op_array->last && op_array->opcodes[opline->extended_value].opcode == ZEND_JMP) { - int target = opline->extended_value; + zend_uint_t target = opline->extended_value; CHECK_JMP(target, done_jmp_optimization); opline->extended_value = ZEND_OP1(&op_array->opcodes[target]).opline_num; } diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 44deef5..6b10f7a 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -45,14 +45,14 @@ static void zend_optimizer_collect_constant(HashTable **constants, zval *name, z } val = *value; zval_copy_ctor(&val); - zend_hash_add(*constants, Z_STRVAL_P(name), Z_STRLEN_P(name)+1, (void**)&val, sizeof(zval), NULL); + zend_hash_add(*constants, Z_STRVAL_P(name), Z_STRSIZE_P(name)+1, (void**)&val, sizeof(zval), NULL); } static int zend_optimizer_get_collected_constant(HashTable *constants, zval *name, zval* value) { zval *val; - if (zend_hash_find(constants, Z_STRVAL_P(name), Z_STRLEN_P(name)+1, (void**)&val) == SUCCESS) { + if (zend_hash_find(constants, Z_STRVAL_P(name), Z_STRSIZE_P(name)+1, (void**)&val) == SUCCESS) { *value = *val; zval_copy_ctor(value); return 1; @@ -61,10 +61,10 @@ static int zend_optimizer_get_collected_constant(HashTable *constants, zval *nam } #if ZEND_EXTENSION_API_NO >= PHP_5_5_X_API_NO -static int zend_optimizer_lookup_cv(zend_op_array *op_array, char* name, int name_len) +static int zend_optimizer_lookup_cv(zend_op_array *op_array, char* name, zend_size_t name_len) { int i = 0; - ulong hash_value = zend_inline_hash_func(name, name_len+1); + zend_uint_t hash_value = zend_inline_hash_func(name, name_len+1); while (i < op_array->last_var) { if (op_array->vars[i].name == name || @@ -103,9 +103,9 @@ int zend_optimizer_add_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC return i; } -# define LITERAL_LONG(op, val) do { \ +# define LITERAL_INT(op, val) do { \ zval _c; \ - ZVAL_LONG(&_c, val); \ + ZVAL_INT(&_c, val); \ op.constant = zend_optimizer_add_literal(op_array, &_c TSRMLS_CC); \ } while (0) @@ -127,7 +127,7 @@ int zend_optimizer_add_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC #else -# define LITERAL_LONG(op, val) ZVAL_LONG(&op.u.constant, val) +# define LITERAL_LONG(op, val) ZVAL_INT(&op.u.constant, val) # define LITERAL_BOOL(op, val) ZVAL_BOOL(&op.u.constant, val) @@ -155,21 +155,21 @@ static void update_op1_const(zend_op_array *op_array, case ZEND_CATCH: case ZEND_FETCH_CONSTANT: opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); - Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1); + Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRSIZE(ZEND_OP1_LITERAL(opline)) + 1); op_array->literals[opline->op1.constant].cache_slot = op_array->last_cache_slot++; - zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val)); + zend_str_tolower(Z_STRVAL_P(val), Z_STRSIZE_P(val)); zend_optimizer_add_literal(op_array, val TSRMLS_CC); - op_array->literals[opline->op1.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op1.constant+1].constant), Z_STRLEN(op_array->literals[opline->op1.constant+1].constant) + 1); + op_array->literals[opline->op1.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op1.constant+1].constant), Z_STRSIZE(op_array->literals[opline->op1.constant+1].constant) + 1); break; case ZEND_DO_FCALL: - zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val)); + zend_str_tolower(Z_STRVAL_P(val), Z_STRSIZE_P(val)); opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); - Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1); + Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRSIZE(ZEND_OP1_LITERAL(opline)) + 1); op_array->literals[opline->op1.constant].cache_slot = op_array->last_cache_slot++; break; default: opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); - Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1); + Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRSIZE(ZEND_OP1_LITERAL(opline)) + 1); break; } } else { @@ -189,7 +189,7 @@ static void update_op2_const(zend_op_array *op_array, #if ZEND_EXTENSION_API_NO > PHP_5_3_X_API_NO opline->op2.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC); if (Z_TYPE_P(val) == IS_STRING) { - Z_HASH_P(&ZEND_OP2_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)) + 1); + Z_HASH_P(&ZEND_OP2_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRSIZE(ZEND_OP2_LITERAL(opline)) + 1); switch (opline->opcode) { case ZEND_FETCH_R: case ZEND_FETCH_W: @@ -205,15 +205,15 @@ static void update_op2_const(zend_op_array *op_array, case ZEND_ADD_INTERFACE: case ZEND_ADD_TRAIT: op_array->literals[opline->op2.constant].cache_slot = op_array->last_cache_slot++; - zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val)); + zend_str_tolower(Z_STRVAL_P(val), Z_STRSIZE_P(val)); zend_optimizer_add_literal(op_array, val TSRMLS_CC); - op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRLEN(op_array->literals[opline->op2.constant+1].constant) + 1); + op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRSIZE(op_array->literals[opline->op2.constant+1].constant) + 1); break; case ZEND_INIT_METHOD_CALL: case ZEND_INIT_STATIC_METHOD_CALL: - zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val)); + zend_str_tolower(Z_STRVAL_P(val), Z_STRSIZE_P(val)); zend_optimizer_add_literal(op_array, val TSRMLS_CC); - op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRLEN(op_array->literals[opline->op2.constant+1].constant) + 1); + op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRSIZE(op_array->literals[opline->op2.constant+1].constant) + 1); /* break missing intentionally */ /*case ZEND_FETCH_CONSTANT:*/ case ZEND_ASSIGN_OBJ: @@ -279,13 +279,13 @@ static void update_op2_const(zend_op_array *op_array, case ZEND_FETCH_DIM_TMP_VAR: check_numeric: { - ulong index; + zend_uint_t index; int numeric = 0; - ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(val), Z_STRLEN_P(val)+1, index, numeric = 1); + ZEND_HANDLE_NUMERIC_EX(Z_STRVAL_P(val), Z_STRSIZE_P(val)+1, index, numeric = 1); if (numeric) { zval_dtor(val); - ZVAL_LONG(val, index); + ZVAL_INT(val, index); op_array->literals[opline->op2.constant].constant = *val; } } diff --git a/ext/opcache/Optimizer/zend_optimizer_internal.h b/ext/opcache/Optimizer/zend_optimizer_internal.h index feaa59c..0d3cf44 100644 --- a/ext/opcache/Optimizer/zend_optimizer_internal.h +++ b/ext/opcache/Optimizer/zend_optimizer_internal.h @@ -58,8 +58,8 @@ typedef struct _zend_block_source zend_block_source; struct _zend_code_block { int access; zend_op *start_opline; - int start_opline_no; - int len; + zend_uint_t start_opline_no; + zend_size_t len; zend_code_block *op1_to; zend_code_block *op2_to; zend_code_block *ext_to;