int main(int argc, char **argv) { JITCompiler compiler; VMManager * manager = new VMManager; SharedState * shared = manager->create_shared_state(); ConfigParser * config = new ConfigParser; shared->user_config = config; VM* state = shared->thread_nexus()->new_vm(); state->initialize(VM::default_bytes); state->boot(); state->global_lock().lock(); std::ifstream stream(argv[1]); if(!stream) { cout << "Can't open ' " << argv[1] << "'\n"; return 1; } CompiledFile* cf = CompiledFile::load(state, stream); if(cf->magic != "!RBIX") { cout << "Invalid file.\n"; } MachineCode* mcode = as<CompiledCode>(cf->body(state))->formalize(state, false); delete cf; compiler.compile(state, mcode); MachineMethod* mm = MachineMethod::create(state, mcode, compiler); mm->show(); return 0; }
MachineMethod* CompiledMethod::make_machine_method(STATE) { if(backend_method_ == 0) { formalize(state, false); } JITCompiler jit; jit.compile(state, backend_method_); return MachineMethod::create(state, backend_method_, jit); }
MachineMethod* CompiledMethod::make_machine_method(STATE) { if(backend_method_ == 0) return (MachineMethod*)Qnil; JITCompiler jit; jit.compile(backend_method_); return MachineMethod::create(state, backend_method_, jit); }