RespondToCache* RespondToCache::create(STATE, CallSite* fallback, Object* recv, Symbol* msg, Object* priv, Object* res, int hits) { RespondToCache* cache = state->memory()->new_object<RespondToCache>(state, G(respond_to_cache)); Class* recv_class = recv->direct_class(state); cache->fallback_call_site(state, fallback); cache->executable(state, fallback->executable()); cache->name(state, fallback->name()); cache->receiver_class(state, recv_class); cache->visibility(state, priv); cache->message(state, msg); cache->responds(state, res); cache->ip(fallback->ip()); cache->executor(check_cache); cache->fallback(check_cache); cache->updater(NULL); cache->hits(hits); cache->receiver_data(recv_class->class_data()); return cache; }
RespondToCache* RespondToCache::create(STATE, CallSite* fallback, Object* recv, Symbol* msg, Object* priv, Object* res, int hits) { RespondToCache* cache = state->vm()->new_object<RespondToCache>(G(respond_to_cache)); Class* recv_class = recv->direct_class(state); cache->fallback_call_site(state, fallback); cache->executable(state, fallback->executable()); cache->name(state, fallback->name()); cache->receiver_class(state, recv_class); cache->visibility(state, priv); cache->message(state, msg); cache->responds(state, res); cache->ip_ = fallback->ip(); cache->executor_ = check_cache; cache->fallback_ = check_cache; cache->updater_ = NULL; cache->hits_ = hits; uint64_t recv_data = recv_class->data_raw(); cache->set_receiver_data(recv_data); return cache; }