|
52 | 52 | IMPORT $g_GCShadowEnd
|
53 | 53 | #endif // WRITE_BARRIER_CHECK
|
54 | 54 |
|
| 55 | + IMPORT JIT_GetSharedNonGCStaticBase_Helper |
| 56 | + IMPORT JIT_GetSharedGCStaticBase_Helper |
| 57 | + |
55 | 58 | TEXTAREA
|
56 | 59 |
|
57 | 60 | ;; LPVOID __stdcall GetCurrentIP(void);
|
@@ -1326,5 +1329,62 @@ Fail
|
1326 | 1329 | LEAF_END
|
1327 | 1330 | #endif
|
1328 | 1331 |
|
| 1332 | +; |
| 1333 | +; JIT Static access helpers when coreclr host specifies single appdomain flag |
| 1334 | +; |
| 1335 | + |
| 1336 | +; ------------------------------------------------------------------ |
| 1337 | +; void* JIT_GetSharedNonGCStaticBase(SIZE_T moduleDomainID, DWORD dwClassDomainID) |
| 1338 | + |
| 1339 | + LEAF_ENTRY JIT_GetSharedNonGCStaticBase_SingleAppDomain |
| 1340 | + ; If class is not initialized, bail to C++ helper |
| 1341 | + add x2, x0, #DomainLocalModule__m_pDataBlob |
| 1342 | + ldrb w2, [x2, w1] |
| 1343 | + tst w2, #1 |
| 1344 | + beq CallHelper1 |
| 1345 | + |
| 1346 | + ret lr |
| 1347 | + |
| 1348 | +CallHelper1 |
| 1349 | + ; Tail call JIT_GetSharedNonGCStaticBase_Helper |
| 1350 | + b JIT_GetSharedNonGCStaticBase_Helper |
| 1351 | + LEAF_END |
| 1352 | + |
| 1353 | + |
| 1354 | +; ------------------------------------------------------------------ |
| 1355 | +; void* JIT_GetSharedNonGCStaticBaseNoCtor(SIZE_T moduleDomainID, DWORD dwClassDomainID) |
| 1356 | + |
| 1357 | + LEAF_ENTRY JIT_GetSharedNonGCStaticBaseNoCtor_SingleAppDomain |
| 1358 | + ret lr |
| 1359 | + LEAF_END |
| 1360 | + |
| 1361 | + |
| 1362 | +; ------------------------------------------------------------------ |
| 1363 | +; void* JIT_GetSharedGCStaticBase(SIZE_T moduleDomainID, DWORD dwClassDomainID) |
| 1364 | + |
| 1365 | + LEAF_ENTRY JIT_GetSharedGCStaticBase_SingleAppDomain |
| 1366 | + ; If class is not initialized, bail to C++ helper |
| 1367 | + add x2, x0, #DomainLocalModule__m_pDataBlob |
| 1368 | + ldrb w2, [x2, w1] |
| 1369 | + tst w2, #1 |
| 1370 | + beq CallHelper2 |
| 1371 | + |
| 1372 | + ldr x0, [x0, #DomainLocalModule__m_pGCStatics] |
| 1373 | + ret lr |
| 1374 | + |
| 1375 | +CallHelper2 |
| 1376 | + ; Tail call Jit_GetSharedGCStaticBase_Helper |
| 1377 | + b JIT_GetSharedGCStaticBase_Helper |
| 1378 | + LEAF_END |
| 1379 | + |
| 1380 | + |
| 1381 | +; ------------------------------------------------------------------ |
| 1382 | +; void* JIT_GetSharedGCStaticBaseNoCtor(SIZE_T moduleDomainID, DWORD dwClassDomainID) |
| 1383 | + |
| 1384 | + LEAF_ENTRY JIT_GetSharedGCStaticBaseNoCtor_SingleAppDomain |
| 1385 | + ldr x0, [x0, #DomainLocalModule__m_pGCStatics] |
| 1386 | + ret lr |
| 1387 | + LEAF_END |
| 1388 | + |
1329 | 1389 | ; Must be at very end of file
|
1330 | 1390 | END
|
0 commit comments