1*99451b44SJordan Rupprecht // 2*99451b44SJordan Rupprecht // 11588.cpp 3*99451b44SJordan Rupprecht // 4*99451b44SJordan Rupprecht 5*99451b44SJordan Rupprecht #include <iostream> 6*99451b44SJordan Rupprecht 7*99451b44SJordan Rupprecht class StgInfoTable {}; 8*99451b44SJordan Rupprecht 9*99451b44SJordan Rupprecht class StgHeader 10*99451b44SJordan Rupprecht { 11*99451b44SJordan Rupprecht private: 12*99451b44SJordan Rupprecht StgInfoTable* info; 13*99451b44SJordan Rupprecht public: StgHeader()14*99451b44SJordan Rupprecht StgHeader() 15*99451b44SJordan Rupprecht { 16*99451b44SJordan Rupprecht info = new StgInfoTable(); 17*99451b44SJordan Rupprecht } ~StgHeader()18*99451b44SJordan Rupprecht ~StgHeader() 19*99451b44SJordan Rupprecht { 20*99451b44SJordan Rupprecht delete info; 21*99451b44SJordan Rupprecht } 22*99451b44SJordan Rupprecht }; 23*99451b44SJordan Rupprecht 24*99451b44SJordan Rupprecht class StgClosure 25*99451b44SJordan Rupprecht { 26*99451b44SJordan Rupprecht private: 27*99451b44SJordan Rupprecht StgHeader header; 28*99451b44SJordan Rupprecht StgClosure* payload[1]; 29*99451b44SJordan Rupprecht public: StgClosure(bool make_payload=true)30*99451b44SJordan Rupprecht StgClosure(bool make_payload = true) 31*99451b44SJordan Rupprecht { 32*99451b44SJordan Rupprecht if (make_payload) 33*99451b44SJordan Rupprecht payload[0] = new StgClosure(false); 34*99451b44SJordan Rupprecht else 35*99451b44SJordan Rupprecht payload[0] = NULL; 36*99451b44SJordan Rupprecht } ~StgClosure()37*99451b44SJordan Rupprecht ~StgClosure() 38*99451b44SJordan Rupprecht { 39*99451b44SJordan Rupprecht if (payload[0]) 40*99451b44SJordan Rupprecht delete payload[0]; 41*99451b44SJordan Rupprecht } 42*99451b44SJordan Rupprecht }; 43*99451b44SJordan Rupprecht 44*99451b44SJordan Rupprecht typedef unsigned long long int ptr_type; 45*99451b44SJordan Rupprecht main()46*99451b44SJordan Rupprechtint main() 47*99451b44SJordan Rupprecht { 48*99451b44SJordan Rupprecht StgClosure* r14_ = new StgClosure(); 49*99451b44SJordan Rupprecht r14_ = (StgClosure*)(((ptr_type)r14_ | 0x01)); // set the LSB to 1 for tagging 50*99451b44SJordan Rupprecht ptr_type r14 = (ptr_type)r14_; 51*99451b44SJordan Rupprecht int x = 0; 52*99451b44SJordan Rupprecht x = 3; 53*99451b44SJordan Rupprecht return (x-1); // Set breakpoint here. 54*99451b44SJordan Rupprecht } 55