# HG changeset patch # User Tom Rodriguez # Date 1414783256 25200 # Node ID 6eda3b299460a70c88a5adc5422d3489af97bbb6 # Parent 40074f6ac788c3e20d090a7339500477893b930f Record compilation dependencies with +LogCompilation diff -r 40074f6ac788 -r 6eda3b299460 src/share/vm/code/dependencies.cpp --- a/src/share/vm/code/dependencies.cpp Fri Oct 31 11:25:32 2014 -0700 +++ b/src/share/vm/code/dependencies.cpp Fri Oct 31 12:20:56 2014 -0700 @@ -125,9 +125,9 @@ #ifdef GRAAL -Dependencies::Dependencies(Arena* arena, OopRecorder* oop_recorder) { +Dependencies::Dependencies(Arena* arena, OopRecorder* oop_recorder, CompileLog* log) { _oop_recorder = oop_recorder; - _log = NULL; + _log = log; _dep_seen = new(arena) GrowableArray(arena, 500, 0, 0); _using_dep_values = true; DEBUG_ONLY(_dep_values[end_marker] = NULL); @@ -792,8 +792,14 @@ } } if (_deps != NULL && _deps->log() != NULL) { - Dependencies::write_dependency_to(_deps->log(), - type(), nargs, args, witness); + if (ciEnv::current() != NULL) { + Dependencies::write_dependency_to(_deps->log(), + type(), nargs, args, witness); + } else { + // Treat the CompileLog as an xmlstream instead + Dependencies::write_dependency_to((xmlStream*)_deps->log(), + type(), nargs, args, witness); + } } else { Dependencies::write_dependency_to(xtty, type(), nargs, args, witness); diff -r 40074f6ac788 -r 6eda3b299460 src/share/vm/code/dependencies.hpp --- a/src/share/vm/code/dependencies.hpp Fri Oct 31 11:25:32 2014 -0700 +++ b/src/share/vm/code/dependencies.hpp Fri Oct 31 12:20:56 2014 -0700 @@ -312,7 +312,7 @@ initialize(env); } #ifdef GRAAL - Dependencies(Arena* arena, OopRecorder* oop_recorder); + Dependencies(Arena* arena, OopRecorder* oop_recorder, CompileLog* log); #endif // GRAAL private: diff -r 40074f6ac788 -r 6eda3b299460 src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Fri Oct 31 11:25:32 2014 -0700 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Fri Oct 31 12:20:56 2014 -0700 @@ -390,8 +390,10 @@ } void CodeInstaller::initialize_assumptions(oop compiled_code) { + JavaThread* thread = JavaThread::current(); + CompilerThread* compilerThread = thread->is_Compiler_thread() ? thread->as_CompilerThread() : NULL; _oop_recorder = new OopRecorder(&_arena, true); - _dependencies = new Dependencies(&_arena, _oop_recorder); + _dependencies = new Dependencies(&_arena, _oop_recorder, compilerThread != NULL ? compilerThread->log() : NULL); Handle assumptions_handle = CompilationResult::assumptions(HotSpotCompiledCode::comp(compiled_code)); if (!assumptions_handle.is_null()) { objArrayHandle assumptions(Thread::current(), Assumptions::list(assumptions_handle())); diff -r 40074f6ac788 -r 6eda3b299460 src/share/vm/graal/graalEnv.cpp --- a/src/share/vm/graal/graalEnv.cpp Fri Oct 31 11:25:32 2014 -0700 +++ b/src/share/vm/graal/graalEnv.cpp Fri Oct 31 12:20:56 2014 -0700 @@ -428,6 +428,7 @@ if (witness != NULL) { return false; } + deps.log_dependency(); } return true;