|
37 | 37 | #if !defined(USE_PORTABLE_HELPERS) // @TODO: these are (currently) only implemented in assembly helpers
|
38 | 38 |
|
39 | 39 | #if defined(FEATURE_DYNAMIC_CODE)
|
40 |
| -EXTERN_C void * RhpUniversalTransition(); |
41 |
| -GPTR_IMPL_INIT(PTR_VOID, g_RhpUniversalTransitionAddr, (void**)&RhpUniversalTransition); |
42 |
| - |
43 |
| -EXTERN_C PTR_VOID PointerToReturnFromUniversalTransition; |
44 |
| -GVAL_IMPL_INIT(PTR_VOID, g_ReturnFromUniversalTransitionAddr, PointerToReturnFromUniversalTransition); |
45 |
| - |
46 |
| -EXTERN_C PTR_VOID PointerToReturnFromUniversalTransition_DebugStepTailCall; |
47 |
| -GVAL_IMPL_INIT(PTR_VOID, g_ReturnFromUniversalTransition_DebugStepTailCallAddr, PointerToReturnFromUniversalTransition_DebugStepTailCall); |
| 40 | +EXTERN_C CODE_LOCATION ReturnFromUniversalTransition; |
| 41 | +EXTERN_C CODE_LOCATION ReturnFromUniversalTransition_DebugStepTailCall; |
48 | 42 | #endif
|
49 | 43 |
|
50 | 44 | #ifdef TARGET_X86
|
51 |
| -EXTERN_C void * PointerToRhpCallFunclet2; |
52 |
| -GVAL_IMPL_INIT(PTR_VOID, g_RhpCallFunclet2Addr, PointerToRhpCallFunclet2); |
| 45 | +EXTERN_C CODE_LOCATION RhpCallFunclet2; |
53 | 46 | #endif
|
54 |
| -EXTERN_C void * PointerToRhpCallCatchFunclet2; |
55 |
| -GVAL_IMPL_INIT(PTR_VOID, g_RhpCallCatchFunclet2Addr, PointerToRhpCallCatchFunclet2); |
56 |
| -EXTERN_C void * PointerToRhpCallFinallyFunclet2; |
57 |
| -GVAL_IMPL_INIT(PTR_VOID, g_RhpCallFinallyFunclet2Addr, PointerToRhpCallFinallyFunclet2); |
58 |
| -EXTERN_C void * PointerToRhpCallFilterFunclet2; |
59 |
| -GVAL_IMPL_INIT(PTR_VOID, g_RhpCallFilterFunclet2Addr, PointerToRhpCallFilterFunclet2); |
60 |
| -EXTERN_C void * PointerToRhpThrowEx2; |
61 |
| -GVAL_IMPL_INIT(PTR_VOID, g_RhpThrowEx2Addr, PointerToRhpThrowEx2); |
62 |
| -EXTERN_C void * PointerToRhpThrowHwEx2; |
63 |
| -GVAL_IMPL_INIT(PTR_VOID, g_RhpThrowHwEx2Addr, PointerToRhpThrowHwEx2); |
64 |
| -EXTERN_C void * PointerToRhpRethrow2; |
65 |
| -GVAL_IMPL_INIT(PTR_VOID, g_RhpRethrow2Addr, PointerToRhpRethrow2); |
| 47 | +EXTERN_C CODE_LOCATION RhpCallCatchFunclet2; |
| 48 | +EXTERN_C CODE_LOCATION RhpCallFinallyFunclet2; |
| 49 | +EXTERN_C CODE_LOCATION RhpCallFilterFunclet2; |
| 50 | +EXTERN_C CODE_LOCATION RhpThrowEx2; |
| 51 | +EXTERN_C CODE_LOCATION RhpThrowHwEx2; |
| 52 | +EXTERN_C CODE_LOCATION RhpRethrow2; |
66 | 53 | #endif // !defined(USE_PORTABLE_HELPERS)
|
67 | 54 |
|
68 | 55 | // Addresses of functions in the DAC won't match their runtime counterparts so we
|
69 | 56 | // assign them to globals. However it is more performant in the runtime to compare
|
70 | 57 | // against immediates than to fetch the global. This macro hides the difference.
|
71 |
| -// |
72 |
| -// We use a special code path for the return address from thunks as |
73 |
| -// having the return address public confuses today DIA stackwalker. Before we can |
74 |
| -// ingest the updated DIA, we're instead exposing a global void * variable |
75 |
| -// holding the return address. |
76 | 58 | #ifdef DACCESS_COMPILE
|
77 | 59 | #define EQUALS_RETURN_ADDRESS(x, func_name) ((x) == g_ ## func_name ## Addr)
|
78 | 60 | #else
|
79 |
| -#define EQUALS_RETURN_ADDRESS(x, func_name) (((x)) == (PointerTo ## func_name)) |
| 61 | +#define EQUALS_RETURN_ADDRESS(x, func_name) ((x) == &func_name) |
80 | 62 | #endif
|
81 | 63 |
|
82 | 64 | #ifdef DACCESS_COMPILE
|
|
0 commit comments