/* Sun-$Revision: 23.5 $ */
/* Copyright 1992-9 Sun Microsystems, Inc. and Stanford University.
See the LICENSE file for license information. */
# pragma interface
class vframeMap : public codeLikeSlotsMap {
public:
bool is_vframe() { return true; }
bool is_killable() { return true; }
bool is_programmable_slots() { return false; }
// cloning
oop basic_clone(oop obj, bool mustAllocate= true, oop genObj= NULL) {
return slotsMapDeps::clone(obj, mustAllocate, genObj); }
oop clone(oop obj, bool mustAllocate= true, oop genObj= NULL);
bool can_inline_clone() { return false; }
oop cloneSize(oop obj, fint length, bool mustAllocate= true,
oop filler= NULL);
// mirror operations
oop mirror_names(oop r);
oop mirror_name_at(oop obj, smi inx);
oop mirror_contents_at(oop r, stringOop name);
oop mirror_is_parent_at(oop r, stringOop name);
oop mirror_is_argument_at(oop r, stringOop name);
oop mirror_is_assignable_at(oop r, stringOop name);
oop mirror_codes(oop obj);
oop mirror_literals(oop obj);
oop mirror_source(oop obj);
oop mirror_source_length(oop obj);
oop mirror_source_offset(oop obj);
oop mirror_file(oop obj);
oop mirror_line(oop obj);
oop mirror_sender(oop obj);
oop mirror_parent(oop obj);
oop mirror_receiver(oop obj);
oop mirror_expr_stack(oop obj);
oop mirror_methodHolder(oop obj);
oop mirror_selector(oop obj);
oop mirror_bci(oop obj);
oop mirror_annotation_at(oop obj, stringOop name);
bool verify(oop obj);
// sizing
fint empty_object_size();
// killable functions
void kill(oop vfp);
bool is_live(oop vfp);
// printing
void print_string(oop obj, char* buf);
void print(oop obj);
void print_oop(oop obj);
// enumerating
virtual bool is_enumerable(oop obj, oop* matching_cell);
// profiler operation
void dummy_initialize(oop obj, oop filler);
};
class ovframeMap : public vframeMap {
public:
mirrorOop mirror_proto() { return Memory->outerActivationMirrorObj; }
};
class bvframeMap : public vframeMap {
public:
mirrorOop mirror_proto() { return Memory->blockActivationMirrorObj; }
};