4 #include <kern/types.h>
8 #include <util/rbtree.h>
9 #include <System/Objects.h>
23 // Address Space and PC to return to
24 Mem::ProcAddrSpace *ret_aspace;
27 // Caller's PIB Pointer
28 System::RunTime::ParamInfoBlock *caller_user_pib;
30 // Object and Method that were called -- it probably isn't strictly
31 // necessary to keep track of this here, but it'd help in doing a
32 // "traceforward" of the method invocation stack in order to
33 // debug a stalled method call.
38 struct CallStackHeader {
39 Threads::Thread *thread;
42 // Number of CallFrames under this header.
43 // For a full page, this is:
44 // (Arch::page_size - sizeof(CallStackHeader)) / sizeof(CallFrame)
45 // There is also a much smaller group of call frames in the Thread
46 // structure, so that an ORB stack page doesn't need to be allocated
47 // in the common case of shallow method nesting.
57 typedef Util::RBTree<ObjectHdr, Object *, Object *> IDRMap;
60 IDRMap::Node rbtree_node;
72 struct Object : public ObjectHdr {
73 Mem::ProcAddrSpace *aspace;
77 struct ObjectPtr : public ObjectHdr {
82 // Reverse mapping of object pointers to local IDs
86 Object *lookup(u32 id);
87 u32 rlookup(Object *obj);