@@ -82,8 +82,7 @@ struct DispatchStub
8282private:
8383 friend struct DispatchHolder ;
8484
85- DWORD _entryPoint[9 ];
86- DWORD _pad;
85+ DWORD _entryPoint[8 ];
8786 size_t _expectedMT;
8887 PCODE _implTarget;
8988 PCODE _failTarget;
@@ -102,30 +101,28 @@ struct DispatchHolder
102101 void Initialize (DispatchHolder* pDispatchHolderRX, PCODE implTarget, PCODE failTarget, size_t expectedMT)
103102 {
104103 // auipc t4,0
105- // addi t4, t4, 36
106- // ld t0,0(a0) ; methodTable from object in $a0
107- // ld t6,0(t4) // t6 _expectedMT
108- // bne t6, t0, failLabel
109- // ld t4, 8(t4) // t4 _implTarget
104+ // ld t0, 0(a0) // methodTable from object in $a0
105+ // ld t6, 32(t4) // t6 _expectedMT
106+ // bne t6, t0, failLabel
107+ // ld t4, 40(t4) // t4 _implTarget
110108 // jalr x0, t4, 0
111109 // failLabel:
112- // ld t4, 16 (t4) // t4 _failTarget
110+ // ld t4, 48 (t4) // t4 _failTarget
113111 // jalr x0, t4, 0
114112 //
115113 //
116114 // _expectedMT
117115 // _implTarget
118116 // _failTarget
119117
120- _stub._entryPoint [0 ] = DISPATCH_STUB_FIRST_DWORD; // auipc t4,0 // 0x00000e97
121- _stub._entryPoint [1 ] = 0x028e8e93 ; // addi t4, t4, 40
122- _stub._entryPoint [2 ] = 0x00053283 ; // ld t0, 0(a0) //; methodTable from object in $a0
123- _stub._entryPoint [3 ] = 0x000ebf83 ; // ld r6, 0(t4) // t6 _expectedMT
124- _stub._entryPoint [4 ] = 0x005f9663 ; // bne t6, t0, failLabel
125- _stub._entryPoint [5 ] = 0x008ebe83 ; // ld t4, 8(t4) // t4 _implTarget
126- _stub._entryPoint [6 ] = 0x000e8067 ; // jalr x0, t4, 0
127- _stub._entryPoint [7 ] = 0x010ebe83 ; // ld t4, 16(t4) // t4 _failTarget
128- _stub._entryPoint [8 ] = 0x000e8067 ; // jalr x0, t4, 0
118+ _stub._entryPoint [0 ] = DISPATCH_STUB_FIRST_DWORD; // auipc t4,0 // 0x00000e97
119+ _stub._entryPoint [1 ] = 0x00053283 ; // ld t0, 0(a0) // methodTable from object in $a0
120+ _stub._entryPoint [2 ] = 0x020ebf83 ; // ld t6, 32(t4) // t6 _expectedMT
121+ _stub._entryPoint [3 ] = 0x005f9663 ; // bne t6, t0, failLabel
122+ _stub._entryPoint [4 ] = 0x028ebe83 ; // ld t4, 40(t4) // t4 _implTarget
123+ _stub._entryPoint [5 ] = 0x000e8067 ; // jalr x0, t4, 0
124+ _stub._entryPoint [6 ] = 0x030ebe83 ; // ld t4, 48(t4) // t4 _failTarget
125+ _stub._entryPoint [7 ] = 0x000e8067 ; // jalr x0, t4, 0
129126
130127 _stub._expectedMT = expectedMT;
131128 _stub._implTarget = implTarget;
0 commit comments