Ejemplo n.º 1
0
 function expr(&$bc)
 {
     $o = "";
     if (is_array($bc)) {
         $type = $bc[0];
         switch ($type) {
             case JS_ASSIGN:
                 return jsa::assign($bc);
             case JS_MATH:
                 return jsa::math($bc);
             case JS_CMP:
                 return jsa::cmp($bc);
             case JS_STR:
                 return 'jsrt::ref(' . jsa::expr($bc[1]) . ')';
             case JS_VALUE:
                 return 'jsrt::ref(' . jsa::expr($bc[1]) . ')';
             case JS_VAR:
                 return jsa::variable($bc);
             case JS_FCALL:
                 return jsa::fcall($bc);
             default:
                 jsa::err("expression fault <<" . substr(serialize($bc), 0, 128) . ">>");
         }
     } else {
         return $bc;
         // must be literal value
     }
 }
Ejemplo n.º 2
0
function jse_run($flags = JSE_ACCEL)
{
    // interrupt every 1000 low-level statements
    if ($flags & JSE_TICKS) {
        register_tick_function(array("jsrt", "tick_safe"));
        declare (ticks=1000);
    }
    #-- check for accelerator/assembler presence
    if ($flags & JSE_ACCEL && class_exists("jsa") && class_exists("jsrt")) {
        eval(jsa::assemble(NULL, $flags & JSE_TICKS));
    } else {
        jsi::run();
    }
    #-- clean up
    if ($flags & JSE_TICKS) {
        unregister_tick_function(array("jsrt", "tick_safe"));
        declare (ticks=0);
    }
}