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

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMark Probst <mark.probst@gmail.com>2014-10-05 02:53:27 +0400
committerMark Probst <mark.probst@gmail.com>2014-11-26 21:38:44 +0300
commit66311912de21f9cd0f7c4740ea9af519f420a393 (patch)
tree5a7b470617c766752c0fa406a4fc27d657129b22 /tools
parent60b927f6dfae55dc0f2c06605c6e22667aa9acd9 (diff)
[sgen] New protocol entry for processing of individual reference.
Diffstat (limited to 'tools')
-rw-r--r--tools/sgen/sgen-grep-binprot.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/sgen/sgen-grep-binprot.c b/tools/sgen/sgen-grep-binprot.c
index 917f40395eb..6ae484b7cf4 100644
--- a/tools/sgen/sgen-grep-binprot.c
+++ b/tools/sgen/sgen-grep-binprot.c
@@ -40,6 +40,7 @@ read_entry (FILE *in, void **data)
case SGEN_PROTOCOL_MARK: size = sizeof (SGenProtocolMark); break;
case SGEN_PROTOCOL_SCAN_BEGIN: size = sizeof (SGenProtocolScanBegin); break;
case SGEN_PROTOCOL_SCAN_VTYPE_BEGIN: size = sizeof (SGenProtocolScanVTypeBegin); break;
+ case SGEN_PROTOCOL_SCAN_PROCESS_REFERENCE: size = sizeof (SGenProtocolScanProcessReference); break;
case SGEN_PROTOCOL_WBARRIER: size = sizeof (SGenProtocolWBarrier); break;
case SGEN_PROTOCOL_GLOBAL_REMSET: size = sizeof (SGenProtocolGlobalRemset); break;
case SGEN_PROTOCOL_PTR_UPDATE: size = sizeof (SGenProtocolPtrUpdate); break;
@@ -203,6 +204,11 @@ print_entry (int type, void *data)
printf ("scan_vtype_begin obj %p size %d\n", entry->obj, entry->size);
break;
}
+ case SGEN_PROTOCOL_SCAN_PROCESS_REFERENCE: {
+ SGenProtocolScanProcessReference *entry = data;
+ printf ("scan_process_reference obj %p ptr %p value %p\n", entry->obj, entry->ptr, entry->value);
+ break;
+ }
case SGEN_PROTOCOL_WBARRIER: {
SGenProtocolWBarrier *entry = data;
printf ("wbarrier ptr %p value %p value_vtable %p\n", entry->ptr, entry->value, entry->value_vtable);
@@ -357,6 +363,10 @@ is_match (gpointer ptr, int type, void *data)
SGenProtocolScanVTypeBegin *entry = data;
return matches_interval (ptr, entry->obj, entry->size);
}
+ case SGEN_PROTOCOL_SCAN_PROCESS_REFERENCE: {
+ SGenProtocolScanProcessReference *entry = data;
+ return ptr == entry->obj || ptr == entry->ptr || ptr == entry->value;
+ }
case SGEN_PROTOCOL_WBARRIER: {
SGenProtocolWBarrier *entry = data;
return ptr == entry->ptr || ptr == entry->value;