]> granicus.if.org Git - php/commitdiff
Fixed ability to build non-specialized GOTO VM
authorDmitry Stogov <dmitry@zend.com>
Mon, 2 Dec 2013 06:59:32 +0000 (10:59 +0400)
committerDmitry Stogov <dmitry@zend.com>
Mon, 2 Dec 2013 06:59:32 +0000 (10:59 +0400)
Zend/zend_vm_gen.php

index d2f51925dc012b2790d874a43ce3160c66c4db84..37deae865768b2398c0f23d29a2f63d63226af68 100644 (file)
@@ -886,9 +886,16 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name,
                                                        out($f,"#undef CHECK_EXCEPTION\n");
                                                        out($f,"#undef HANDLE_EXCEPTION\n");
                                                        out($f,"#undef HANDLE_EXCEPTION_LEAVE\n");
-                                                       out($f,"#define CHECK_EXCEPTION() if (UNEXPECTED(EG(exception) != NULL)) goto ZEND_HANDLE_EXCEPTION_SPEC_HANDLER\n");
-                                                       out($f,"#define HANDLE_EXCEPTION() goto ZEND_HANDLE_EXCEPTION_SPEC_HANDLER\n");
-                                                       out($f,"#define HANDLE_EXCEPTION_LEAVE() goto ZEND_HANDLE_EXCEPTION_SPEC_HANDLER\n");
+                                                       if (ZEND_VM_SPEC) {
+                                                               out($f,"#define CHECK_EXCEPTION() if (UNEXPECTED(EG(exception) != NULL)) goto ZEND_HANDLE_EXCEPTION_SPEC_HANDLER\n");
+                                                               out($f,"#define HANDLE_EXCEPTION() goto ZEND_HANDLE_EXCEPTION_SPEC_HANDLER\n");
+                                                               out($f,"#define HANDLE_EXCEPTION_LEAVE() goto ZEND_HANDLE_EXCEPTION_SPEC_HANDLER\n");
+                                                       } else {
+                                                               out($f,"#define CHECK_EXCEPTION() if (UNEXPECTED(EG(exception) != NULL)) goto ZEND_HANDLE_EXCEPTION_HANDLER\n");
+                                                               out($f,"#define HANDLE_EXCEPTION() goto ZEND_HANDLE_EXCEPTION_HANDLER\n");
+                                                               out($f,"#define HANDLE_EXCEPTION_LEAVE() goto ZEND_HANDLE_EXCEPTION_HANDLER\n");
+                                                       }
+                                                       
                                                        out($f,"#define LOAD_REGS()                do {Ts = EX(Ts); CVs = EX(CVs);} while (0)\n");
                                                        out($f,"#define ZEND_VM_CONTINUE() goto *(void**)(OPLINE->handler)\n");
                                                        out($f,"#define ZEND_VM_RETURN()   EG(in_execution) = original_in_execution; return\n");