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