BackgroundCompileRequest(STATE, CompiledMethod* cm, Object* mm, bool is_block=false) : method_(state) , mm_(state) , is_block_(is_block) { method_.set(cm); mm_.set(mm); }
void clear_exception(bool all = false) { if(raise_reason_ == cNone) return; if(!all && raise_reason_ != cException) { std::cout << "WARNING: clearing non exception raise reason!\n"; } raise_value_.set(Qnil); raise_reason_ = cNone; destination_scope_.set(Qnil); }
Exception* interrupted_exception() { return interrupted_exception_.get(); }
CompiledMethod* method() { return method_.get(); }
BlockEnvironment* block_env() { return try_as<BlockEnvironment>(mm_.get()); }
VMMethod* vmmethod() { return method_->backend_method(); }
Object* loader() { return loader_->get(); }
Class* self_class() { return self_class_.get(); }
virtual void call(Object* obj) { chan->send(state, obj); }
virtual Object* object() { return chan.get(); }
Object* throw_dest() { return throw_dest_.get(); }
VariableScope* destination_scope() { return destination_scope_.get(); }
Object* raise_value() { return raise_value_.get(); }
void set_self_class(Class* cls) { self_class_.set((Object*)cls); }
void clear_interrupted_exception() { interrupted_exception_.set(cNil); }
CompiledCode* method() { return method_.get(); }
void set_loader(Object* loader) { loader_->set(loader); }