[sgen] Flush after writing the protocol entry
authorVlad Brezae <brezaevlad@gmail.com>
Fri, 14 Aug 2015 02:03:17 +0000 (19:03 -0700)
committerVlad Brezae <brezaevlad@gmail.com>
Fri, 28 Aug 2015 18:41:42 +0000 (11:41 -0700)
mono/sgen/sgen-client.h
mono/sgen/sgen-protocol-def.h
mono/sgen/sgen-protocol.c
mono/sgen/sgen-protocol.h
tools/sgen/sgen-grep-binprot.c

index cb332823789a01da7a3ac9ee0a2ad2b987d82b8a..15ff659f715e42ff5b6070425188447d9d500c95 100644 (file)
@@ -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"
index c546bac45c895b4aa2f07b9d35b47e5f31845a12..ca1e053e64ba01fef649be738e5875dc384f8320 100644 (file)
@@ -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
index cb512fedf4fb503bc711709d5237d3134544dad0..4ea1ac391c9a4e083a5fa3f842d1e8ed3548ff53 100644 (file)
@@ -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)
index 2b7176e5f2d062118f01c0c1cc51b24e616d0bbc..220418e8167deea8101378669fffc325ee38be66 100644 (file)
@@ -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"
index 761b695c61b128f595ab309bb0e69adfdfeb872d..49aa9506009e61411990764a262ad454eeeca8cf 100644 (file)
@@ -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 <mono/sgen/sgen-protocol-def.h>
@@ -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 <mono/sgen/sgen-protocol-def.h>
@@ -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