zend_vm_execute.skl 950 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. {%DEFINES%}
  2. ZEND_API void {%EXECUTOR_NAME%}_ex(zend_execute_data *execute_data TSRMLS_DC)
  3. {
  4. DCL_OPLINE
  5. zend_bool original_in_execution;
  6. {%HELPER_VARS%}
  7. {%INTERNAL_LABELS%}
  8. original_in_execution = EG(in_execution);
  9. EG(in_execution) = 1;
  10. if (0) {
  11. zend_vm_enter:
  12. execute_data = i_create_execute_data_from_op_array(EG(active_op_array), 1 TSRMLS_CC);
  13. }
  14. LOAD_REGS();
  15. LOAD_OPLINE();
  16. while (1) {
  17. {%ZEND_VM_CONTINUE_LABEL%}
  18. #ifdef ZEND_WIN32
  19. if (EG(timed_out)) {
  20. zend_timeout(0);
  21. }
  22. #endif
  23. {%ZEND_VM_DISPATCH%} {
  24. {%INTERNAL_EXECUTOR%}
  25. }
  26. }
  27. zend_error_noreturn(E_ERROR, "Arrived at end of main loop which shouldn't happen");
  28. }
  29. ZEND_API void zend_{%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
  30. {
  31. if (EG(exception)) {
  32. return;
  33. }
  34. zend_{%EXECUTOR_NAME%}_ex(i_create_execute_data_from_op_array(op_array, 0 TSRMLS_CC) TSRMLS_CC);
  35. }
  36. {%EXTERNAL_EXECUTOR%}
  37. void {%INITIALIZER_NAME%}(void)
  38. {
  39. {%EXTERNAL_LABELS%}
  40. }