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; }
VM * Vm_factory::allocate(Ram_quota *quota) { if (void *t = Vm::allocator<VM>()->q_alloc(quota)) { VM *a = new (t) VM(quota); if (a->initialize()) return a; delete a; } return 0; }