projects
/
mono.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a1a7336
)
[sgen] Make `mono_gc_scan_for_specific_ref()` also scan thread stacks.
author
Mark Probst
<mark.probst@gmail.com>
Tue, 28 Apr 2015 00:48:35 +0000
(17:48 -0700)
committer
Mark Probst
<mark.probst@gmail.com>
Wed, 29 Apr 2015 21:54:08 +0000
(14:54 -0700)
mono/metadata/sgen-debug.c
patch
|
blob
|
history
diff --git
a/mono/metadata/sgen-debug.c
b/mono/metadata/sgen-debug.c
index 8aa24a301ee199ffb3648e4c80c5708a4d53f167..2240a1fb92c6949b227c874b95987f6e40670030 100644
(file)
--- a/
mono/metadata/sgen-debug.c
+++ b/
mono/metadata/sgen-debug.c
@@
-510,7
+510,7
@@
find_pinning_ref_from_thread (char *obj, size_t size)
FOREACH_THREAD (info) {
char **start = (char**)info->client_info.stack_start;
- if (info->client_info.skip)
+ if (info->client_info.skip
|| info->client_info.gc_disabled
)
continue;
while (start < (char**)info->client_info.stack_end) {
if (*start >= obj && *start < endobj)
@@
-857,6
+857,9
@@
mono_gc_scan_for_specific_ref (GCObject *key, gboolean precise)
++ptr;
}
} SGEN_HASH_TABLE_FOREACH_END;
+
+ if (sgen_is_world_stopped ())
+ find_pinning_ref_from_thread ((char*)key, sizeof (MonoObject));
}
#ifndef SGEN_WITHOUT_MONO