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:
authorFadi Hanna <fadim@microsoft.com>2017-12-01 01:10:45 +0300
committerFadi Hanna <fadim@microsoft.com>2017-12-01 01:10:45 +0300
commit0cf9623634e48d28520f1df91d356ad5df8763c2 (patch)
tree6d6a627bddba55d6b82a127ae489521598631f85 /src/Native
parenta0d449b381fd508331915dbcb1042345759218b5 (diff)
Fix to a GC hole caused by hijacking 'finally' blocks.
The problem is that these finally blocks are called just like any managed call from the main body of the parent containing method, however there is no gcroots reporting at that callsite. The idea of not having gcroots reported at the callsite is because funclets should never really be hijacked in the first place. The 'IsFunclet' detection logic on ProjectN is slightly different that on ProjectX: it checks the value of the funclet offset, which is not used by ProjectX. This fix stores a dummy value as a funclet offset (anything other than 0). [tfs-changeset: 1682563]
Diffstat (limited to 'src/Native')
-rw-r--r--src/Native/Runtime/inc/gcinfo.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/Native/Runtime/inc/gcinfo.h b/src/Native/Runtime/inc/gcinfo.h
index 405973aa4..8699fad3d 100644
--- a/src/Native/Runtime/inc/gcinfo.h
+++ b/src/Native/Runtime/inc/gcinfo.h
@@ -842,6 +842,11 @@ public:
}
#endif // _TARGET_AMD64_
+ void SetFuncletOffset(UInt32 offset)
+ {
+ funcletOffset = offset;
+ }
+
//
// GETTERS
//