Changeset 477
- Timestamp:
- 08/19/2007 02:15:51 PM (16 months ago)
- Location:
- trunk
- Files:
-
- 3 modified
-
optimizer.c (modified) (4 diffs)
-
optimizer.h (modified) (1 diff)
-
xcache.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/optimizer.c
r476 r477 7 7 /* the "vector" stack */ 8 8 #include "stack.h" 9 #include "xcache_globals.h" 9 10 10 11 #ifdef DEBUG … … 19 20 # define XCACHE_IS_CV 16 20 21 #endif 21 #define optimized_flag done_pass_two22 22 23 23 typedef int bbid_t; … … 516 516 } 517 517 518 /* don't optimize twice */519 if (op_array->optimized_flag) {520 return 0;521 }522 op_array->optimized_flag = 1;523 524 518 #ifdef DEBUG 525 519 # if 0 … … 557 551 } 558 552 /* }}} */ 559 static int xc_clear_flag_optimized(zend_op_array *op_array TSRMLS_DC) /* {{{ */ 560 { 561 op_array->done_pass_two = 0; 562 return 0; 563 } 564 /* }}} */ 565 void xc_optimize(zend_op_array *op_array TSRMLS_DC) /* {{{ */ 566 { 567 xc_compile_result_t cr; 568 569 if (!op_array) { 570 return; 571 } 572 573 xc_compile_result_init_cur(&cr, op_array TSRMLS_CC); 574 575 xc_apply_op_array(&cr, (apply_func_t) xc_undo_pass_two TSRMLS_CC); 576 /* op_array->done_pass_two is now used as if it's op_array->flag_optimized */ 577 xc_apply_op_array(&cr, (apply_func_t) xc_optimize_op_array TSRMLS_CC); 578 xc_apply_op_array(&cr, (apply_func_t) xc_clear_flag_optimized TSRMLS_CC); 579 xc_apply_op_array(&cr, (apply_func_t) xc_redo_pass_two TSRMLS_CC); 580 581 xc_compile_result_free(&cr); 582 } 583 /* }}} */ 553 void xc_optimizer_op_array_handler(zend_op_array *op_array) /* {{{ */ 554 { 555 TSRMLS_FETCH(); 556 if (XG(optimizer)) { 557 xc_optimize_op_array(op_array TSRMLS_CC); 558 } 559 } 560 /* }}} */ -
trunk/optimizer.h
r393 r477 2 2 #include "xcache.h" 3 3 4 void xc_optimize (zend_op_array *op_array TSRMLS_DC);4 void xc_optimizer_op_array_handler(zend_op_array *op_array); -
trunk/xcache.c
r474 r477 1000 1000 } 1001 1001 1002 #ifdef HAVE_XCACHE_OPTIMIZER1003 if (XG(optimizer)) {1004 xc_optimize(op_array TSRMLS_CC);1005 }1006 #endif1007 1002 /* }}} */ 1008 1003 /* {{{ prepare */ … … 1200 1195 if (!XG(cacher)) { 1201 1196 op_array = old_compile_file(h, type TSRMLS_CC); 1202 #ifdef HAVE_XCACHE_OPTIMIZER1203 if (XG(optimizer)) {1204 xc_optimize(op_array TSRMLS_CC);1205 }1206 #endif1207 1197 return op_array; 1208 1198 } … … 3051 3041 NULL, /* deactivate_func_t */ 3052 3042 NULL, /* message_handler_func_t */ 3043 #ifdef HAVE_XCACHE_OPTIMIZER 3044 xc_optimizer_op_array_handler, 3045 #else 3053 3046 NULL, /* op_array_handler_func_t */ 3047 #endif 3054 3048 xcache_statement_handler, 3055 3049 xcache_fcall_begin_handler,

