/* Sun-$Revision: 23.3 $ */
/* Copyright 1992-9 Sun Microsystems, Inc. and Stanford University.
See the LICENSE file for license information. */
# pragma interface
class mapMap: public Map {
public:
// testers
bool is_map() { return true; }
// slot operations
fint length_slots() { return 0; }
fint length_nonVM_slots() { return 0; }
fint size() { return sizeof(mapMap) / sizeof(oop); }
fint object_size(oop obj) { return mapOop(obj)->addr()->size(); }
// cloning operations
oop clone(oop obj, bool mustAllocate= true, oop genObj= NULL);
oop cloneSize(oop obj, fint length, bool mustAllocate= true,
oop filler= NULL);
// creation operation
friend Map* create_mapMap();
oop fill_in_slots(slotList* slist, fint slotCount) {
ShouldNotCallThis(); Unused(slist); Unused(slotCount); return badOop; }
// memory operations
virtual oop scavenge(oop obj);
bool verify(oop obj);
// programming operations
void switch_pointer(oop obj, oop* where, oop to) {
assert_map(obj, "obj must be map!");
mapOop(obj)->addr()->switch_pointer_in_map(where, to);
}
// bogus operations
mirrorOop mirror_proto() { ShouldNotCallThis(); return NULL; }
oop dummy_obj(oop filler) {
Unused(filler); ShouldNotCallThis(); return NULL; }
fint empty_object_size() { ShouldNotCallThis(); return 0; }
bool is_enumerable(oop obj, oop* matching_cell) {
Unused(obj); Unused(matching_cell);
ShouldNotCallThis(); return false; }
// printing operations
void print(oop obj);
};