]> granicus.if.org Git - php/commitdiff
micro-optimisation
authorDmitry Stogov <dmitry@zend.com>
Mon, 16 May 2016 23:09:29 +0000 (02:09 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 16 May 2016 23:09:29 +0000 (02:09 +0300)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index bb430dccd524f87f7c323737b6ed03cfa3b81a86..0e0e1966d16b49d8ed7d27f8858628f32d757ea6 100644 (file)
@@ -2487,7 +2487,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
        zend_execute_data *old_execute_data;
        uint32_t call_info = EX_CALL_INFO();
 
-       if (EXPECTED(ZEND_CALL_KIND_EX(call_info) == ZEND_CALL_NESTED_FUNCTION)) {
+       if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP)) == 0)) {
                i_free_compiled_variables(execute_data);
                if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_ALLOCATED))) {
                        if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
@@ -2548,7 +2548,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
 
                LOAD_NEXT_OPLINE();
                ZEND_VM_LEAVE();
-       } else if (EXPECTED((ZEND_CALL_KIND_EX(call_info) & ZEND_CALL_TOP) == 0)) {
+       } else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
                zend_detach_symbol_table(execute_data);
                destroy_op_array(&EX(func)->op_array);
                efree_size(EX(func), sizeof(zend_op_array));
@@ -2565,7 +2565,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
                LOAD_NEXT_OPLINE();
                ZEND_VM_LEAVE();
        } else {
-               if (ZEND_CALL_KIND_EX(call_info) == ZEND_CALL_TOP_FUNCTION) {
+               if (EXPECTED((call_info & ZEND_CALL_CODE) == 0)) {
                        i_free_compiled_variables(execute_data);
                        if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS))) {
                                if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
index d729f83ac30309a8f76148fea8045dd1d5e1477b..c5d802c2e1bd713e021cce3c31a14c54b3e99b4a 100644 (file)
@@ -476,7 +476,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
        zend_execute_data *old_execute_data;
        uint32_t call_info = EX_CALL_INFO();
 
-       if (EXPECTED(ZEND_CALL_KIND_EX(call_info) == ZEND_CALL_NESTED_FUNCTION)) {
+       if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP)) == 0)) {
                i_free_compiled_variables(execute_data);
                if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_ALLOCATED))) {
                        if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
@@ -537,7 +537,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
 
                LOAD_NEXT_OPLINE();
                ZEND_VM_LEAVE();
-       } else if (EXPECTED((ZEND_CALL_KIND_EX(call_info) & ZEND_CALL_TOP) == 0)) {
+       } else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
                zend_detach_symbol_table(execute_data);
                destroy_op_array(&EX(func)->op_array);
                efree_size(EX(func), sizeof(zend_op_array));
@@ -554,7 +554,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
                LOAD_NEXT_OPLINE();
                ZEND_VM_LEAVE();
        } else {
-               if (ZEND_CALL_KIND_EX(call_info) == ZEND_CALL_TOP_FUNCTION) {
+               if (EXPECTED((call_info & ZEND_CALL_CODE) == 0)) {
                        i_free_compiled_variables(execute_data);
                        if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS))) {
                                if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {