mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8046282: SA update
These changes add some definitions on the SA side and the supporting code on the hotspot side. Reviewed-by: sundar, mgronlun
This commit is contained in:
parent
5cfb709349
commit
754a598a62
16 changed files with 589 additions and 1 deletions
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.jvm.hotspot.gc_interface;
|
||||||
|
|
||||||
|
//These definitions should be kept in sync with the definitions in the HotSpot
|
||||||
|
//code.
|
||||||
|
|
||||||
|
public enum G1YCType {
|
||||||
|
Normal ("Normal"),
|
||||||
|
InitialMark ("Initial Mark"),
|
||||||
|
DuringMark ("During Mark"),
|
||||||
|
Mixed ("Mixed"),
|
||||||
|
G1YCTypeEndSentinel ("Unknown");
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
G1YCType(String val) {
|
||||||
|
this.value = val;
|
||||||
|
}
|
||||||
|
public String value() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.jvm.hotspot.gc_interface;
|
||||||
|
|
||||||
|
//These definitions should be kept in sync with the definitions in the HotSpot code.
|
||||||
|
|
||||||
|
public enum GCCause {
|
||||||
|
_java_lang_system_gc ("System.gc()"),
|
||||||
|
_full_gc_alot ("FullGCAlot"),
|
||||||
|
_scavenge_alot ("ScavengeAlot"),
|
||||||
|
_allocation_profiler ("Allocation Profiler"),
|
||||||
|
_jvmti_force_gc ("JvmtiEnv ForceGarbageCollection"),
|
||||||
|
_gc_locker ("GCLocker Initiated GC"),
|
||||||
|
_heap_inspection ("Heap Inspection Initiated GC"),
|
||||||
|
_heap_dump ("Heap Dump Initiated GC"),
|
||||||
|
|
||||||
|
_no_gc ("No GC"),
|
||||||
|
_no_cause_specified ("Unknown GCCause"),
|
||||||
|
_allocation_failure ("Allocation Failure"),
|
||||||
|
|
||||||
|
_tenured_generation_full ("Tenured Generation Full"),
|
||||||
|
_metadata_GC_threshold ("Metadata GC Threshold"),
|
||||||
|
|
||||||
|
_cms_generation_full ("CMS Generation Full"),
|
||||||
|
_cms_initial_mark ("CMS Initial Mark"),
|
||||||
|
_cms_final_remark ("CMS Final Remark"),
|
||||||
|
_cms_concurrent_mark ("CMS Concurrent Mark"),
|
||||||
|
|
||||||
|
_old_generation_expanded_on_last_scavenge ("Old Generation Expanded On Last Scavenge"),
|
||||||
|
_old_generation_too_full_to_scavenge ("Old Generation Too Full To Scavenge"),
|
||||||
|
_adaptive_size_policy ("Ergonomics"),
|
||||||
|
|
||||||
|
_g1_inc_collection_pause ("G1 Evacuation Pause"),
|
||||||
|
_g1_humongous_allocation ("G1 Humongous Allocation"),
|
||||||
|
|
||||||
|
_last_ditch_collection ("Last ditch collection"),
|
||||||
|
_last_gc_cause ("ILLEGAL VALUE - last gc cause - ILLEGAL VALUE");
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
GCCause(String val) {
|
||||||
|
this.value = val;
|
||||||
|
}
|
||||||
|
public String value() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.jvm.hotspot.gc_interface;
|
||||||
|
|
||||||
|
//These definitions should be kept in sync with the definitions in the HotSpot code.
|
||||||
|
|
||||||
|
public enum GCName {
|
||||||
|
ParallelOld ("ParallelOld"),
|
||||||
|
SerialOld ("SerialOld"),
|
||||||
|
PSMarkSweep ("PSMarkSweep"),
|
||||||
|
ParallelScavenge ("ParallelScavenge"),
|
||||||
|
DefNew ("DefNew"),
|
||||||
|
ParNew ("ParNew"),
|
||||||
|
G1New ("G1New"),
|
||||||
|
ConcurrentMarkSweep ("ConcurrentMarkSweep"),
|
||||||
|
G1Old ("G1Old"),
|
||||||
|
GCNameEndSentinel ("GCNameEndSentinel");
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
GCName(String val) {
|
||||||
|
this.value = val;
|
||||||
|
}
|
||||||
|
public String value() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.jvm.hotspot.gc_interface;
|
||||||
|
|
||||||
|
//These definitions should be kept in sync with the definitions in the HotSpot code.
|
||||||
|
|
||||||
|
public enum GCWhen {
|
||||||
|
BeforeGC ("Before GC"),
|
||||||
|
AfterGC ("After GC"),
|
||||||
|
GCWhenEndSentinel ("GCWhenEndSentinel");
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
GCWhen(String val) {
|
||||||
|
this.value = val;
|
||||||
|
}
|
||||||
|
public String value() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.jvm.hotspot.gc_interface;
|
||||||
|
|
||||||
|
//These definitions should be kept in sync with the definitions in the HotSpot code.
|
||||||
|
|
||||||
|
public enum ReferenceType {
|
||||||
|
REF_NONE ("None reference"), // Regular class
|
||||||
|
REF_OTHER ("Other reference"), // Subclass of java/lang/ref/Reference, but not subclass of one of the classes below
|
||||||
|
REF_SOFT ("Soft reference"), // Subclass of java/lang/ref/SoftReference
|
||||||
|
REF_WEAK ("Weak reference"), // Subclass of java/lang/ref/WeakReference
|
||||||
|
REF_FINAL ("Final reference"), // Subclass of java/lang/ref/FinalReference
|
||||||
|
REF_PHANTOM ("Phantom reference"); // Subclass of java/lang/ref/PhantomReference
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
ReferenceType(String val) {
|
||||||
|
this.value = val;
|
||||||
|
}
|
||||||
|
public String value() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -56,6 +56,12 @@ public class Universe {
|
||||||
private static AddressField narrowKlassBaseField;
|
private static AddressField narrowKlassBaseField;
|
||||||
private static CIntegerField narrowKlassShiftField;
|
private static CIntegerField narrowKlassShiftField;
|
||||||
|
|
||||||
|
public enum NARROW_OOP_MODE {
|
||||||
|
UnscaledNarrowOop,
|
||||||
|
ZeroBasedNarrowOop,
|
||||||
|
HeapBasedNarrowOop
|
||||||
|
}
|
||||||
|
|
||||||
static {
|
static {
|
||||||
VM.registerVMInitializedObserver(new Observer() {
|
VM.registerVMInitializedObserver(new Observer() {
|
||||||
public void update(Observable o, Object data) {
|
public void update(Observable o, Object data) {
|
||||||
|
@ -94,7 +100,17 @@ public class Universe {
|
||||||
|
|
||||||
public Universe() {
|
public Universe() {
|
||||||
}
|
}
|
||||||
|
public static String narrowOopModeToString(NARROW_OOP_MODE mode) {
|
||||||
|
switch (mode) {
|
||||||
|
case UnscaledNarrowOop:
|
||||||
|
return "32-bits Oops";
|
||||||
|
case ZeroBasedNarrowOop:
|
||||||
|
return "zero based Compressed Oops";
|
||||||
|
case HeapBasedNarrowOop:
|
||||||
|
return "Compressed Oops with base";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
public CollectedHeap heap() {
|
public CollectedHeap heap() {
|
||||||
try {
|
try {
|
||||||
return (CollectedHeap) heapConstructor.instantiateWrapperFor(collectedHeapField.getValue());
|
return (CollectedHeap) heapConstructor.instantiateWrapperFor(collectedHeapField.getValue());
|
||||||
|
|
|
@ -55,6 +55,7 @@ public class Klass extends Metadata implements ClassConstants {
|
||||||
layoutHelper = new IntField(type.getJIntField("_layout_helper"), 0);
|
layoutHelper = new IntField(type.getJIntField("_layout_helper"), 0);
|
||||||
name = type.getAddressField("_name");
|
name = type.getAddressField("_name");
|
||||||
accessFlags = new CIntField(type.getCIntegerField("_access_flags"), 0);
|
accessFlags = new CIntField(type.getCIntegerField("_access_flags"), 0);
|
||||||
|
traceIDField = type.getField("_trace_id");
|
||||||
subklass = new MetadataField(type.getAddressField("_subklass"), 0);
|
subklass = new MetadataField(type.getAddressField("_subklass"), 0);
|
||||||
nextSibling = new MetadataField(type.getAddressField("_next_sibling"), 0);
|
nextSibling = new MetadataField(type.getAddressField("_next_sibling"), 0);
|
||||||
|
|
||||||
|
@ -86,6 +87,7 @@ public class Klass extends Metadata implements ClassConstants {
|
||||||
private static CIntField accessFlags;
|
private static CIntField accessFlags;
|
||||||
private static MetadataField subklass;
|
private static MetadataField subklass;
|
||||||
private static MetadataField nextSibling;
|
private static MetadataField nextSibling;
|
||||||
|
private static sun.jvm.hotspot.types.Field traceIDField;
|
||||||
|
|
||||||
private Address getValue(AddressField field) {
|
private Address getValue(AddressField field) {
|
||||||
return addr.getAddressAt(field.getOffset());
|
return addr.getAddressAt(field.getOffset());
|
||||||
|
@ -106,6 +108,7 @@ public class Klass extends Metadata implements ClassConstants {
|
||||||
public AccessFlags getAccessFlagsObj(){ return new AccessFlags(getAccessFlags()); }
|
public AccessFlags getAccessFlagsObj(){ return new AccessFlags(getAccessFlags()); }
|
||||||
public Klass getSubklassKlass() { return (Klass) subklass.getValue(this); }
|
public Klass getSubklassKlass() { return (Klass) subklass.getValue(this); }
|
||||||
public Klass getNextSiblingKlass() { return (Klass) nextSibling.getValue(this); }
|
public Klass getNextSiblingKlass() { return (Klass) nextSibling.getValue(this); }
|
||||||
|
public long traceID() { return traceIDField.getJLong(addr); }
|
||||||
|
|
||||||
// computed access flags - takes care of inner classes etc.
|
// computed access flags - takes care of inner classes etc.
|
||||||
// This is closer to actual source level than getAccessFlags() etc.
|
// This is closer to actual source level than getAccessFlags() etc.
|
||||||
|
|
|
@ -54,6 +54,8 @@ public class OopUtilities implements /* imports */ JVMTIThreadState {
|
||||||
private static OopField threadNameField;
|
private static OopField threadNameField;
|
||||||
private static OopField threadGroupField;
|
private static OopField threadGroupField;
|
||||||
private static LongField threadEETopField;
|
private static LongField threadEETopField;
|
||||||
|
//tid field is new since 1.5
|
||||||
|
private static LongField threadTIDField;
|
||||||
// threadStatus field is new since 1.5
|
// threadStatus field is new since 1.5
|
||||||
private static IntField threadStatusField;
|
private static IntField threadStatusField;
|
||||||
// parkBlocker field is new since 1.6
|
// parkBlocker field is new since 1.6
|
||||||
|
@ -220,6 +222,7 @@ public class OopUtilities implements /* imports */ JVMTIThreadState {
|
||||||
threadNameField = (OopField) k.findField("name", "[C");
|
threadNameField = (OopField) k.findField("name", "[C");
|
||||||
threadGroupField = (OopField) k.findField("group", "Ljava/lang/ThreadGroup;");
|
threadGroupField = (OopField) k.findField("group", "Ljava/lang/ThreadGroup;");
|
||||||
threadEETopField = (LongField) k.findField("eetop", "J");
|
threadEETopField = (LongField) k.findField("eetop", "J");
|
||||||
|
threadTIDField = (LongField) k.findField("tid", "J");
|
||||||
threadStatusField = (IntField) k.findField("threadStatus", "I");
|
threadStatusField = (IntField) k.findField("threadStatus", "I");
|
||||||
threadParkBlockerField = (OopField) k.findField("parkBlocker",
|
threadParkBlockerField = (OopField) k.findField("parkBlocker",
|
||||||
"Ljava/lang/Object;");
|
"Ljava/lang/Object;");
|
||||||
|
@ -268,6 +271,15 @@ public class OopUtilities implements /* imports */ JVMTIThreadState {
|
||||||
return VM.getVM().getThreads().createJavaThreadWrapper(addr);
|
return VM.getVM().getThreads().createJavaThreadWrapper(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static long threadOopGetTID(Oop threadOop) {
|
||||||
|
initThreadFields();
|
||||||
|
if (threadTIDField != null) {
|
||||||
|
return threadTIDField.getValue(threadOop);
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** returns value of java.lang.Thread.threadStatus field */
|
/** returns value of java.lang.Thread.threadStatus field */
|
||||||
public static int threadOopGetThreadStatus(Oop threadOop) {
|
public static int threadOopGetThreadStatus(Oop threadOop) {
|
||||||
initThreadFields();
|
initThreadFields();
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.jvm.hotspot.opto;
|
||||||
|
|
||||||
|
//These definitions should be kept in sync with the definitions in the HotSpot code.
|
||||||
|
|
||||||
|
public enum CompilerPhaseType {
|
||||||
|
PHASE_BEFORE_STRINGOPTS ("Before StringOpts"),
|
||||||
|
PHASE_AFTER_STRINGOPTS ("After StringOpts"),
|
||||||
|
PHASE_BEFORE_REMOVEUSELESS ("Before RemoveUseless"),
|
||||||
|
PHASE_AFTER_PARSING ("After Parsing"),
|
||||||
|
PHASE_ITER_GVN1 ("Iter GVN 1"),
|
||||||
|
PHASE_PHASEIDEAL_BEFORE_EA ("PhaseIdealLoop before EA"),
|
||||||
|
PHASE_ITER_GVN_AFTER_EA ("Iter GVN after EA"),
|
||||||
|
PHASE_ITER_GVN_AFTER_ELIMINATION ("Iter GVN after eliminating allocations and locks"),
|
||||||
|
PHASE_PHASEIDEALLOOP1 ("PhaseIdealLoop 1"),
|
||||||
|
PHASE_PHASEIDEALLOOP2 ("PhaseIdealLoop 2"),
|
||||||
|
PHASE_PHASEIDEALLOOP3 ("PhaseIdealLoop 3"),
|
||||||
|
PHASE_CPP1 ("PhaseCPP 1"),
|
||||||
|
PHASE_ITER_GVN2 ("Iter GVN 2"),
|
||||||
|
PHASE_PHASEIDEALLOOP_ITERATIONS ("PhaseIdealLoop iterations"),
|
||||||
|
PHASE_OPTIMIZE_FINISHED ("Optimize finished"),
|
||||||
|
PHASE_GLOBAL_CODE_MOTION ("Global code motion"),
|
||||||
|
PHASE_FINAL_CODE ("Final Code"),
|
||||||
|
PHASE_AFTER_EA ("After Escape Analysis"),
|
||||||
|
PHASE_BEFORE_CLOOPS ("Before CountedLoop"),
|
||||||
|
PHASE_AFTER_CLOOPS ("After CountedLoop"),
|
||||||
|
PHASE_BEFORE_BEAUTIFY_LOOPS ("Before beautify loops"),
|
||||||
|
PHASE_AFTER_BEAUTIFY_LOOPS ("After beautify loops"),
|
||||||
|
PHASE_BEFORE_MATCHING ("Before Matching"),
|
||||||
|
PHASE_INCREMENTAL_INLINE ("Incremental Inline"),
|
||||||
|
PHASE_INCREMENTAL_BOXING_INLINE ("Incremental Boxing Inline"),
|
||||||
|
PHASE_END ("End"),
|
||||||
|
PHASE_FAILURE ("Failure"),
|
||||||
|
PHASE_NUM_TYPES ("Number of Phase Types");
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
CompilerPhaseType(String val) {
|
||||||
|
this.value = val;
|
||||||
|
}
|
||||||
|
public String value() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.jvm.hotspot.runtime;
|
||||||
|
|
||||||
|
//These definitions should be kept in sync with the definitions in the HotSpot code.
|
||||||
|
|
||||||
|
public enum Flags {
|
||||||
|
// value origin
|
||||||
|
DEFAULT ("Default"),
|
||||||
|
COMMAND_LINE ("Command line"),
|
||||||
|
ENVIRON_VAR ("Environment variable"),
|
||||||
|
CONFIG_FILE ("Config file"),
|
||||||
|
MANAGEMENT ("Management"),
|
||||||
|
ERGONOMIC ("Ergonomic"),
|
||||||
|
ATTACH_ON_DEMAND ("Attach on demand"),
|
||||||
|
INTERNAL ("Internal");
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
Flags(String val) {
|
||||||
|
this.value = val;
|
||||||
|
}
|
||||||
|
public String value() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -41,6 +41,8 @@ public class Thread extends VMObject {
|
||||||
private static AddressField currentPendingMonitorField;
|
private static AddressField currentPendingMonitorField;
|
||||||
private static AddressField currentWaitingMonitorField;
|
private static AddressField currentWaitingMonitorField;
|
||||||
|
|
||||||
|
private static JLongField allocatedBytesField;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
VM.registerVMInitializedObserver(new Observer() {
|
VM.registerVMInitializedObserver(new Observer() {
|
||||||
public void update(Observable o, Object data) {
|
public void update(Observable o, Object data) {
|
||||||
|
@ -61,6 +63,7 @@ public class Thread extends VMObject {
|
||||||
activeHandlesField = type.getAddressField("_active_handles");
|
activeHandlesField = type.getAddressField("_active_handles");
|
||||||
currentPendingMonitorField = type.getAddressField("_current_pending_monitor");
|
currentPendingMonitorField = type.getAddressField("_current_pending_monitor");
|
||||||
currentWaitingMonitorField = type.getAddressField("_current_waiting_monitor");
|
currentWaitingMonitorField = type.getAddressField("_current_waiting_monitor");
|
||||||
|
allocatedBytesField = type.getJLongField("_allocated_bytes");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Thread(Address addr) {
|
public Thread(Address addr) {
|
||||||
|
@ -104,6 +107,10 @@ public class Thread extends VMObject {
|
||||||
return new JNIHandleBlock(a);
|
return new JNIHandleBlock(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long allocatedBytes() {
|
||||||
|
return allocatedBytesField.getValue(addr);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isVMThread() { return false; }
|
public boolean isVMThread() { return false; }
|
||||||
public boolean isJavaThread() { return false; }
|
public boolean isJavaThread() { return false; }
|
||||||
public boolean isCompilerThread() { return false; }
|
public boolean isCompilerThread() { return false; }
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.jvm.hotspot.runtime;
|
||||||
|
|
||||||
|
//These definitions should be kept in sync with the definitions in the HotSpot code.
|
||||||
|
|
||||||
|
public enum VMOps {
|
||||||
|
Dummy,
|
||||||
|
ThreadStop,
|
||||||
|
ThreadDump,
|
||||||
|
PrintThreads,
|
||||||
|
FindDeadlocks,
|
||||||
|
ForceSafepoint,
|
||||||
|
ForceAsyncSafepoint,
|
||||||
|
Deoptimize,
|
||||||
|
DeoptimizeFrame,
|
||||||
|
DeoptimizeAll,
|
||||||
|
ZombieAll,
|
||||||
|
UnlinkSymbols,
|
||||||
|
Verify,
|
||||||
|
PrintJNI,
|
||||||
|
HeapDumper,
|
||||||
|
DeoptimizeTheWorld,
|
||||||
|
CollectForMetadataAllocation,
|
||||||
|
GC_HeapInspection,
|
||||||
|
GenCollectFull,
|
||||||
|
GenCollectFullConcurrent,
|
||||||
|
GenCollectForAllocation,
|
||||||
|
ParallelGCFailedAllocation,
|
||||||
|
ParallelGCSystemGC,
|
||||||
|
CGC_Operation,
|
||||||
|
CMS_Initial_Mark,
|
||||||
|
CMS_Final_Remark,
|
||||||
|
G1CollectFull,
|
||||||
|
G1CollectForAllocation,
|
||||||
|
G1IncCollectionPause,
|
||||||
|
EnableBiasedLocking,
|
||||||
|
RevokeBias,
|
||||||
|
BulkRevokeBias,
|
||||||
|
PopulateDumpSharedSpace,
|
||||||
|
JNIFunctionTableCopier,
|
||||||
|
RedefineClasses,
|
||||||
|
GetOwnedMonitorInfo,
|
||||||
|
GetObjectMonitorUsage,
|
||||||
|
GetCurrentContendedMonitor,
|
||||||
|
GetStackTrace,
|
||||||
|
GetMultipleStackTraces,
|
||||||
|
GetAllStackTraces,
|
||||||
|
GetThreadListStackTraces,
|
||||||
|
GetFrameCount,
|
||||||
|
GetFrameLocation,
|
||||||
|
ChangeBreakpoints,
|
||||||
|
GetOrSetLocal,
|
||||||
|
GetCurrentLocation,
|
||||||
|
EnterInterpOnlyMode,
|
||||||
|
ChangeSingleStep,
|
||||||
|
HeapWalkOperation,
|
||||||
|
HeapIterateOperation,
|
||||||
|
ReportJavaOutOfMemory,
|
||||||
|
JFRCheckpoint,
|
||||||
|
Exit,
|
||||||
|
LinuxDllLoad,
|
||||||
|
Terminating
|
||||||
|
}
|
|
@ -29,8 +29,12 @@
|
||||||
# and generate JNI header file for native methods.
|
# and generate JNI header file for native methods.
|
||||||
|
|
||||||
include $(GAMMADIR)/make/solaris/makefiles/rules.make
|
include $(GAMMADIR)/make/solaris/makefiles/rules.make
|
||||||
|
include $(GAMMADIR)/make/defs.make
|
||||||
AGENT_DIR = $(GAMMADIR)/agent
|
AGENT_DIR = $(GAMMADIR)/agent
|
||||||
include $(GAMMADIR)/make/sa.files
|
include $(GAMMADIR)/make/sa.files
|
||||||
|
|
||||||
|
-include $(HS_ALT_MAKE)/solaris/makefiles/sa.make
|
||||||
|
|
||||||
GENERATED = ../generated
|
GENERATED = ../generated
|
||||||
|
|
||||||
# tools.jar is needed by the JDI - SA binding
|
# tools.jar is needed by the JDI - SA binding
|
||||||
|
|
|
@ -38,6 +38,22 @@ checkAndBuildSA::
|
||||||
|
|
||||||
GENERATED = ../generated
|
GENERATED = ../generated
|
||||||
|
|
||||||
|
HS_COMMON_SRC_REL = src
|
||||||
|
|
||||||
|
!if "$(OPENJDK)" != "true"
|
||||||
|
HS_ALT_SRC_REL=src/closed
|
||||||
|
HS_ALT_SRC = $(WorkSpace)/$(HS_ALT_SRC_REL)
|
||||||
|
!ifndef HS_ALT_MAKE
|
||||||
|
HS_ALT_MAKE=$(WorkSpace)/make/closed
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
|
||||||
|
HS_COMMON_SRC = $(WorkSpace)/$(HS_COMMON_SRC_REL)
|
||||||
|
|
||||||
|
!ifdef HS_ALT_MAKE
|
||||||
|
!include $(HS_ALT_MAKE)/windows/makefiles/sa.make
|
||||||
|
!endif
|
||||||
|
|
||||||
# tools.jar is needed by the JDI - SA binding
|
# tools.jar is needed by the JDI - SA binding
|
||||||
SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/tools.jar
|
SA_CLASSPATH = $(BOOT_JAVA_HOME)/lib/tools.jar
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,7 @@
|
||||||
#include "utilities/globalDefinitions.hpp"
|
#include "utilities/globalDefinitions.hpp"
|
||||||
#include "utilities/hashtable.hpp"
|
#include "utilities/hashtable.hpp"
|
||||||
#include "utilities/macros.hpp"
|
#include "utilities/macros.hpp"
|
||||||
|
|
||||||
#ifdef TARGET_ARCH_x86
|
#ifdef TARGET_ARCH_x86
|
||||||
# include "vmStructs_x86.hpp"
|
# include "vmStructs_x86.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
@ -168,6 +169,11 @@
|
||||||
#include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp"
|
#include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp"
|
||||||
#include "gc_implementation/g1/vmStructs_g1.hpp"
|
#include "gc_implementation/g1/vmStructs_g1.hpp"
|
||||||
#endif // INCLUDE_ALL_GCS
|
#endif // INCLUDE_ALL_GCS
|
||||||
|
|
||||||
|
#if INCLUDE_TRACE
|
||||||
|
#include "runtime/vmStructs_trace.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef COMPILER2
|
#ifdef COMPILER2
|
||||||
#include "opto/addnode.hpp"
|
#include "opto/addnode.hpp"
|
||||||
#include "opto/block.hpp"
|
#include "opto/block.hpp"
|
||||||
|
@ -1390,6 +1396,8 @@ typedef TwoOopHashtable<Symbol*, mtClass> SymbolTwoOopHashtable;
|
||||||
/* unsigned short on Win32 */ \
|
/* unsigned short on Win32 */ \
|
||||||
declare_unsigned_integer_type(u1) \
|
declare_unsigned_integer_type(u1) \
|
||||||
declare_unsigned_integer_type(u2) \
|
declare_unsigned_integer_type(u2) \
|
||||||
|
declare_unsigned_integer_type(u4) \
|
||||||
|
declare_unsigned_integer_type(u8) \
|
||||||
declare_unsigned_integer_type(unsigned) \
|
declare_unsigned_integer_type(unsigned) \
|
||||||
\
|
\
|
||||||
/*****************************/ \
|
/*****************************/ \
|
||||||
|
@ -2923,6 +2931,11 @@ VMStructEntry VMStructs::localHotSpotVMStructs[] = {
|
||||||
GENERATE_STATIC_VM_STRUCT_ENTRY)
|
GENERATE_STATIC_VM_STRUCT_ENTRY)
|
||||||
#endif // INCLUDE_ALL_GCS
|
#endif // INCLUDE_ALL_GCS
|
||||||
|
|
||||||
|
#if INCLUDE_TRACE
|
||||||
|
VM_STRUCTS_TRACE(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||||
|
GENERATE_STATIC_VM_STRUCT_ENTRY)
|
||||||
|
#endif
|
||||||
|
|
||||||
VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
VM_STRUCTS_CPU(GENERATE_NONSTATIC_VM_STRUCT_ENTRY,
|
||||||
GENERATE_STATIC_VM_STRUCT_ENTRY,
|
GENERATE_STATIC_VM_STRUCT_ENTRY,
|
||||||
GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
|
GENERATE_UNCHECKED_NONSTATIC_VM_STRUCT_ENTRY,
|
||||||
|
@ -2968,6 +2981,11 @@ VMTypeEntry VMStructs::localHotSpotVMTypes[] = {
|
||||||
GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
|
GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
|
||||||
#endif // INCLUDE_ALL_GCS
|
#endif // INCLUDE_ALL_GCS
|
||||||
|
|
||||||
|
#if INCLUDE_TRACE
|
||||||
|
VM_TYPES_TRACE(GENERATE_VM_TYPE_ENTRY,
|
||||||
|
GENERATE_TOPLEVEL_VM_TYPE_ENTRY)
|
||||||
|
#endif
|
||||||
|
|
||||||
VM_TYPES_CPU(GENERATE_VM_TYPE_ENTRY,
|
VM_TYPES_CPU(GENERATE_VM_TYPE_ENTRY,
|
||||||
GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
|
GENERATE_TOPLEVEL_VM_TYPE_ENTRY,
|
||||||
GENERATE_OOP_VM_TYPE_ENTRY,
|
GENERATE_OOP_VM_TYPE_ENTRY,
|
||||||
|
@ -3003,6 +3021,10 @@ VMIntConstantEntry VMStructs::localHotSpotVMIntConstants[] = {
|
||||||
VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY)
|
VM_INT_CONSTANTS_PARNEW(GENERATE_VM_INT_CONSTANT_ENTRY)
|
||||||
#endif // INCLUDE_ALL_GCS
|
#endif // INCLUDE_ALL_GCS
|
||||||
|
|
||||||
|
#if INCLUDE_TRACE
|
||||||
|
VM_INT_CONSTANTS_TRACE(GENERATE_VM_INT_CONSTANT_ENTRY)
|
||||||
|
#endif
|
||||||
|
|
||||||
VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
|
VM_INT_CONSTANTS_CPU(GENERATE_VM_INT_CONSTANT_ENTRY,
|
||||||
GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
|
GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY,
|
||||||
GENERATE_C1_VM_INT_CONSTANT_ENTRY,
|
GENERATE_C1_VM_INT_CONSTANT_ENTRY,
|
||||||
|
@ -3065,8 +3087,14 @@ VMStructs::init() {
|
||||||
|
|
||||||
VM_STRUCTS_G1(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
|
VM_STRUCTS_G1(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
|
||||||
CHECK_STATIC_VM_STRUCT_ENTRY);
|
CHECK_STATIC_VM_STRUCT_ENTRY);
|
||||||
|
|
||||||
#endif // INCLUDE_ALL_GCS
|
#endif // INCLUDE_ALL_GCS
|
||||||
|
|
||||||
|
#if INCLUDE_TRACE
|
||||||
|
VM_STRUCTS_TRACE(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
|
||||||
|
CHECK_STATIC_VM_STRUCT_ENTRY);
|
||||||
|
#endif
|
||||||
|
|
||||||
VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
|
VM_STRUCTS_CPU(CHECK_NONSTATIC_VM_STRUCT_ENTRY,
|
||||||
CHECK_STATIC_VM_STRUCT_ENTRY,
|
CHECK_STATIC_VM_STRUCT_ENTRY,
|
||||||
CHECK_NO_OP,
|
CHECK_NO_OP,
|
||||||
|
@ -3105,8 +3133,14 @@ VMStructs::init() {
|
||||||
|
|
||||||
VM_TYPES_G1(CHECK_VM_TYPE_ENTRY,
|
VM_TYPES_G1(CHECK_VM_TYPE_ENTRY,
|
||||||
CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
|
CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
|
||||||
|
|
||||||
#endif // INCLUDE_ALL_GCS
|
#endif // INCLUDE_ALL_GCS
|
||||||
|
|
||||||
|
#if INCLUDE_TRACE
|
||||||
|
VM_TYPES_TRACE(CHECK_VM_TYPE_ENTRY,
|
||||||
|
CHECK_SINGLE_ARG_VM_TYPE_NO_OP);
|
||||||
|
#endif
|
||||||
|
|
||||||
VM_TYPES_CPU(CHECK_VM_TYPE_ENTRY,
|
VM_TYPES_CPU(CHECK_VM_TYPE_ENTRY,
|
||||||
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
||||||
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
CHECK_SINGLE_ARG_VM_TYPE_NO_OP,
|
||||||
|
@ -3169,6 +3203,12 @@ VMStructs::init() {
|
||||||
debug_only(VM_STRUCTS_G1(ENSURE_FIELD_TYPE_PRESENT,
|
debug_only(VM_STRUCTS_G1(ENSURE_FIELD_TYPE_PRESENT,
|
||||||
ENSURE_FIELD_TYPE_PRESENT));
|
ENSURE_FIELD_TYPE_PRESENT));
|
||||||
#endif // INCLUDE_ALL_GCS
|
#endif // INCLUDE_ALL_GCS
|
||||||
|
|
||||||
|
#if INCLUDE_TRACE
|
||||||
|
debug_only(VM_STRUCTS_TRACE(ENSURE_FIELD_TYPE_PRESENT,
|
||||||
|
ENSURE_FIELD_TYPE_PRESENT));
|
||||||
|
#endif
|
||||||
|
|
||||||
debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT,
|
debug_only(VM_STRUCTS_CPU(ENSURE_FIELD_TYPE_PRESENT,
|
||||||
ENSURE_FIELD_TYPE_PRESENT,
|
ENSURE_FIELD_TYPE_PRESENT,
|
||||||
CHECK_NO_OP,
|
CHECK_NO_OP,
|
||||||
|
|
35
hotspot/src/share/vm/runtime/vmStructs_trace.hpp
Normal file
35
hotspot/src/share/vm/runtime/vmStructs_trace.hpp
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 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
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SHARE_VM_RUNTIME_VMSTRUCTS_TRACE_HPP
|
||||||
|
#define SHARE_VM_RUNTIME_VMSTRUCTS_TRACE_HPP
|
||||||
|
|
||||||
|
#define VM_INT_CONSTANTS_TRACE(a)
|
||||||
|
|
||||||
|
#define VM_STRUCTS_TRACE(a, b)
|
||||||
|
|
||||||
|
#define VM_TYPES_TRACE(a, b)
|
||||||
|
|
||||||
|
|
||||||
|
#endif // SHARE_VM_RUNTIME_VMSTRUCTS_TRACE_HPP
|
Loading…
Add table
Add a link
Reference in a new issue