# HG changeset patch # User Doug Simon # Date 1335810529 -7200 # Node ID e4e02131c58b11e74ef5245ea206ae1bc39a21ae # Parent 28577a53d3a75f3c2b3a413ec9d337605ab2e9d6 log file (i.e. -G:LogFile=log.txt option) now used for TTY output as well diff -r 28577a53d3a7 -r e4e02131c58b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilerThread.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilerThread.java Mon Apr 30 20:26:47 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilerThread.java Mon Apr 30 20:28:49 2012 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.hotspot; +import java.io.*; import java.util.concurrent.*; import com.oracle.graal.compiler.*; @@ -57,7 +58,8 @@ public void run() { if (GraalOptions.Debug) { Debug.enable(); - HotSpotDebugConfig hotspotDebugConfig = new HotSpotDebugConfig(GraalOptions.Log, GraalOptions.Meter, GraalOptions.Time, GraalOptions.Dump, GraalOptions.MethodFilter, GraalOptions.LogFile); + PrintStream log = CompilerImpl.getInstance().getVMToCompiler().log(); + HotSpotDebugConfig hotspotDebugConfig = new HotSpotDebugConfig(GraalOptions.Log, GraalOptions.Meter, GraalOptions.Time, GraalOptions.Dump, GraalOptions.MethodFilter, log); Debug.setConfig(hotspotDebugConfig); } super.run(); diff -r 28577a53d3a7 -r e4e02131c58b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugConfig.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugConfig.java Mon Apr 30 20:26:47 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugConfig.java Mon Apr 30 20:28:49 2012 +0200 @@ -43,10 +43,7 @@ private final List dumpHandlers = new ArrayList<>(); private final PrintStream output; - private static final PrintStream cachedOut = System.out; - - - public HotSpotDebugConfig(String logFilter, String meterFilter, String timerFilter, String dumpFilter, String methodFilter, String logFile) { + public HotSpotDebugConfig(String logFilter, String meterFilter, String timerFilter, String dumpFilter, String methodFilter, PrintStream output) { this.logFilter = DebugFilter.parse(logFilter); this.meterFilter = DebugFilter.parse(meterFilter); this.timerFilter = DebugFilter.parse(timerFilter); @@ -72,15 +69,7 @@ dumpHandlers.add(new IdealGraphPrinterDumpHandler(GraalOptions.PrintIdealGraphAddress, GraalOptions.PrintIdealGraphPort)); } dumpHandlers.add(new CFGPrinterObserver()); - if (logFile == null || logFile.isEmpty()) { - output = cachedOut; - } else { - try { - output = new PrintStream(logFile); - } catch (FileNotFoundException e) { - throw new RuntimeException("couldn't create log file: " + logFile, e); - } - } + this.output = output; } public boolean isLogEnabled() { @@ -163,10 +152,12 @@ Debug.log(String.format("Exception occured in scope: %s", Debug.currentScope())); for (Object o : Debug.context()) { Debug.log("Context obj %s", o); - if (o instanceof Graph && GraalOptions.DumpOnError) { - Graph graph = (Graph) o; - Debug.log("Found graph in context: ", graph); - Debug.dump(o, "Exception graph"); + if (o instanceof Graph) { + if (GraalOptions.DumpOnError) { + Debug.dump(o, "Exception graph"); + } else { + Debug.log("Use -G:+DumpOnError to enable dumping of graphs on this error"); + } } } return null; diff -r 28577a53d3a7 -r e4e02131c58b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompiler.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompiler.java Mon Apr 30 20:26:47 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompiler.java Mon Apr 30 20:28:49 2012 +0200 @@ -23,6 +23,8 @@ package com.oracle.graal.hotspot.bridge; +import java.io.*; + import com.oracle.graal.compiler.*; import com.oracle.graal.compiler.phases.*; import com.oracle.graal.hotspot.ri.*; @@ -42,6 +44,8 @@ void bootstrap() throws Throwable; + PrintStream log(); + RiMethod createRiMethodUnresolved(String name, String signature, RiType holder); RiSignature createRiSignature(String signature); diff -r 28577a53d3a7 -r e4e02131c58b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java Mon Apr 30 20:26:47 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java Mon Apr 30 20:28:49 2012 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.bridge; +import java.io.*; import java.lang.reflect.*; import java.util.*; import java.util.concurrent.*; @@ -67,6 +68,8 @@ private ThreadPoolExecutor slowCompileQueue; private AtomicInteger compileTaskIds = new AtomicInteger(); + private PrintStream log = System.out; + public VMToCompilerImpl(Compiler compiler) { this.compiler = compiler; @@ -82,8 +85,16 @@ } public void startCompiler() throws Throwable { - // Make sure TTY is initialized here such that the correct System.out is used for TTY. - TTY.initialize(); + if (GraalOptions.LogFile != null) { + try { + final boolean enableAutoflush = true; + log = new PrintStream(new FileOutputStream(GraalOptions.LogFile), enableAutoflush); + } catch (FileNotFoundException e) { + throw new RuntimeException("couldn't open log file: " + GraalOptions.LogFile, e); + } + } + + TTY.initialize(log); if (GraalOptions.Log == null && GraalOptions.Meter == null && GraalOptions.Time == null && GraalOptions.Dump == null) { if (GraalOptions.MethodFilter != null) { @@ -93,7 +104,7 @@ if (GraalOptions.Debug) { Debug.enable(); - HotSpotDebugConfig hotspotDebugConfig = new HotSpotDebugConfig(GraalOptions.Log, GraalOptions.Meter, GraalOptions.Time, GraalOptions.Dump, GraalOptions.MethodFilter, GraalOptions.LogFile); + HotSpotDebugConfig hotspotDebugConfig = new HotSpotDebugConfig(GraalOptions.Log, GraalOptions.Meter, GraalOptions.Time, GraalOptions.Dump, GraalOptions.MethodFilter, log); Debug.setConfig(hotspotDebugConfig); } // Install intrinsics. @@ -473,4 +484,9 @@ } return phasePlan; } + + @Override + public PrintStream log() { + return log; + } } diff -r 28577a53d3a7 -r e4e02131c58b graal/com.oracle.max.criutils/src/com/oracle/max/criutils/TTY.java --- a/graal/com.oracle.max.criutils/src/com/oracle/max/criutils/TTY.java Mon Apr 30 20:26:47 2012 +0200 +++ b/graal/com.oracle.max.criutils/src/com/oracle/max/criutils/TTY.java Mon Apr 30 20:28:49 2012 +0200 @@ -89,12 +89,10 @@ } } - public static final String MAX_TTY_LOG_FILE_PROPERTY = "max.tty.file"; - public static PrintStream cachedOut; - public static void initialize() { - cachedOut = System.out; + public static void initialize(PrintStream ps) { + cachedOut = ps; } private static LogStream createLog() { @@ -102,16 +100,7 @@ // In case initialize() was not called. cachedOut = System.out; } - PrintStream newOut = cachedOut; - String value = System.getProperty(MAX_TTY_LOG_FILE_PROPERTY); - if (value != null) { - try { - newOut = new PrintStream(new FileOutputStream(value)); - } catch (FileNotFoundException e) { - System.err.println("Could not open log file " + value + ": " + e); - } - } - return new LogStream(newOut); + return new LogStream(cachedOut); } private static final ThreadLocal out = new ThreadLocal() {