Mercurial > hg > graal-compiler
diff src/share/vm/compiler/compilerOracle.cpp @ 6275:957c266d8bc5
Merge with http://hg.openjdk.java.net/hsx/hsx24/hotspot/
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 21 Aug 2012 10:39:19 +0200 |
parents | 716a2c5c0656 90d5a592ea8f |
children | e522a00b91aa |
line wrap: on
line diff
--- a/src/share/vm/compiler/compilerOracle.cpp Mon Aug 20 15:21:31 2012 +0200 +++ b/src/share/vm/compiler/compilerOracle.cpp Tue Aug 21 10:39:19 2012 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,7 +34,7 @@ #include "runtime/handles.inline.hpp" #include "runtime/jniHandles.hpp" -class MethodMatcher : public CHeapObj { +class MethodMatcher : public CHeapObj<mtCompiler> { public: enum Mode { Exact, @@ -550,14 +550,24 @@ } } +static const char* default_cc_file = ".hotspot_compiler"; + static const char* cc_file() { +#ifdef ASSERT if (CompileCommandFile == NULL) - return ".hotspot_compiler"; + return default_cc_file; +#endif return CompileCommandFile; } + +bool CompilerOracle::has_command_file() { + return cc_file() != NULL; +} + bool CompilerOracle::_quiet = false; void CompilerOracle::parse_from_file() { + assert(has_command_file(), "command file must be specified"); FILE* stream = fopen(cc_file(), "rt"); if (stream == NULL) return; @@ -600,6 +610,7 @@ } void CompilerOracle::append_comment_to_file(const char* message) { + assert(has_command_file(), "command file must be specified"); fileStream stream(fopen(cc_file(), "at")); stream.print("# "); for (int index = 0; message[index] != '\0'; index++) { @@ -610,6 +621,7 @@ } void CompilerOracle::append_exclude_to_file(methodHandle method) { + assert(has_command_file(), "command file must be specified"); fileStream stream(fopen(cc_file(), "at")); stream.print("exclude "); Klass::cast(method->method_holder())->name()->print_symbol_on(&stream); @@ -624,10 +636,19 @@ void compilerOracle_init() { CompilerOracle::parse_from_string(CompileCommand, CompilerOracle::parse_from_line); CompilerOracle::parse_from_string(CompileOnly, CompilerOracle::parse_compile_only); - CompilerOracle::parse_from_file(); + if (CompilerOracle::has_command_file()) { + CompilerOracle::parse_from_file(); + } else { + struct stat buf; + if (os::stat(default_cc_file, &buf) == 0) { + warning("%s file is present but has been ignored. " + "Run with -XX:CompileCommandFile=%s to load the file.", + default_cc_file, default_cc_file); + } + } if (lists[PrintCommand] != NULL) { if (PrintAssembly) { - warning("CompileCommand and/or .hotspot_compiler file contains 'print' commands, but PrintAssembly is also enabled"); + warning("CompileCommand and/or %s file contains 'print' commands, but PrintAssembly is also enabled", default_cc_file); } else if (FLAG_IS_DEFAULT(DebugNonSafepoints)) { warning("printing of assembly code is enabled; turning on DebugNonSafepoints to gain additional output"); DebugNonSafepoints = true;