From 48f2eaedb16b6e9f227cc93fb0f843fe436c71f1 Mon Sep 17 00:00:00 2001 From: Vlad Brezae Date: Thu, 13 Aug 2015 19:03:17 -0700 Subject: [PATCH] [sgen] Flush after writing the protocol entry --- mono/sgen/sgen-client.h | 3 +-- mono/sgen/sgen-protocol-def.h | 9 +++------ mono/sgen/sgen-protocol.c | 8 +++++--- mono/sgen/sgen-protocol.h | 9 +++------ tools/sgen/sgen-grep-binprot.c | 18 ++++++++---------- 5 files changed, 20 insertions(+), 27 deletions(-) diff --git a/mono/sgen/sgen-client.h b/mono/sgen/sgen-client.h index cb332823789..15ff659f715 100644 --- a/mono/sgen/sgen-client.h +++ b/mono/sgen/sgen-client.h @@ -272,8 +272,6 @@ void sgen_client_describe_invalid_pointer (GCObject *ptr); #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \ void sgen_client_ ## method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6); -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -282,6 +280,7 @@ void sgen_client_describe_invalid_pointer (GCObject *ptr); #define IS_VTABLE_MATCH(_) #define END_PROTOCOL_ENTRY +#define END_PROTOCOL_ENTRY_FLUSH #define END_PROTOCOL_ENTRY_HEAVY #include "sgen-protocol-def.h" diff --git a/mono/sgen/sgen-protocol-def.h b/mono/sgen/sgen-protocol-def.h index c546bac45c8..ca1e053e64b 100644 --- a/mono/sgen/sgen-protocol-def.h +++ b/mono/sgen/sgen-protocol-def.h @@ -6,20 +6,18 @@ IS_VTABLE_MATCH (FALSE) END_PROTOCOL_ENTRY BEGIN_PROTOCOL_ENTRY2 (binary_protocol_collection_begin, TYPE_INT, index, TYPE_INT, generation) -FLUSH () DEFAULT_PRINT () IS_ALWAYS_MATCH (TRUE) MATCH_INDEX (BINARY_PROTOCOL_MATCH) IS_VTABLE_MATCH (FALSE) -END_PROTOCOL_ENTRY +END_PROTOCOL_ENTRY_FLUSH BEGIN_PROTOCOL_ENTRY4 (binary_protocol_collection_end, TYPE_INT, index, TYPE_INT, generation, TYPE_LONGLONG, num_scanned_objects, TYPE_LONGLONG, num_unique_scanned_objects) -FLUSH() CUSTOM_PRINT (printf ("%d generation %d scanned %lld unique %lld %0.2f%%", entry->index, entry->generation, entry->num_scanned_objects, entry->num_unique_scanned_objects, entry->num_unique_scanned_objects ? (100.0 * (double) entry->num_scanned_objects / (double) entry->num_unique_scanned_objects) : 0.0)) IS_ALWAYS_MATCH (TRUE) MATCH_INDEX (BINARY_PROTOCOL_MATCH) IS_VTABLE_MATCH (FALSE) -END_PROTOCOL_ENTRY +END_PROTOCOL_ENTRY_FLUSH BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_start) DEFAULT_PRINT () @@ -373,8 +371,6 @@ END_PROTOCOL_ENTRY_HEAVY #undef BEGIN_PROTOCOL_ENTRY_HEAVY5 #undef BEGIN_PROTOCOL_ENTRY_HEAVY6 -#undef FLUSH - #undef DEFAULT_PRINT #undef CUSTOM_PRINT @@ -383,4 +379,5 @@ END_PROTOCOL_ENTRY_HEAVY #undef IS_VTABLE_MATCH #undef END_PROTOCOL_ENTRY +#undef END_PROTOCOL_ENTRY_FLUSH #undef END_PROTOCOL_ENTRY_HEAVY diff --git a/mono/sgen/sgen-protocol.c b/mono/sgen/sgen-protocol.c index cb512fedf4f..4ea1ac391c9 100644 --- a/mono/sgen/sgen-protocol.c +++ b/mono/sgen/sgen-protocol.c @@ -386,9 +386,6 @@ protocol_entry (unsigned char type, gpointer data, int size) int __size = sizeof (PROTOCOL_STRUCT(method)); \ CLIENT_PROTOCOL_NAME (method) (f1, f2, f3, f4, f5, f6); -#define FLUSH() \ - binary_protocol_flush_buffers (FALSE); - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -400,6 +397,11 @@ protocol_entry (unsigned char type, gpointer data, int size) protocol_entry (__type, __data, __size); \ } +#define END_PROTOCOL_ENTRY_FLUSH \ + protocol_entry (__type, __data, __size); \ + binary_protocol_flush_buffers (FALSE); \ + } + #ifdef SGEN_HEAVY_BINARY_PROTOCOL #define BEGIN_PROTOCOL_ENTRY_HEAVY0(method) \ BEGIN_PROTOCOL_ENTRY0 (method) diff --git a/mono/sgen/sgen-protocol.h b/mono/sgen/sgen-protocol.h index 2b7176e5f2d..220418e8167 100644 --- a/mono/sgen/sgen-protocol.h +++ b/mono/sgen/sgen-protocol.h @@ -55,8 +55,6 @@ enum { #define BEGIN_PROTOCOL_ENTRY_HEAVY5(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5) PROTOCOL_ID(method), #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) PROTOCOL_ID(method), -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -65,6 +63,7 @@ enum { #define IS_VTABLE_MATCH(_) #define END_PROTOCOL_ENTRY +#define END_PROTOCOL_ENTRY_FLUSH #define END_PROTOCOL_ENTRY_HEAVY #include "sgen-protocol-def.h" @@ -126,8 +125,6 @@ enum { #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \ BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -136,6 +133,7 @@ enum { #define IS_VTABLE_MATCH(_) #define END_PROTOCOL_ENTRY +#define END_PROTOCOL_ENTRY_FLUSH #define END_PROTOCOL_ENTRY_HEAVY #include "sgen-protocol-def.h" @@ -198,8 +196,6 @@ void binary_protocol_flush_buffers (gboolean force); static inline void method (t1 f1, t2 f2, t3 f3, t4 f4, t5 f5, t6 f6) {} #endif -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -208,6 +204,7 @@ void binary_protocol_flush_buffers (gboolean force); #define IS_VTABLE_MATCH(_) #define END_PROTOCOL_ENTRY +#define END_PROTOCOL_ENTRY_FLUSH #define END_PROTOCOL_ENTRY_HEAVY #include "sgen-protocol-def.h" diff --git a/tools/sgen/sgen-grep-binprot.c b/tools/sgen/sgen-grep-binprot.c index 761b695c61b..49aa9506009 100644 --- a/tools/sgen/sgen-grep-binprot.c +++ b/tools/sgen/sgen-grep-binprot.c @@ -110,8 +110,6 @@ read_entry (EntryStream *stream, void *data) #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \ BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -120,6 +118,7 @@ read_entry (EntryStream *stream, void *data) #define IS_VTABLE_MATCH(_) #define END_PROTOCOL_ENTRY +#define END_PROTOCOL_ENTRY_FLUSH #define END_PROTOCOL_ENTRY_HEAVY #include @@ -169,8 +168,6 @@ is_always_match (int type) #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \ BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -180,6 +177,7 @@ is_always_match (int type) #define IS_VTABLE_MATCH(_) #define END_PROTOCOL_ENTRY +#define END_PROTOCOL_ENTRY_FLUSH #define END_PROTOCOL_ENTRY_HEAVY #include @@ -402,8 +400,6 @@ print_entry (int type, void *data, int num_nums, int *match_indices, gboolean co #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \ BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) -#define FLUSH() - #define DEFAULT_PRINT() \ print_entry_content (pes_size, pes, color_output); #define CUSTOM_PRINT(print) \ @@ -417,6 +413,8 @@ print_entry (int type, void *data, int num_nums, int *match_indices, gboolean co printf ("\n"); \ break; \ } +#define END_PROTOCOL_ENTRY_FLUSH \ + END_PROTOCOL_ENTRY #define END_PROTOCOL_ENTRY_HEAVY \ END_PROTOCOL_ENTRY @@ -487,8 +485,6 @@ match_index (gpointer ptr, int type, void *data) #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \ BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -500,6 +496,8 @@ match_index (gpointer ptr, int type, void *data) #define END_PROTOCOL_ENTRY \ break; \ } +#define END_PROTOCOL_ENTRY_FLUSH \ + END_PROTOCOL_ENTRY #define END_PROTOCOL_ENTRY_HEAVY \ END_PROTOCOL_ENTRY @@ -550,8 +548,6 @@ is_vtable_match (gpointer ptr, int type, void *data) #define BEGIN_PROTOCOL_ENTRY_HEAVY6(method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) \ BEGIN_PROTOCOL_ENTRY6 (method,t1,f1,t2,f2,t3,f3,t4,f4,t5,f5,t6,f6) -#define FLUSH() - #define DEFAULT_PRINT() #define CUSTOM_PRINT(_) @@ -563,6 +559,8 @@ is_vtable_match (gpointer ptr, int type, void *data) #define END_PROTOCOL_ENTRY \ break; \ } +#define END_PROTOCOL_ENTRY_FLUSH \ + END_PROTOCOL_ENTRY #define END_PROTOCOL_ENTRY_HEAVY \ END_PROTOCOL_ENTRY -- 2.25.1