/* Sun-$Revision: 23.2 $ */ /* Copyright 1992-9 Sun Microsystems, Inc. and Stanford University. See the LICENSE file for license information. */ # pragma interface class foreignMap: public slotsMapDeps { public: // sizing fint empty_object_size() { return sizeof(foreignOopClass) / oopSize; } // testing operations bool is_killable() { return true; } bool is_foreign() { return true; } // creation: override clone to prevent clone, then delete -- dmu 12/91 virtual bool can_inline_clone() {return false;} virtual oop clone(oop obj, bool mustAllocate= true, oop genObj= NULL) { oop r= slotsMapDeps::clone(obj, mustAllocate, genObj); if (r != failedAllocationOop) r->kill(); return r; } // killable operations virtual void kill(oop p) { foreignOop(p)->kill_foreign(); } virtual bool is_live(oop p) { return foreignOop(p)->is_live_foreign(); } // profiler operation void dummy_initialize(oop obj, oop filler) { Unused(filler); assert( obj->is_foreign(), "a foreignOop is expected"); foreignOop(obj)->set_pointer(NULL); } };