Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Wrighton <davidwr@microsoft.com>2016-07-15 21:55:29 +0300
committerDavid Wrighton <davidwr@microsoft.com>2016-07-15 21:55:29 +0300
commitee9e3cb8f33cc98428f0e08c22ab3140f1bf16a5 (patch)
tree7200dcab4766e2b3b0cda546ff1ba870c3771b34 /src/Native/Runtime/StackFrameIterator.h
parentb25e5a54668a1765f1eac2d6c357a26cca21df38 (diff)
Replace use of ManagedCalloutThunk with Universal Thunk
Move to using the Universal Thunk for cases where we need to perform complex lookup to perform interface dispatch. This allows us to permit exceptions to occur in interface processing without ripping the process down. As a side benefit, we are able to reduce the amount of platform specific assembly code needed to build the product. NOTE: CoreRT still uses the old managed callout logic, as I don't have time on my schedule to write a SYS V ABI version of the universal transition thunk. [tfs-changeset: 1618006]
Diffstat (limited to 'src/Native/Runtime/StackFrameIterator.h')
-rw-r--r--src/Native/Runtime/StackFrameIterator.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/Native/Runtime/StackFrameIterator.h b/src/Native/Runtime/StackFrameIterator.h
index 7299f952e..5e71ef2b6 100644
--- a/src/Native/Runtime/StackFrameIterator.h
+++ b/src/Native/Runtime/StackFrameIterator.h
@@ -57,11 +57,13 @@ public:
void GetStackRangeToReportConservatively(PTR_RtuObjectRef * ppLowerBound, PTR_RtuObjectRef * ppUpperBound);
private:
+#ifdef LEGACY_INTERFACE_DISPATCH
// If our control PC indicates that we're in one of the thunks we use to make managed callouts from the
// runtime we need to adjust the frame state to that of the managed method that previously called into the
// runtime (i.e. skip the intervening unmanaged frames).
// NOTE: This function always publishes a non-NULL conservative stack range lower bound.
void UnwindManagedCalloutThunk();
+#endif // LEGACY_INTERFACE_DISPATCH
// The invoke of a funclet is a bit special and requires an assembly thunk, but we don't want to break the
// stackwalk due to this. So this routine will unwind through the assembly thunks used to invoke funclets.
@@ -107,7 +109,9 @@ private:
InManagedCode,
InThrowSiteThunk,
InFuncletInvokeThunk,
+#ifdef LEGACY_INTERFACE_DISPATCH
InManagedCalloutThunk,
+#endif // LEGACY_INTERFACE_DISPATCH
InCallDescrThunk,
InUniversalTransitionThunk,
};