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; }
virtual void set(Output& output, bert::Value* val) { GlobalLock::LockGuard guard(state_->global_lock()); if(val->string_p()) { output.ok("value"); String* path = String::create(state_, val->string()); if(RTEST(System::vm_dump_heap(state_, path))) { output.e().write_atom("ok"); } else { output.e().write_atom("error"); } } else { output.error("format"); } }