# HG changeset patch # User minqi # Date 1438326671 0 # Node ID 1c9c9d5945b8aa64b2d99177ea40d583ed596354 # Parent 93ee8f24e0a638d4b1f16f80dd1c7383908dfc53# Parent a94d2d18e04bce113c6b5867eaa40a455f984c8b Merge diff -r 93ee8f24e0a6 -r 1c9c9d5945b8 hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp --- a/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp Thu Jul 30 16:23:03 2015 +0000 +++ b/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp Fri Jul 31 07:11:11 2015 +0000 @@ -2187,7 +2187,7 @@ } void InterpreterMacroAssembler::increment_invocation_counter(Register Rcounters, Register iv_be_count, Register Rtmp_r0) { - assert(UseCompiler, "incrementing must be useful"); + assert(UseCompiler || LogTouchedMethods, "incrementing must be useful"); Register invocation_count = iv_be_count; Register backedge_count = Rtmp_r0; int delta = InvocationCounter::count_increment; diff -r 93ee8f24e0a6 -r 1c9c9d5945b8 hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp --- a/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp Thu Jul 30 16:23:03 2015 +0000 +++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp Fri Jul 31 07:11:11 2015 +0000 @@ -2314,7 +2314,7 @@ } void InterpreterMacroAssembler::increment_invocation_counter( Register Rcounters, Register Rtmp, Register Rtmp2 ) { - assert(UseCompiler, "incrementing must be useful"); + assert(UseCompiler || LogTouchedMethods, "incrementing must be useful"); assert_different_registers(Rcounters, Rtmp, Rtmp2); Address inv_counter(Rcounters, MethodCounters::invocation_counter_offset() + diff -r 93ee8f24e0a6 -r 1c9c9d5945b8 hotspot/test/runtime/CommandLine/PrintTouchedMethods.java --- a/hotspot/test/runtime/CommandLine/PrintTouchedMethods.java Thu Jul 30 16:23:03 2015 +0000 +++ b/hotspot/test/runtime/CommandLine/PrintTouchedMethods.java Fri Jul 31 07:11:11 2015 +0000 @@ -87,6 +87,24 @@ output.shouldNotContain("TestLogTouchedMethods.methodB:()V"); output.shouldHaveExitValue(0); + String[] javaArgs4 = {"-XX:+UnlockDiagnosticVMOptions", "-Xint", "-XX:+LogTouchedMethods", "-XX:+PrintTouchedMethodsAtExit", "-XX:-TieredCompilation", "TestLogTouchedMethods"}; + pb = ProcessTools.createJavaProcessBuilder(javaArgs4); + output = new OutputAnalyzer(pb.start()); + lines = output.asLines(); + + if (lines.size() < 1) { + throw new Exception("Empty output"); + } + + first = lines.get(0); + if (!first.equals("# Method::print_touched_methods version 1")) { + throw new Exception("First line mismatch"); + } + + output.shouldContain("TestLogTouchedMethods.methodA:()V"); + output.shouldNotContain("TestLogTouchedMethods.methodB:()V"); + output.shouldHaveExitValue(0); + // Test jcmd PrintTouchedMethods VM.print_touched_methods String pid = Integer.toString(ProcessTools.getProcessId()); pb = new ProcessBuilder();