#endif //GC_HISTORY && BACKGROUND_GC
}
-#ifdef TRACE_GC
+#if defined(TRACE_GC) && defined(SIMPLE_DPRINTF)
BOOL gc_log_on = TRUE;
FILE* gc_log = NULL;
size_t gc_log_file_size = 0;
uint8_t* gc_log_buffer = 0;
size_t gc_log_buffer_offset = 0;
+void flush_gc_log (bool close)
+{
+ if (gc_log_on && (gc_log != NULL))
+ {
+ fwrite(gc_log_buffer, gc_log_buffer_offset, 1, gc_log);
+ fflush(gc_log);
+ if (close)
+ {
+ fclose(gc_log);
+ gc_log_on = false;
+ gc_log = NULL;
+ }
+ gc_log_buffer_offset = 0;
+ }
+}
+
void log_va_msg(const char *fmt, va_list args)
{
gc_log_lock.Enter();
va_end(args);
}
}
-#endif // TRACE_GC
+#endif //TRACE_GC && SIMPLE_DPRINTF
#ifdef GC_CONFIG_DRIVEN
void GCHeap::Shutdown()
{
-#if defined(TRACE_GC) && !defined(BUILD_AS_STANDALONE)
- if (gc_log_on && (gc_log != NULL))
- {
- fwrite(gc_log_buffer, gc_log_buffer_offset, 1, gc_log);
- fflush(gc_log);
- fclose(gc_log);
- gc_log_buffer_offset = 0;
- }
-#endif //TRACE_GC && !BUILD_AS_STANDALONE
+#if defined(TRACE_GC) && defined(SIMPLE_DPRINTF) && !defined(BUILD_AS_STANDALONE)
+ flush_gc_log (true);
+#endif //TRACE_GC && SIMPLE_DPRINTF && !BUILD_AS_STANDALONE
}
#ifdef SYNCHRONIZATION_STATS
#endif //MULTIPLE_HEAPS
)
{
-#ifdef TRACE_GC
+#if defined(TRACE_GC) && defined(SIMPLE_DPRINTF)
if (GCConfig::GetLogEnabled())
{
gc_log = CreateLogFile(GCConfig::GetLogFile(), false);
max_gc_buffers = gc_log_file_size * 1024 * 1024 / gc_log_buffer_size;
}
-#endif // TRACE_GC
+#endif //TRACE_GC && SIMPLE_DPRINTF
#ifdef GC_CONFIG_DRIVEN
if (GCConfig::GetConfigLogEnabled())
settings.entry_memory_load,
current_memory_load));
+#if defined(TRACE_GC) && defined(SIMPLE_DPRINTF)
+ flush_gc_log (false);
+#endif //TRACE_GC && SIMPLE_DPRINTF
+
// Now record the gc info.
last_recorded_gc_info* last_gc_info = 0;
#ifdef BACKGROUND_GC
#pragma warning(disable:4477)
#endif //_MSC_VER
+//#define TRACE_GC
+//#define SIMPLE_DPRINTF
+
+#if defined(TRACE_GC) && defined(SIMPLE_DPRINTF)
+void flush_gc_log (bool);
+#endif //TRACE_GC && SIMPLE_DPRINTF
inline void FATAL_GC_ERROR()
{
+#if defined(TRACE_GC) && defined(SIMPLE_DPRINTF)
+ flush_gc_log (true);
+#endif //TRACE_GC && SIMPLE_DPRINTF
GCToOSInterface::DebugBreak();
_ASSERTE(!"Fatal Error in GC.");
GCToEEInterface::HandleFatalError((unsigned int)COR_E_EXECUTIONENGINE);
#define MAX_LONGPATH 1024
#endif // MAX_LONGPATH
-//#define TRACE_GC
-//#define SIMPLE_DPRINTF
-
//#define JOIN_STATS //amount of time spent in the join
//#define SYNCHRONIZATION_STATS