[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_vm_def.h zend_vm_execute.h

2011-05-05 Thread Dmitry Stogov
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

2011-03-15 Thread Stanislav Malyshev
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

2010-10-22 Thread Dmitry Stogov
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

2010-08-10 Thread Dmitry Stogov
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

2010-07-27 Thread Dmitry Stogov
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

2010-07-26 Thread Dmitry Stogov
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

2010-07-19 Thread Dmitry Stogov
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

2010-07-19 Thread Dmitry Stogov
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

2010-05-24 Thread Dmitry Stogov
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

2010-05-04 Thread Felipe Pena
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

2010-04-27 Thread Dmitry Stogov
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

2010-04-22 Thread Felipe Pena
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

2009-12-21 Thread Dmitry Stogov
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

2009-12-09 Thread Dmitry Stogov
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