LookupTable* LookupTable::duplicate(STATE) { size_t size, i; LookupTable *dup; size = bins_->to_native(); dup = LookupTable::create(state, size); // Allow for subclassing. dup->klass(state, class_object(state)); size_t num = entries_->to_native(); Array* entries = all_entries(state); for(i = 0; i < num; i++) { LookupTableBucket* entry = as<LookupTableBucket>(entries->get(state, i)); dup->store(state, entry->key(), entry->value()); } return dup; }
LookupTable* LookupTable::dup(STATE) { size_t size, i; LookupTable *dup; size = bins_->to_native(); dup = LookupTable::create(state, size); state->om->set_class(dup, class_object(state)); size_t num = entries_->to_native(); Array* entries = all_entries(state); for(i = 0; i < num; i++) { Tuple* entry = as<Tuple>(entries->get(state, i)); Object* key = entry->at(state, 0); Object* value = entry->at(state, 1); dup->store(state, key, value); } return dup; }
MethodTable* MethodTable::duplicate(STATE) { size_t size, i; MethodTable *dup; size = bins_->to_native(); dup = MethodTable::create(state, size); // Allow for subclassing. dup->klass(state, class_object(state)); size_t num = entries_->to_native(); Array* entries = all_entries(state); for(i = 0; i < num; i++) { MethodTableBucket* entry = as<MethodTableBucket>(entries->get(state, i)); dup->store(state, entry->name(), entry->method(), entry->visibility()); } return dup; }