[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Thu, 05 May 2011 16:02:11 + Revision: http://svn.php.net/viewvc?view=revision&revision=310791 Log: Fixed direct threaded executor (php zend_vm_gen.php --with-vm-kind=GOTO) Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2011-05-05 14:57:50 UTC (rev 310790) +++ php/php-src/trunk/Zend/zend_vm_def.h2011-05-05 16:02:11 UTC (rev 310791) @@ -4764,10 +4764,11 @@ ZEND_VM_HANDLER(154, ZEND_ADD_TRAIT, ANY, ANY) { - zend_op *opline = EX(opline); + USE_OPLINE zend_class_entry *ce = EX_T(opline->op1.var).class_entry; zend_class_entry *trait; + SAVE_OPLINE(); if (CACHED_PTR(opline->op2.literal->cache_slot)) { trait = CACHED_PTR(opline->op2.literal->cache_slot); } else { @@ -4793,11 +4794,12 @@ ZEND_VM_HANDLER(155, ZEND_BIND_TRAITS, ANY, ANY) { - zend_op *opline = EX(opline); + USE_OPLINE zend_class_entry *ce = EX_T(opline->op1.var).class_entry; + SAVE_OPLINE(); zend_do_bind_traits(ce TSRMLS_CC); - + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2011-05-05 14:57:50 UTC (rev 310790) +++ php/php-src/trunk/Zend/zend_vm_execute.h2011-05-05 16:02:11 UTC (rev 310791) @@ -990,10 +990,11 @@ static int ZEND_FASTCALL ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { - zend_op *opline = EX(opline); + USE_OPLINE zend_class_entry *ce = EX_T(opline->op1.var).class_entry; zend_class_entry *trait; + SAVE_OPLINE(); if (CACHED_PTR(opline->op2.literal->cache_slot)) { trait = CACHED_PTR(opline->op2.literal->cache_slot); } else { @@ -1019,11 +1020,12 @@ static int ZEND_FASTCALL ZEND_BIND_TRAITS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { - zend_op *opline = EX(opline); + USE_OPLINE zend_class_entry *ce = EX_T(opline->op1.var).class_entry; + SAVE_OPLINE(); zend_do_bind_traits(ce TSRMLS_CC); - + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h zend_vm_opcodes.h
stas Wed, 16 Mar 2011 05:25:02 + Revision: http://svn.php.net/viewvc?view=revision&revision=309265 Log: fix UMR when variable name is an object and __toString is used # zend_call_function checks IS_REF on This Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h U php/php-src/trunk/Zend/zend_vm_opcodes.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h 2011-03-16 03:14:21 UTC (rev 309264) +++ php/php-src/trunk/Zend/zend_vm_def.h 2011-03-16 05:25:02 UTC (rev 309265) @@ -1023,6 +1023,8 @@ if (OP1_TYPE != IS_CONST && UNEXPECTED(Z_TYPE_P(varname) != IS_STRING)) { ZVAL_COPY_VALUE(&tmp_varname, varname); zval_copy_ctor(&tmp_varname); + Z_SET_REFCOUNT(tmp_varname, 1); + Z_UNSET_ISREF(tmp_varname); convert_to_string(&tmp_varname); varname = &tmp_varname; } @@ -1205,7 +1207,7 @@ /* We are going to assign the result by reference */ if (UNEXPECTED(opline->extended_value != 0)) { zval **retval_ptr = EX_T(opline->result.var).var.ptr_ptr; - + if (retval_ptr) { Z_DELREF_PP(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); @@ -1386,7 +1388,7 @@ PZVAL_LOCK(*EX_T(opline->op1.var).var.ptr_ptr); EX_T(opline->op1.var).var.ptr = *EX_T(opline->op1.var).var.ptr_ptr; } - + if (IS_OP2_TMP_FREE()) { MAKE_REAL_ZVAL_PTR(property); } @@ -1414,7 +1416,7 @@ SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); Z_ADDREF_PP(retval_ptr); } - + CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } @@ -2071,7 +2073,7 @@ SAVE_OPLINE(); var = GET_OP2_ZVAL_PTR(BP_VAR_R); - + if (OP1_TYPE == IS_UNUSED) { /* Initialize for erealloc in add_string_to_string */ Z_STRVAL_P(str) = NULL; @@ -2166,7 +2168,7 @@ if (EXPECTED(EX(object) != NULL) && EXPECTED(Z_TYPE_P(EX(object)) == IS_OBJECT)) { EX(called_scope) = Z_OBJCE_P(EX(object)); - + if (OP2_TYPE != IS_CONST || (EX(fbc) = CACHED_POLYMORPHIC_PTR(opline->op2.literal->cache_slot, EX(called_scope))) == NULL) { zval *object = EX(object); @@ -2189,10 +2191,10 @@ } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - + if ((EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { EX(object) = NULL; - } else { + } else { if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -2428,9 +2430,9 @@ cv++; } } - + nested = EX(nested); - + zend_vm_stack_free(execute_data TSRMLS_CC); if (nested) { @@ -3093,7 +3095,7 @@ char *space; char *class_name; zend_execute_data *ptr; - + if (EG(active_op_array)->scope) { class_name = EG(active_op_array)->scope->name; space = "::"; @@ -3491,7 +3493,7 @@ zend_free_op free_op2; zval *offset = GET_OP2_ZVAL_PTR(BP_VAR_R); ulong hval; - + switch (Z_TYPE_P(offset)) { case IS_DOUBLE: hval = zend_dval_to_lval(Z_DVAL_P(offset)); @@ -3824,7 +3826,7 @@ SAVE_OPLINE(); container = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_UNSET); offset = GET_OP2_ZVAL_PTR(BP_VAR_R); - + if (OP1_TYPE != IS_VAR || container) { if (OP1_TYPE == IS_CV && container != &EG(uninitialized_zval_ptr)) { SEPARATE_ZVAL_IF_NOT_REF(container); @@ -4007,7 +4009,7 @@ if (!ce || !ce->get_iterator) { Z_ADDREF_P(array_ptr); } - } else if (OP1_TYPE == IS_CONST || + } else if (OP1_TYPE == IS_CONST || ((OP1_TYPE == IS_CV || OP1_TYPE == IS_VAR) && !Z_ISREF_P(array_ptr) && Z_REFCOUNT_P(array_ptr) > 1)) { @@ -4251,7 +4253,7 @@ if (zend_hash_quick_find(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value, (void **) &value) == FAILURE) { isset = 0; } - } else { + } else { isset = 0; } } else { @@ -4326,7 +4328,7 @@ SAVE_OPLINE(); container = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_IS); - + offset = GET_OP2_ZVAL_PTR(BP_VAR_R); if (Z_TYPE_PP(container) == IS_ARRAY && !prop_dim) { @@ -4701,7 +4703,7 @@ SAVE_OPLINE(); expr = GET_OP1_ZVAL_PTR(BP_VAR_R); - + if (Z_TYPE_P(expr) == IS_OBJECT && Z_OBJ_HT_P(expr)->get_class_entry) { result = instanceof_function(Z_OBJCE_P(expr), EX_T(opline->op2.var).class_entry TSRMLS_CC); } else { @@ -4783,9 +4785,9 @@ { zend_op *opline = EX(opline); zend_class_entry *ce = EX_T(opline->op1.var).class_entry; - + zend_do_bind_traits(ce TSRMLS_CC); - + ZEND_VM_NEXT_OPCODE(); } @@ -4796,7 +4798,7 @@ zend_uint catch_op_num = 0; int catched = 0; zval restored_error_reporting; - + void **stack_frame = (void**)(((char*)EX_Ts()) + (ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T)); @@ -4891,7 +4893,7 @@ { USE_OPLINE int ret; - + SAVE_OPLINE(); ret = zend_user_opcode_handlers[opline->opcode](ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_INTERNAL); LOAD_OPLINE(); Modified: php/php-src/trunk/Zend/zend_vm
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Fri, 22 Oct 2010 09:56:39 + Revision: http://svn.php.net/viewvc?view=revision&revision=304609 Log: Removed redundant check Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-10-22 09:53:29 UTC (rev 304608) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-10-22 09:56:39 UTC (rev 304609) @@ -4831,9 +4831,7 @@ if (EG(active_op_array)->try_catch_array[i].try_op > op_num) { /* further blocks will not be relevant... */ break; - } - if (op_num >= EG(active_op_array)->try_catch_array[i].try_op - && op_num < EG(active_op_array)->try_catch_array[i].catch_op) { + } else if (op_num < EG(active_op_array)->try_catch_array[i].catch_op) { catch_op_num = EX(op_array)->try_catch_array[i].catch_op; catched = 1; } Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-10-22 09:53:29 UTC (rev 304608) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-10-22 09:56:39 UTC (rev 304609) @@ -1043,9 +1043,7 @@ if (EG(active_op_array)->try_catch_array[i].try_op > op_num) { /* further blocks will not be relevant... */ break; - } - if (op_num >= EG(active_op_array)->try_catch_array[i].try_op - && op_num < EG(active_op_array)->try_catch_array[i].catch_op) { + } else if (op_num < EG(active_op_array)->try_catch_array[i].catch_op) { catch_op_num = EX(op_array)->try_catch_array[i].catch_op; catched = 1; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Tue, 10 Aug 2010 15:24:19 + Revision: http://svn.php.net/viewvc?view=revision&revision=302076 Log: Optimization (IS_TMP_VARs don't need reference counting) Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-08-10 14:44:50 UTC (rev 302075) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-08-10 15:24:19 UTC (rev 302076) @@ -3389,7 +3389,7 @@ CACHE_PTR(opline->op2.literal->cache_slot, c); } retval = &EX_T(opline->result.var).tmp_var; - INIT_PZVAL_COPY(retval, &c->value); + ZVAL_COPY_VALUE(retval, &c->value); zval_copy_ctor(retval); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-08-10 14:44:50 UTC (rev 302075) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-08-10 15:24:19 UTC (rev 302076) @@ -3276,7 +3276,7 @@ CACHE_PTR(opline->op2.literal->cache_slot, c); } retval = &EX_T(opline->result.var).tmp_var; - INIT_PZVAL_COPY(retval, &c->value); + ZVAL_COPY_VALUE(retval, &c->value); zval_copy_ctor(retval); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -13086,7 +13086,7 @@ CACHE_PTR(opline->op2.literal->cache_slot, c); } retval = &EX_T(opline->result.var).tmp_var; - INIT_PZVAL_COPY(retval, &c->value); + ZVAL_COPY_VALUE(retval, &c->value); zval_copy_ctor(retval); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -21675,7 +21675,7 @@ CACHE_PTR(opline->op2.literal->cache_slot, c); } retval = &EX_T(opline->result.var).tmp_var; - INIT_PZVAL_COPY(retval, &c->value); + ZVAL_COPY_VALUE(retval, &c->value); zval_copy_ctor(retval); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Tue, 27 Jul 2010 09:50:35 + Revision: http://svn.php.net/viewvc?view=revision&revision=301603 Log: Additional specialization Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h 2010-07-27 09:23:14 UTC (rev 301602) +++ php/php-src/trunk/Zend/zend_vm_def.h 2010-07-27 09:50:35 UTC (rev 301603) @@ -3751,7 +3751,9 @@ zend_free_op free_op1; SAVE_OPLINE(); - if (OP1_TYPE == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (OP1_TYPE == IS_CV && + OP2_TYPE == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EG(active_symbol_table)) { zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.var); @@ -3955,7 +3957,8 @@ SAVE_OPLINE(); - if (opline->extended_value & ZEND_FE_RESET_VARIABLE) { + if ((OP1_TYPE == IS_CV || OP1_TYPE == IS_VAR) && + (opline->extended_value & ZEND_FE_RESET_VARIABLE)) { array_ptr_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_R); if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) { MAKE_STD_ZVAL(array_ptr); @@ -4257,7 +4260,9 @@ zend_bool isset = 1; SAVE_OPLINE(); - if (OP1_TYPE == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (OP1_TYPE == IS_CV && + OP2_TYPE == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EX_CV(opline->op1.var)) { value = EX_CV(opline->op1.var); } else if (EG(active_symbol_table)) { Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h 2010-07-27 09:23:14 UTC (rev 301602) +++ php/php-src/trunk/Zend/zend_vm_execute.h 2010-07-27 09:50:35 UTC (rev 301603) @@ -2170,7 +2170,8 @@ SAVE_OPLINE(); - if (opline->extended_value & ZEND_FE_RESET_VARIABLE) { + if ((IS_CONST == IS_CV || IS_CONST == IS_VAR) && + (opline->extended_value & ZEND_FE_RESET_VARIABLE)) { array_ptr_ptr = NULL; if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) { MAKE_STD_ZVAL(array_ptr); @@ -3167,7 +3168,9 @@ SAVE_OPLINE(); - if (IS_CONST == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (IS_CONST == IS_CV && + IS_CONST == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EG(active_symbol_table)) { zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.var); @@ -3230,7 +3233,9 @@ zend_bool isset = 1; SAVE_OPLINE(); - if (IS_CONST == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (IS_CONST == IS_CV && + IS_CONST == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EX_CV(opline->op1.var)) { value = EX_CV(opline->op1.var); } else if (EG(active_symbol_table)) { @@ -4522,7 +4527,9 @@ SAVE_OPLINE(); - if (IS_CONST == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (IS_CONST == IS_CV && + IS_VAR == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EG(active_symbol_table)) { zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.var); @@ -4585,7 +4592,9 @@ zend_bool isset = 1; SAVE_OPLINE(); - if (IS_CONST == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (IS_CONST == IS_CV && + IS_VAR == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EX_CV(opline->op1.var)) { value = EX_CV(opline->op1.var); } else if (EG(active_symbol_table)) { @@ -5030,7 +5039,9 @@ SAVE_OPLINE(); - if (IS_CONST == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (IS_CONST == IS_CV && + IS_UNUSED == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EG(active_symbol_table)) { zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.var); @@ -5093,7 +5104,9 @@ zend_bool isset = 1; SAVE_OPLINE(); - if (IS_CONST == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (IS_CONST == IS_CV && + IS_UNUSED == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EX_CV(opline->op1.var)) { value = EX_CV(opline->op1.var); } else if (EG(active_symbol_table)) { @@ -6430,7 +6443,8 @@ SAVE_OPLINE(); - if (opline->extended_value & ZEND_FE_RESET_VARIABLE) { + if ((IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) && + (opline->extended_value & ZEND_FE_RESET_VARIABLE)) { array_ptr_ptr = NULL; if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) { MAKE_STD_ZVAL(array_ptr); @@ -7380,7 +7394,9 @@ zend_free_op free_op1; SAVE_OPLINE(); - if (IS_TMP_VAR == IS_CV && (opline->extended_value & ZEND_QUICK_SET)) { + if (IS_TMP_VAR == IS_CV && + IS_CONST == IS_UNUSED && + (opline->extended_value & ZEND_QUICK_SET)) { if (EG(active_symbol_table)) { zend_compiled_variable *cv = &CV_DEF_OF(opline->op1.var); @@ -7443,7 +7459,9 @@ zend_bool isset =
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Mon, 26 Jul 2010 12:40:32 + Revision: http://svn.php.net/viewvc?view=revision&revision=301568 Log: Removed deprecated check Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-07-26 12:38:21 UTC (rev 301567) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-07-26 12:40:32 UTC (rev 301568) @@ -1588,7 +1588,7 @@ zend_free_op free_op2; zval *value = *zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), GET_OP2_ZVAL_PTR(BP_VAR_R), OP2_TYPE, BP_VAR_R TSRMLS_CC); - SELECTIVE_PZVAL_LOCK(value, opline); + PZVAL_LOCK(value); AI_SET_PTR(&EX_T(opline->result.var), value); FREE_OP2(); } Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-07-26 12:38:21 UTC (rev 301567) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-07-26 12:40:32 UTC (rev 301568) @@ -2832,7 +2832,7 @@ zval *value = *zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); - SELECTIVE_PZVAL_LOCK(value, opline); + PZVAL_LOCK(value); AI_SET_PTR(&EX_T(opline->result.var), value); } @@ -7134,7 +7134,7 @@ zval *value = *zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), opline->op2.zv, IS_CONST, BP_VAR_R TSRMLS_CC); - SELECTIVE_PZVAL_LOCK(value, opline); + PZVAL_LOCK(value); AI_SET_PTR(&EX_T(opline->result.var), value); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Mon, 19 Jul 2010 15:04:51 + Revision: http://svn.php.net/viewvc?view=revision&revision=301403 Log: Use proper fetch types Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-07-19 14:34:34 UTC (rev 301402) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-07-19 15:04:51 UTC (rev 301403) @@ -335,7 +335,7 @@ { USE_OPLINE zend_free_op free_op1, free_op2, free_op_data1; - zval **object_ptr = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_W); + zval **object_ptr = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_RW); zval *object; zval *property = GET_OP2_ZVAL_PTR(BP_VAR_R); zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); @@ -599,7 +599,7 @@ int have_get_ptr = 0; SAVE_OPLINE(); - object_ptr = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_W); + object_ptr = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_RW); property = GET_OP2_ZVAL_PTR(BP_VAR_R); retval = &EX_T(opline->result.var).var.ptr; @@ -703,7 +703,7 @@ int have_get_ptr = 0; SAVE_OPLINE(); - object_ptr = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_W); + object_ptr = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_RW); property = GET_OP2_ZVAL_PTR(BP_VAR_R); retval = &EX_T(opline->result.var).tmp_var; @@ -1537,7 +1537,7 @@ zval *property; SAVE_OPLINE(); - container = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_R); + container = GET_OP1_OBJ_ZVAL_PTR_PTR(BP_VAR_UNSET); property = GET_OP2_ZVAL_PTR(BP_VAR_R); if (OP1_TYPE == IS_CV) { Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-07-19 14:34:34 UTC (rev 301402) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-07-19 15:04:51 UTC (rev 301403) @@ -26872,7 +26872,7 @@ { USE_OPLINE zend_free_op free_op_data1; - zval **object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + zval **object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_RW(EX_CVs(), opline->op1.var TSRMLS_CC); zval *object; zval *property = opline->op2.zv; zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); @@ -27134,7 +27134,7 @@ int have_get_ptr = 0; SAVE_OPLINE(); - object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_RW(EX_CVs(), opline->op1.var TSRMLS_CC); property = opline->op2.zv; retval = &EX_T(opline->result.var).var.ptr; @@ -27238,7 +27238,7 @@ int have_get_ptr = 0; SAVE_OPLINE(); - object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_RW(EX_CVs(), opline->op1.var TSRMLS_CC); property = opline->op2.zv; retval = &EX_T(opline->result.var).tmp_var; @@ -27854,7 +27854,7 @@ zval *property; SAVE_OPLINE(); - container = _get_zval_ptr_ptr_cv_BP_VAR_R(EX_CVs(), opline->op1.var TSRMLS_CC); + container = _get_zval_ptr_ptr_cv_BP_VAR_UNSET(EX_CVs(), opline->op1.var TSRMLS_CC); property = opline->op2.zv; if (IS_CV == IS_CV) { @@ -28938,7 +28938,7 @@ { USE_OPLINE zend_free_op free_op2, free_op_data1; - zval **object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + zval **object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_RW(EX_CVs(), opline->op1.var TSRMLS_CC); zval *object; zval *property = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); @@ -29201,7 +29201,7 @@ int have_get_ptr = 0; SAVE_OPLINE(); - object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_RW(EX_CVs(), opline->op1.var TSRMLS_CC); property = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); retval = &EX_T(opline->result.var).var.ptr; @@ -29305,7 +29305,7 @@ int have_get_ptr = 0; SAVE_OPLINE(); - object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_W(EX_CVs(), opline->op1.var TSRMLS_CC); + object_ptr = _get_zval_ptr_ptr_cv_BP_VAR_RW(EX_CVs(), opline->op1.var TSRMLS_CC); property = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); retval = &EX_T(opline->result.var).tmp_var; @@ -29767,7 +29767,7 @@ zval *property; SAVE_OPLINE(); - container = _get_zval_ptr_
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Mon, 19 Jul 2010 14:34:34 + Revision: http://svn.php.net/viewvc?view=revision&revision=301402 Log: Removed invalid checks Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-07-19 14:19:52 UTC (rev 301401) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-07-19 14:34:34 UTC (rev 301402) @@ -901,9 +901,7 @@ zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets"); } if (OP1_TYPE == IS_VAR && UNEXPECTED(*var_ptr == &EG(error_zval))) { - if (RETURN_VALUE_USED(opline)) { - ZVAL_NULL(&EX_T(opline->result.var).tmp_var); - } + ZVAL_NULL(&EX_T(opline->result.var).tmp_var); FREE_OP1_VAR_PTR(); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -946,9 +944,7 @@ zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets"); } if (OP1_TYPE == IS_VAR && UNEXPECTED(*var_ptr == &EG(error_zval))) { - if (RETURN_VALUE_USED(opline)) { - ZVAL_NULL(&EX_T(opline->result.var).tmp_var); - } + ZVAL_NULL(&EX_T(opline->result.var).tmp_var); FREE_OP1_VAR_PTR(); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-07-19 14:19:52 UTC (rev 301401) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-07-19 14:34:34 UTC (rev 301402) @@ -9870,9 +9870,7 @@ zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets"); } if (IS_VAR == IS_VAR && UNEXPECTED(*var_ptr == &EG(error_zval))) { - if (RETURN_VALUE_USED(opline)) { - ZVAL_NULL(&EX_T(opline->result.var).tmp_var); - } + ZVAL_NULL(&EX_T(opline->result.var).tmp_var); if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -9915,9 +9913,7 @@ zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets"); } if (IS_VAR == IS_VAR && UNEXPECTED(*var_ptr == &EG(error_zval))) { - if (RETURN_VALUE_USED(opline)) { - ZVAL_NULL(&EX_T(opline->result.var).tmp_var); - } + ZVAL_NULL(&EX_T(opline->result.var).tmp_var); if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -25552,9 +25548,7 @@ zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets"); } if (IS_CV == IS_VAR && UNEXPECTED(*var_ptr == &EG(error_zval))) { - if (RETURN_VALUE_USED(opline)) { - ZVAL_NULL(&EX_T(opline->result.var).tmp_var); - } + ZVAL_NULL(&EX_T(opline->result.var).tmp_var); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -25596,9 +25590,7 @@ zend_error_noreturn(E_ERROR, "Cannot increment/decrement overloaded objects nor string offsets"); } if (IS_CV == IS_VAR && UNEXPECTED(*var_ptr == &EG(error_zval))) { - if (RETURN_VALUE_USED(opline)) { - ZVAL_NULL(&EX_T(opline->result.var).tmp_var); - } + ZVAL_NULL(&EX_T(opline->result.var).tmp_var); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Mon, 24 May 2010 14:46:31 + Revision: http://svn.php.net/viewvc?view=revision&revision=299693 Log: Fixed exception handling in GOTO VM Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-05-24 14:11:39 UTC (rev 299692) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-05-24 14:46:31 UTC (rev 299693) @@ -2895,6 +2895,7 @@ { USE_OPLINE zend_class_entry *ce, *catch_ce; + zval *exception; SAVE_OPLINE(); /* Check whether an exception has been thrown, if not, jump over code */ @@ -2928,6 +2929,7 @@ } } + exception = EG(exception); if (!EG(active_symbol_table)) { if (EX_CV(opline->op2.var)) { zval_ptr_dtor(EX_CV(opline->op2.var)); @@ -2939,8 +2941,13 @@ zend_hash_quick_update(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value, &EG(exception), sizeof(zval *), (void**)&EX_CV(opline->op2.var)); } - EG(exception) = NULL; - ZEND_VM_NEXT_OPCODE(); + if (UNEXPECTED(EG(exception) != exception)) { + EG(exception) = NULL; + HANDLE_EXCEPTION(); + } else { + EG(exception) = NULL; + ZEND_VM_NEXT_OPCODE(); + } } ZEND_VM_HANDLER(65, ZEND_SEND_VAL, CONST|TMP|VAR|CV, ANY) Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-05-24 14:11:39 UTC (rev 299692) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-05-24 14:46:31 UTC (rev 299693) @@ -5628,6 +5628,7 @@ { USE_OPLINE zend_class_entry *ce, *catch_ce; + zval *exception; SAVE_OPLINE(); /* Check whether an exception has been thrown, if not, jump over code */ @@ -5661,6 +5662,7 @@ } } + exception = EG(exception); if (!EG(active_symbol_table)) { if (EX_CV(opline->op2.var)) { zval_ptr_dtor(EX_CV(opline->op2.var)); @@ -5672,8 +5674,13 @@ zend_hash_quick_update(EG(active_symbol_table), cv->name, cv->name_len+1, cv->hash_value, &EG(exception), sizeof(zval *), (void**)&EX_CV(opline->op2.var)); } - EG(exception) = NULL; - ZEND_VM_NEXT_OPCODE(); + if (UNEXPECTED(EG(exception) != exception)) { + EG(exception) = NULL; + HANDLE_EXCEPTION(); + } else { + EG(exception) = NULL; + ZEND_VM_NEXT_OPCODE(); + } } static int ZEND_FASTCALL ZEND_CASE_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
felipe Tue, 04 May 2010 18:31:40 + Revision: http://svn.php.net/viewvc?view=revision&revision=298987 Log: - Fix trait flag identification Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-05-04 18:21:00 UTC (rev 298986) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-05-04 18:31:40 UTC (rev 298987) @@ -3230,7 +3230,7 @@ if (EX_T(opline->op1.var).class_entry->ce_flags & ZEND_ACC_INTERFACE) { class_type = "interface"; - } else if (EX_T(opline->op1.var).class_entry->ce_flags & ZEND_ACC_TRAIT) { + } else if ((EX_T(opline->op1.var).class_entry->ce_flags & ~ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) & ZEND_ACC_TRAIT) { class_type = "trait"; } else { class_type = "abstract class"; Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-05-04 18:21:00 UTC (rev 298986) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-05-04 18:31:40 UTC (rev 298987) @@ -520,7 +520,7 @@ if (EX_T(opline->op1.var).class_entry->ce_flags & ZEND_ACC_INTERFACE) { class_type = "interface"; - } else if (EX_T(opline->op1.var).class_entry->ce_flags & ZEND_ACC_TRAIT) { + } else if ((EX_T(opline->op1.var).class_entry->ce_flags & ~ZEND_ACC_EXPLICIT_ABSTRACT_CLASS) & ZEND_ACC_TRAIT) { class_type = "trait"; } else { class_type = "abstract class"; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Tue, 27 Apr 2010 12:23:29 + Revision: http://svn.php.net/viewvc?view=revision&revision=298655 Log: ws Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-04-27 12:19:40 UTC (rev 298654) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-04-27 12:23:29 UTC (rev 298655) @@ -2374,9 +2374,9 @@ { USE_OPLINE zend_literal *func_name; - - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope)); - + + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope)); + func_name = opline->op2.literal + 1; if (zend_hash_quick_find(EG(function_table), Z_STRVAL(func_name->constant), Z_STRLEN(func_name->constant)+1, func_name->hash_value, (void **) &EX(fbc))==FAILURE) { func_name++; Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-04-27 12:19:40 UTC (rev 298654) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-04-27 12:23:29 UTC (rev 298655) @@ -926,7 +926,7 @@ USE_OPLINE zend_literal *func_name; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope)); func_name = opline->op2.literal + 1; if (zend_hash_quick_find(EG(function_table), Z_STRVAL(func_name->constant), Z_STRLEN(func_name->constant)+1, func_name->hash_value, (void **) &EX(fbc))==FAILURE) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
felipe Thu, 22 Apr 2010 13:28:53 + Revision: http://svn.php.net/viewvc?view=revision&revision=298319 Log: - Removed unused variables Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2010-04-22 13:03:44 UTC (rev 298318) +++ php/php-src/trunk/Zend/zend_vm_def.h2010-04-22 13:28:53 UTC (rev 298319) @@ -339,7 +339,6 @@ zval *object; zval *property = GET_OP2_ZVAL_PTR(BP_VAR_R); zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); - znode_op *result = &opline->result; int have_get_ptr = 0; if (OP1_TYPE == IS_VAR && UNEXPECTED(object_ptr == NULL)) { @@ -4500,8 +4499,6 @@ ZEND_VM_HANDLER(101, ZEND_EXT_STMT, ANY, ANY) { - USE_OPLINE - SAVE_OPLINE(); if (!EG(no_extensions)) { zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, EX(op_array) TSRMLS_CC); @@ -4512,8 +4509,6 @@ ZEND_VM_HANDLER(102, ZEND_EXT_FCALL_BEGIN, ANY, ANY) { - USE_OPLINE - SAVE_OPLINE(); if (!EG(no_extensions)) { zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, EX(op_array) TSRMLS_CC); Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2010-04-22 13:03:44 UTC (rev 298318) +++ php/php-src/trunk/Zend/zend_vm_execute.h2010-04-22 13:28:53 UTC (rev 298319) @@ -583,8 +583,6 @@ static int ZEND_FASTCALL ZEND_EXT_STMT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { - USE_OPLINE - SAVE_OPLINE(); if (!EG(no_extensions)) { zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, EX(op_array) TSRMLS_CC); @@ -595,8 +593,6 @@ static int ZEND_FASTCALL ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { - USE_OPLINE - SAVE_OPLINE(); if (!EG(no_extensions)) { zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, EX(op_array) TSRMLS_CC); @@ -10245,7 +10241,6 @@ zval *object; zval *property = opline->op2.zv; zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); - znode_op *result = &opline->result; int have_get_ptr = 0; if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) { @@ -12225,7 +12220,6 @@ zval *object; zval *property = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); - znode_op *result = &opline->result; int have_get_ptr = 0; if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) { @@ -14150,7 +14144,6 @@ zval *object; zval *property = _get_zval_ptr_var(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); - znode_op *result = &opline->result; int have_get_ptr = 0; if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) { @@ -15850,7 +15843,6 @@ zval *object; zval *property = NULL; zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); - znode_op *result = &opline->result; int have_get_ptr = 0; if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) { @@ -16751,7 +16743,6 @@ zval *object; zval *property = _get_zval_ptr_cv_BP_VAR_R(EX_CVs(), opline->op2.var TSRMLS_CC); zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); - znode_op *result = &opline->result; int have_get_ptr = 0; if (IS_VAR == IS_VAR && UNEXPECTED(object_ptr == NULL)) { @@ -18531,7 +18522,6 @@ zval *object; zval *property = opline->op2.zv; zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); - znode_op *result = &opline->result; int have_get_ptr = 0; if (IS_UNUSED == IS_VAR && UNEXPECTED(object_ptr == NULL)) { @@ -19748,7 +19738,6 @@ zval *object; zval *property = _get_zval_ptr_tmp(opline->op2.var, EX_Ts(), &free_op2 TSRMLS_CC); zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, EX_Ts(), &free_op_data1, BP_VAR_R); - znode_op *result = &opline->result;
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Mon, 21 Dec 2009 15:29:21 + Revision: http://svn.php.net/viewvc?view=revision&revision=292416 Log: Fixed Unicode support Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2009-12-21 15:29:20 UTC (rev 292415) +++ php/php-src/trunk/Zend/zend_vm_def.h2009-12-21 15:29:21 UTC (rev 292416) @@ -4406,8 +4406,8 @@ zend_op *opline = EX(opline); zend_class_entry **pce, **pce_orig; - if (zend_hash_find(EG(class_table), Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void**)&pce) == FAILURE || - (zend_hash_find(EG(class_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), (void**)&pce_orig) == SUCCESS && + if (zend_u_hash_find(EG(class_table), Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant)+1, (void**)&pce) == FAILURE || + (zend_u_hash_find(EG(class_table), Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant), (void**)&pce_orig) == SUCCESS && *pce != *pce_orig)) { do_bind_inherited_class(opline, EG(class_table), EX_T(opline->extended_value).class_entry, 0 TSRMLS_CC); } Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2009-12-21 15:29:20 UTC (rev 292415) +++ php/php-src/trunk/Zend/zend_vm_execute.h2009-12-21 15:29:21 UTC (rev 292416) @@ -574,8 +574,8 @@ zend_op *opline = EX(opline); zend_class_entry **pce, **pce_orig; - if (zend_hash_find(EG(class_table), Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)+1, (void**)&pce) == FAILURE || - (zend_hash_find(EG(class_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), (void**)&pce_orig) == SUCCESS && + if (zend_u_hash_find(EG(class_table), Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant)+1, (void**)&pce) == FAILURE || + (zend_u_hash_find(EG(class_table), Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant), (void**)&pce_orig) == SUCCESS && *pce != *pce_orig)) { do_bind_inherited_class(opline, EG(class_table), EX_T(opline->extended_value).class_entry, 0 TSRMLS_CC); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h
dmitry Wed, 09 Dec 2009 10:50:10 + Revision: http://svn.php.net/viewvc?view=revision&revision=291915 Log: Fixed wrong result of empty($_GET) in case of uninitialized $_GET Changed paths: U php/php-src/trunk/Zend/zend_vm_def.h U php/php-src/trunk/Zend/zend_vm_execute.h Modified: php/php-src/trunk/Zend/zend_vm_def.h === --- php/php-src/trunk/Zend/zend_vm_def.h2009-12-09 10:39:42 UTC (rev 291914) +++ php/php-src/trunk/Zend/zend_vm_def.h2009-12-09 10:50:10 UTC (rev 291915) @@ -4047,9 +4047,24 @@ isset = 0; } } else { - target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC); - if (zend_u_hash_find(target_symbol_table, Z_TYPE_P(varname), Z_UNIVAL_P(varname), Z_UNILEN_P(varname)+1, (void **) &value) == FAILURE) { - isset = 0; + if (opline->op2.u.EA.type == ZEND_FETCH_AUTO_GLOBAL) { + if (CG(auto_globals_cache)[opline->op2.u.var]) { + value = CG(auto_globals_cache)[opline->op2.u.var]; + } else { + zend_auto_global *auto_global = NULL; + + zend_u_is_auto_global_ex(Z_TYPE_P(varname), Z_UNIVAL_P(varname), Z_UNILEN_P(varname), 1, &auto_global TSRMLS_CC); + if (zend_u_hash_find(&EG(symbol_table), Z_TYPE_P(varname), Z_UNIVAL_P(varname), Z_UNILEN_P(varname)+1, (void **) &value) == FAILURE) { + isset = 0; + } else if (auto_global && (!auto_global->armed || !auto_global->runtime)) { + CG(auto_globals_cache)[opline->op2.u.var] = value; + } + } + } else { + target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC); + if (zend_u_hash_find(target_symbol_table, Z_TYPE_P(varname), Z_UNIVAL_P(varname), Z_UNILEN_P(varname)+1, (void **) &value) == FAILURE) { + isset = 0; + } } } Modified: php/php-src/trunk/Zend/zend_vm_execute.h === --- php/php-src/trunk/Zend/zend_vm_execute.h2009-12-09 10:39:42 UTC (rev 291914) +++ php/php-src/trunk/Zend/zend_vm_execute.h2009-12-09 10:50:10 UTC (rev 291915) @@ -2304,9 +2304,24 @@ isset = 0; } } else { - target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC); - if (zend_u_hash_find(target_symbol_table, Z_TYPE_P(varname), Z_UNIVAL_P(varname), Z_UNILEN_P(varname)+1, (void **) &value) == FAILURE) { - isset = 0; + if (opline->op2.u.EA.type == ZEND_FETCH_AUTO_GLOBAL) { + if (CG(auto_globals_cache)[opline->op2.u.var]) { + value = CG(auto_globals_cache)[opline->op2.u.var]; + } else { + zend_auto_global *auto_global = NULL; + + zend_u_is_auto_global_ex(Z_TYPE_P(varname), Z_UNIVAL_P(varname), Z_UNILEN_P(varname), 1, &auto_global TSRMLS_CC); + if (zend_u_hash_find(&EG(symbol_table), Z_TYPE_P(varname), Z_UNIVAL_P(varname), Z_UNILEN_P(varname)+1, (void **) &value) == FAILURE) { + isset = 0; + } else if (auto_global && (!auto_global->armed || !auto_global->runtime)) { + CG(auto_globals_cache)[opline->op2.u.var] = value; + } + } + } else { + target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), BP_VAR_IS, varname TSRMLS_CC); + if (zend_u_hash_find(target_symbol_table, Z_TYPE_P(varname), Z_UNIVAL_P(varname), Z_UNILEN_P(varname)+1, (void **) &value) == FAILURE) { + isset = 0; + } } } @@ -5729,9 +5744,24 @@ isset = 0; } } else { - target_symbol_tabl