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 Rupprecht int 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