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-11-07 01:59:08 +0300
committerMark Probst <mark.probst@gmail.com>2014-11-14 02:44:15 +0300
commit3639ee61f1e7cbb891080b777c573970887954ca (patch)
treeb9d8fd62f5fa861af3c3435b1dc7ecfcc775a474 /tools
parentfbfe8518ce0acb604e59eb41031973d61ec9597f (diff)
[sgen] Binary protocol entry for pin stage.
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 ea416b7e3a3..e881fd02f9e 100644
--- a/tools/sgen/sgen-grep-binprot.c
+++ b/tools/sgen/sgen-grep-binprot.c
@@ -35,6 +35,7 @@ read_entry (FILE *in, void **data)
case SGEN_PROTOCOL_ALLOC_PINNED: size = sizeof (SGenProtocolAlloc); break;
case SGEN_PROTOCOL_ALLOC_DEGRADED: size = sizeof (SGenProtocolAlloc); break;
case SGEN_PROTOCOL_COPY: size = sizeof (SGenProtocolCopy); break;
+ case SGEN_PROTOCOL_PIN_STAGE: size = sizeof (SGenProtocolPinStage); break;
case SGEN_PROTOCOL_PIN: size = sizeof (SGenProtocolPin); break;
case SGEN_PROTOCOL_MARK: size = sizeof (SGenProtocolMark); break;
case SGEN_PROTOCOL_SCAN_BEGIN: size = sizeof (SGenProtocolScanBegin); break;
@@ -177,6 +178,11 @@ print_entry (int type, void *data)
printf ("copy from %p to %p vtable %p size %d\n", entry->from, entry->to, entry->vtable, entry->size);
break;
}
+ case SGEN_PROTOCOL_PIN_STAGE: {
+ SGenProtocolPinStage *entry = data;
+ printf ("pin stage addr ptr %p addr %p thread %p\n", entry->addr_ptr, entry->addr, entry->thread);
+ break;
+ }
case SGEN_PROTOCOL_PIN: {
SGenProtocolPin *entry = data;
printf ("pin obj %p vtable %p size %d\n", entry->obj, entry->vtable, entry->size);
@@ -331,6 +337,10 @@ is_match (gpointer ptr, int type, void *data)
SGenProtocolCopy *entry = data;
return matches_interval (ptr, entry->from, entry->size) || matches_interval (ptr, entry->to, entry->size);
}
+ case SGEN_PROTOCOL_PIN_STAGE: {
+ SGenProtocolPinStage *entry = data;
+ return ptr == entry->addr_ptr || ptr == entry->addr || ptr == entry->thread;
+ }
case SGEN_PROTOCOL_PIN: {
SGenProtocolPin *entry = data;
return matches_interval (ptr, entry->obj, entry->size);