4 #include <kern/types.h>
5 #include <kern/radix.h>
9 #include <util/rbtree.h>
10 #include <util/radix.h>
11 #include <util/bmaptree.h>
13 #include <System/Objects.h>
27 // Address Space and PC to return to
28 Mem::ProcAddrSpace *ret_aspace;
31 // Caller's PIB Pointer
32 System::RunTime::ParamInfoBlock *caller_user_pib;
34 // Object and Method that were called -- it probably isn't strictly
35 // necessary to keep track of this here, but it'd help in doing a
36 // "traceforward" of the method invocation stack in order to
37 // debug a stalled method call.
42 struct CallStackHeader {
43 Threads::Thread *thread;
46 // Number of CallFrames under this header.
47 // For a full page, this is:
48 // (Arch::page_size - sizeof(CallStackHeader)) / sizeof(CallFrame)
49 // There is also a much smaller group of call frames in the Thread
50 // structure, so that an ORB stack page doesn't need to be allocated
51 // in the common case of shallow method nesting.
74 struct Object : public ObjectHdr {
75 Mem::ProcAddrSpace *aspace;
79 struct ObjectPtr : public ObjectHdr {
89 typedef Util::RadixTree<ObjTableEntry, ID, 6> IDTable;
90 typedef Util::RadixTree<ObjectHdr *, ID, 4> IDRMap;
91 typedef Util::BitmapTree<ID> IDAlloc;
94 // Reverse mapping of object pointers to local IDs
100 Object *lookup(u32 id);
101 ObjectHdr *get_local_hdr(Object *obj);
102 Object *newobj(Mem::ProcAddrSpace *aspace, uintptr_t entry);