dmitry Fri, 23 Apr 2010 08:56:03 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=298369
Log: Use fast class fetch function Changed paths: U php/php-src/trunk/Zend/zend_compile.c U php/php-src/trunk/Zend/zend_execute_API.c 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_compile.c =================================================================== --- php/php-src/trunk/Zend/zend_compile.c 2010-04-23 08:06:49 UTC (rev 298368) +++ php/php-src/trunk/Zend/zend_compile.c 2010-04-23 08:56:03 UTC (rev 298369) @@ -4506,10 +4506,11 @@ opline = get_next_op(CG(active_op_array) TSRMLS_CC); opline->opcode = ZEND_ADD_TRAIT; - SET_NODE(opline->op1, &CG(implementing_class)); + SET_NODE(opline->op1, &CG(implementing_class)); zend_resolve_class_name(trait_name, &opline->extended_value, 0 TSRMLS_CC); opline->extended_value = (opline->extended_value & ~ZEND_FETCH_CLASS_MASK) | ZEND_FETCH_CLASS_TRAIT; - SET_NODE(opline->op2, trait_name); + opline->op2_type = IS_CONST; + opline->op2.constant = zend_add_class_name_literal(CG(active_op_array), &trait_name->u.constant TSRMLS_CC); CG(active_class_entry)->num_traits++; } /* }}} */ Modified: php/php-src/trunk/Zend/zend_execute_API.c =================================================================== --- php/php-src/trunk/Zend/zend_execute_API.c 2010-04-23 08:06:49 UTC (rev 298368) +++ php/php-src/trunk/Zend/zend_execute_API.c 2010-04-23 08:56:03 UTC (rev 298369) @@ -1584,6 +1584,8 @@ if ((fetch_type & ZEND_FETCH_CLASS_SILENT) == 0 && !EG(exception)) { if ((fetch_type & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_INTERFACE) { zend_error(E_ERROR, "Interface '%s' not found", class_name); + } else if ((fetch_type & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_TRAIT) { + zend_error(E_ERROR, "Trait '%s' not found", class_name); } else { zend_error(E_ERROR, "Class '%s' not found", class_name); } Modified: php/php-src/trunk/Zend/zend_vm_def.h =================================================================== --- php/php-src/trunk/Zend/zend_vm_def.h 2010-04-23 08:06:49 UTC (rev 298368) +++ php/php-src/trunk/Zend/zend_vm_def.h 2010-04-23 08:56:03 UTC (rev 298369) @@ -4642,8 +4642,9 @@ { zend_op *opline = EX(opline); zend_class_entry *ce = EX_T(opline->op1.var).class_entry; - zend_class_entry *trait = zend_fetch_class(Z_STRVAL_P(opline->op2.zv), + zend_class_entry *trait = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), + opline->op2.literal + 1, opline->extended_value TSRMLS_CC); if (trait) { Modified: php/php-src/trunk/Zend/zend_vm_execute.h =================================================================== --- php/php-src/trunk/Zend/zend_vm_execute.h 2010-04-23 08:06:49 UTC (rev 298368) +++ php/php-src/trunk/Zend/zend_vm_execute.h 2010-04-23 08:56:03 UTC (rev 298369) @@ -685,8 +685,9 @@ { zend_op *opline = EX(opline); zend_class_entry *ce = EX_T(opline->op1.var).class_entry; - zend_class_entry *trait = zend_fetch_class(Z_STRVAL_P(opline->op2.zv), + zend_class_entry *trait = zend_fetch_class_by_name(Z_STRVAL_P(opline->op2.zv), Z_STRLEN_P(opline->op2.zv), + opline->op2.literal + 1, opline->extended_value TSRMLS_CC); if (trait) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php