# HG changeset patch # User Christos Kotselidis # Date 1373209759 -7200 # Node ID 72d0ea03635b9974e310143a640b590a1c6f1c4e # Parent 88fa00e79d4a7e9c942a236620d5c8abaec2d38f Delegate GC counter from HotSpot to Graal for tracing purposes diff -r 88fa00e79d4a -r 72d0ea03635b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Sun Jul 07 17:02:15 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Sun Jul 07 17:09:19 2013 +0200 @@ -50,6 +50,7 @@ public boolean usePopCountInstruction; public boolean useAESIntrinsics; public boolean useG1GC; + public long gcTotalCollectionsAddress; // Compressed Oops related values. public boolean useCompressedOops; diff -r 88fa00e79d4a -r 72d0ea03635b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Sun Jul 07 17:02:15 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Sun Jul 07 17:09:19 2013 +0200 @@ -692,4 +692,9 @@ public static int verifiedEntryPointOffset() { return config().nmethodEntryOffset; } + + @Fold + public static long gcTotalCollectionsAddress() { + return config().gcTotalCollectionsAddress; + } } diff -r 88fa00e79d4a -r 72d0ea03635b src/share/vm/gc_interface/collectedHeap.hpp --- a/src/share/vm/gc_interface/collectedHeap.hpp Sun Jul 07 17:02:15 2013 +0200 +++ b/src/share/vm/gc_interface/collectedHeap.hpp Sun Jul 07 17:09:19 2013 +0200 @@ -490,7 +490,9 @@ // Total number of GC collections (started) unsigned int total_collections() const { return _total_collections; } unsigned int total_full_collections() const { return _total_full_collections;} - +#ifdef GRAAL + void* total_collections_address() { return &_total_collections;} +#endif // Increment total number of GC collections (started) // Should be protected but used by PSMarkSweep - cleanup for 1.4.2 void increment_total_collections(bool full = false) { diff -r 88fa00e79d4a -r 72d0ea03635b src/share/vm/graal/graalCompilerToVM.cpp --- a/src/share/vm/graal/graalCompilerToVM.cpp Sun Jul 07 17:02:15 2013 +0200 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Sun Jul 07 17:09:19 2013 +0200 @@ -907,6 +907,7 @@ set_int("g1SATBQueueBufferOffset", in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_buf())); set_address("writeBarrierPreAddress", GraalRuntime::write_barrier_pre); set_address("writeBarrierPostAddress", GraalRuntime::write_barrier_post); + set_address("gcTotalCollectionsAddress", (jlong)(address)(Universe::heap()->total_collections_address())); BarrierSet* bs = Universe::heap()->barrier_set(); switch (bs->kind()) {