public class VM extends Properties
Modifier and Type | Field and Description |
---|---|
private static boolean |
inDieAbruptlyRecursiveSystemTrouble
Have we already called dieAbruptlyRecursiveSystemTrouble()?
|
private static int |
inShutdown |
private static int |
inSysExit |
private static int |
inSysFail |
static MainThread |
mainThread
Reference to the main thread that is the first none VM thread run
|
static boolean |
NOT_REACHED
For assertion checking things that should never happen.
|
private static int |
sysWriteLock |
private static Offset |
sysWriteLockOffset |
fullyBooted, maxSystemTroubleRecursionDepthBeforeWeStopVMSysWrite, ReferenceMapsBitStatistics, ReferenceMapsStatistics, runningTool, runningVM, safeToAllocateJavaThread, TraceDictionaries, TraceExceptionDelivery, TraceFileSystem, TraceOnStackReplacement, TraceStackTrace, TraceStatics, TraceStkMaps, TraceThreads, verboseBoot, verboseClassLoading, verboseJNI, verboseSignalHandling, writingBootImage, writingImage
CBSCallSamplesPerTick, CBSCallSampleStride, CBSMethodSamplesPerTick, CBSMethodSampleStride, countThreadTransitions, EdgeCounterFile, ErrorsFatal, forceOneCPU, interruptQuantum, maxSystemTroubleRecursionDepth, MeasureCompilation, MeasureCompilationPhases, schedulingMultiplier, stackTraceAtExit, stackTraceFull, TraceClassLoading, traceJNI, TraceThreadScheduling, TuningForkTraceFile, VerboseStackTracePeriod
AlignmentChecking, AllowOversizedImages, BuildFor32Addr, BuildFor64Addr, BuildForAdaptiveSystem, BuildForGnuClasspath, BuildForHarmony, BuildForHwFsqrt, BuildForIA32, BuildForIMTInterfaceInvocation, BuildForITableInterfaceInvocation, BuildForLinux, BuildForOptCompiler, BuildForOsx, BuildForPower64ELF_ABI, BuildForPowerPC, BuildForSolaris, BuildForSSE2, BuildForSSE2Full, BuildForSVR4ABI, BuildWithBaseBootImageCompiler, BuildWithGCSpy, BuildWithGCTrace, ExtremeAssertions, ForceFrequentGC, LittleEndian, ParanoidVerifyUnint, PortableNativeSync, RVM_CONFIGURATION, RVM_VERSION_STRING, StressGCAllocationInterval, UseEpilogueYieldPoints, VerifyAssertions, VerifyUnint
Constructor and Description |
---|
VM() |
Modifier and Type | Method and Description |
---|---|
static void |
_assert(boolean b)
Verify a runtime assertion (die w/traceback if assertion fails).
|
static void |
_assert(boolean b,
String message)
Verify a runtime assertion (die w/message and traceback if
assertion fails).
|
static void |
_assert(boolean b,
String msg1,
String msg2) |
private static void |
_assertionFailure(String msg1,
String msg2) |
static void |
boot()
Begin VM execution.
|
static void |
bugReportMessage()
Produce a message requesting a bug report be submitted
|
static boolean |
buildFor32Addr() |
static boolean |
buildForSSE2() |
static void |
dieAbruptlyRecursiveSystemTrouble() |
static void |
disableGC()
The disableGC() and enableGC() methods are for use as guards to protect
code that must deal with raw object addresses in a collection-safe manner
(i.e. code that holds raw pointers across "gc-sites").
|
static void |
disableGC(boolean recursiveOK)
disableGC: Disable GC if it hasn't already been disabled.
|
static void |
disableYieldpoints() |
static void |
enableGC()
enable GC; entry point when recursion is not OK.
|
static void |
enableGC(boolean recursiveOK)
enableGC(): Re-Enable GC if we're popping off the last
possibly-recursive
disableGC() request. |
static void |
enableYieldpoints() |
private static void |
finishBooting()
Complete the task of booting Jikes RVM.
|
private static int |
getStringLength(String s) |
private static void |
handlePossibleRecursiveCallToSysExit() |
private static void |
handlePossibleRecursiveCallToSysFail(String message) |
private static void |
handlePossibleRecursiveCallToSysFail(String message,
int number) |
private static void |
handlePossibleRecursiveExit(String called,
int depth) |
private static void |
handlePossibleRecursiveExit(String called,
int depth,
String message) |
private static void |
handlePossibleRecursiveExit(String called,
int depth,
String message,
boolean showNumber,
int number) |
private static void |
handlePossibleRecursiveExit(String called,
int depth,
String message,
int number) |
private static void |
handlePossibleRecursiveShutdown()
Used only by VM.shutdown()
|
private static void |
init(String bootstrapClasspath,
String[] bootCompilerArgs)
Create class instances needed for boot image or initialize classes
needed by tools.
|
static void |
initForBootImageWriter(String classPath,
String[] bootCompilerArgs)
Prepare VM classes for use by boot image writer.
|
static void |
initForTool()
Prepare VM classes for use by tools.
|
static void |
initForTool(String classpath)
Prepare VM classes for use by tools.
|
private static void |
pleaseSpecifyAClass() |
(package private) static void |
runClassInitializer(String className)
Run
<clinit> method of specified class, if that class appears
in bootimage and actually has a clinit method (we are flexible to
allow one list of classes to work with different bootimages and
different version of classpath (eg 0.05 vs. cvs head). |
private static void |
showThread() |
static void |
shutdown(int value)
Shut down the virtual machine.
|
private static void |
swLock() |
private static void |
swUnlock() |
static void |
sysExit(int value)
Exit virtual machine.
|
static void |
sysFail(String message)
Exit virtual machine due to internal failure of some sort.
|
static void |
sysFail(String message,
int number)
Exit virtual machine due to internal failure of some sort.
|
static boolean |
sysFailInProgress() |
static void |
sysWrite(Address a) |
static void |
sysWrite(Atom a) |
static void |
sysWrite(boolean b) |
static void |
sysWrite(char c) |
static void |
sysWrite(char[] c,
int l) |
static void |
sysWrite(double d) |
static void |
sysWrite(double d,
int p) |
static void |
sysWrite(double d,
String s) |
static void |
sysWrite(Extent e) |
static void |
sysWrite(int i) |
static void |
sysWrite(int i,
String s) |
static void |
sysWrite(int i,
String s1,
double d,
String s2) |
static void |
sysWrite(int i1,
String s,
int i2) |
static void |
sysWrite(int i1,
String s1,
String s2) |
static void |
sysWrite(MemberReference mr) |
static void |
sysWrite(ObjectReference o) |
static void |
sysWrite(Offset o) |
static void |
sysWrite(RVMMember m) |
static void |
sysWrite(String s) |
static void |
sysWrite(String s,
Address a) |
static void |
sysWrite(String s1,
Address a,
String s2) |
static void |
sysWrite(String s1,
Address a1,
String s2,
Address a2) |
static void |
sysWrite(String s1,
Address a,
String s2,
int i) |
static void |
sysWrite(String s,
boolean b) |
static void |
sysWrite(String s,
double d) |
static void |
sysWrite(String s1,
double d,
String s2) |
static void |
sysWrite(String s,
int i) |
static void |
sysWrite(String s1,
int i,
String s2) |
static void |
sysWrite(String s1,
int i1,
String s2,
int i2) |
static void |
sysWrite(String s1,
int i1,
String s2,
long l1) |
static void |
sysWrite(String s,
long i) |
static void |
sysWrite(String s,
ObjectReference r) |
static void |
sysWrite(String s,
Offset o) |
static void |
sysWrite(String s1,
Offset o,
String s2) |
static void |
sysWrite(String s1,
Offset o,
String s2,
int i) |
static void |
sysWrite(String s1,
String s2) |
static void |
sysWrite(String s1,
String s2,
Address a) |
static void |
sysWrite(String s1,
String s2,
int i) |
static void |
sysWrite(String s1,
String s2,
int i1,
String s3) |
static void |
sysWrite(String s1,
String s2,
String s3) |
static void |
sysWrite(String s1,
String s2,
String s3,
int i1) |
static void |
sysWrite(String s1,
String s2,
String s3,
int i1,
String s4) |
static void |
sysWrite(String s1,
String s2,
String s3,
String s4) |
static void |
sysWrite(String s1,
String s2,
String s3,
String s4,
int i5,
String s6) |
static void |
sysWrite(String s1,
String s2,
String s3,
String s4,
String s5) |
static void |
sysWrite(String s,
Word w) |
static void |
sysWrite(Word w) |
static void |
sysWriteField(int w,
int v) |
static void |
sysWriteField(int w,
String s) |
static void |
sysWriteHex(Address v) |
static void |
sysWriteHex(int v) |
static void |
sysWriteHex(long v) |
static void |
sysWriteInt(int v) |
static void |
sysWriteln() |
static void |
sysWriteln(Address a) |
static void |
sysWriteln(Atom a) |
static void |
sysWriteln(boolean b) |
static void |
sysWriteln(double d) |
static void |
sysWriteln(double d,
String s) |
static void |
sysWriteln(Extent e) |
static void |
sysWriteln(int i) |
static void |
sysWriteln(int i,
Address a,
Address b) |
static void |
sysWriteln(int i,
Address a,
RVMMethod m) |
static void |
sysWriteln(int i,
String s) |
static void |
sysWriteln(int i,
String s,
Address a) |
static void |
sysWriteln(int i,
String s1,
double d,
String s2) |
static void |
sysWriteln(int i1,
String s,
int i2) |
static void |
sysWriteln(int i1,
String s1,
String s2) |
static void |
sysWriteln(long l) |
static void |
sysWriteln(ObjectReference o) |
static void |
sysWriteln(Offset o) |
static void |
sysWriteln(String s) |
static void |
sysWriteln(String s,
Address a) |
static void |
sysWriteln(String s1,
Address a1,
Address a2) |
static void |
sysWriteln(String s1,
Address a,
String s2) |
static void |
sysWriteln(String s1,
Address a1,
String s2,
Address a2) |
static void |
sysWriteln(String s1,
Address a,
String s2,
int i) |
static void |
sysWriteln(String s0,
Address a1,
String s1,
Word w1,
String s2,
int i1,
String s3,
int i2,
String s4,
Word w2,
String s5,
int i3) |
static void |
sysWriteln(String s,
Atom a) |
static void |
sysWriteln(String s,
boolean b) |
static void |
sysWriteln(String s,
double d) |
static void |
sysWriteln(String s1,
double d,
String s2) |
static void |
sysWriteln(String s,
int i) |
static void |
sysWriteln(String s1,
int i,
String s2) |
static void |
sysWriteln(String s1,
int i,
String s2,
Address a) |
static void |
sysWriteln(String s1,
int i,
String s3,
Address a,
String s5) |
static void |
sysWriteln(String s1,
int i,
String s2,
double d) |
static void |
sysWriteln(String s1,
int i1,
String s2,
int i2) |
static void |
sysWriteln(String s1,
int i1,
String s2,
int i2,
String s3) |
static void |
sysWriteln(String s1,
int i1,
String s2,
int i2,
String s3,
int i3) |
static void |
sysWriteln(String s1,
int i1,
String s2,
long l1) |
static void |
sysWriteln(String s1,
int i1,
String s2,
String s3) |
static void |
sysWriteln(String s1,
int i,
String s2,
Word w) |
static void |
sysWriteln(String s1,
int i,
String s2,
Word w,
String s3) |
static void |
sysWriteln(String s,
long i) |
static void |
sysWriteln(String s1,
long i1,
String s2,
long i2) |
static void |
sysWriteln(String s1,
long l1,
String s2,
long l2,
String s3) |
static void |
sysWriteln(String s,
ObjectReference r) |
static void |
sysWriteln(String s,
Offset o) |
static void |
sysWriteln(String s1,
Offset o,
String s2) |
static void |
sysWriteln(String s1,
Offset o,
String s2,
int i) |
static void |
sysWriteln(String s1,
String s2) |
static void |
sysWriteln(String s1,
String s2,
Address a) |
static void |
sysWriteln(String s1,
String s2,
int i) |
static void |
sysWriteln(String s1,
String s2,
int i1,
String s3) |
static void |
sysWriteln(String s1,
String s2,
String s3) |
static void |
sysWriteln(String s1,
String s2,
String s3,
Address a) |
static void |
sysWriteln(String s1,
String s2,
String s3,
int i1) |
static void |
sysWriteln(String s1,
String s2,
String s3,
int i1,
String s4) |
static void |
sysWriteln(String s1,
String s2,
String s3,
String s4) |
static void |
sysWriteln(String s1,
String s2,
String s3,
String s4,
int i5,
String s6) |
static void |
sysWriteln(String s1,
String s2,
String s3,
String s4,
String s5) |
static void |
sysWriteln(String s,
Word w) |
static void |
sysWriteln(Word w) |
static void |
sysWriteLong(long v) |
static void |
tsysWrite(char[] c,
int l) |
static void |
tsysWriteln(Address a) |
static void |
tsysWriteln(String s) |
static void |
tsysWriteln(String s,
Address a) |
static void |
tsysWriteln(String s1,
Address a1,
String s2,
Address a2) |
static void |
tsysWriteln(String s1,
Address a1,
String s2,
Address a2,
String s3,
Address a3) |
static void |
tsysWriteln(String s1,
Address a1,
String s2,
Address a2,
String s3,
Address a3,
String s4,
Address a4) |
static void |
tsysWriteln(String s1,
Address a1,
String s2,
Address a2,
String s3,
Address a3,
String s4,
Address a4,
String s5,
Address a5) |
static void |
tsysWriteln(String s,
int i) |
static void |
tsysWriteln(String s1,
String s2,
String s3,
int i4,
String s5,
String s6) |
static void |
tsysWriteln(String s1,
String s2,
String s3,
String s4,
String s5,
String s6,
String s7,
int i8,
String s9,
String s10,
String s11,
String s12,
String s13) |
static void |
tsysWriteln(String s1,
String s2,
String s3,
String s4,
String s5,
String s6,
String s7,
int i8,
String s9,
String s10,
String s11,
String s12,
String s13,
int i14) |
static void |
write(Address addr) |
private static void |
write(Atom value)
Low level print to console.
|
static void |
write(boolean b) |
static void |
write(char value)
Low level print of a
char to console. |
static void |
write(char[] value,
int len)
Low level print to console.
|
static void |
write(double d) |
static void |
write(double value,
int postDecimalDigits)
Low level print of
double to console. |
static void |
write(Extent addr) |
static void |
write(int value)
Low level print of an
int to console. |
static void |
write(long value)
Low level print to console.
|
static void |
write(long value,
boolean hexToo)
Low level print to console.
|
static void |
write(MemberReference value)
Low level print to console.
|
static void |
write(ObjectReference object) |
static void |
write(Offset addr) |
static void |
write(RVMMember value)
Low level print to console.
|
static void |
write(String value)
Low level print to console.
|
static void |
write(Word addr) |
static void |
writeDec(Word value) |
static void |
writeField(int fieldWidth,
Atom s)
Low level print of the
Atom s to the console. |
static void |
writeField(int fieldWidth,
int value)
Low level print to console.
|
static void |
writeField(int fieldWidth,
String s) |
static void |
writeHex(Address value) |
static void |
writeHex(Extent value) |
static void |
writeHex(int value)
Low level print to console.
|
static void |
writeHex(long value)
Low level print to console.
|
static void |
writeHex(ObjectReference value) |
static void |
writeHex(Offset value) |
static void |
writeHex(Word value) |
private static void |
writeHexNotRunningVM(int value) |
private static void |
writeHexNotRunningVM(long value) |
static void |
writeInt(int value)
Low level print to console.
|
static void |
writeln() |
private static void |
writeNotRunningVM(char value) |
private static void |
writeNotRunningVM(double value) |
private static void |
writeNotRunningVM(int value) |
private static void |
writeNotRunningVM(long value) |
private static void |
writeNotRunningVM(String value) |
printHelp, printOptions, process
public static final boolean NOT_REACHED
public static MainThread mainThread
private static int sysWriteLock
private static Offset sysWriteLockOffset
private static int inSysFail
private static int inSysExit
private static int inShutdown
private static boolean inDieAbruptlyRecursiveSystemTrouble
public VM()
public static void initForBootImageWriter(String classPath, String[] bootCompilerArgs)
classPath
- class path to be used by RVMClassLoaderbootCompilerArgs
- command line arguments for the bootimage compilerpublic static void initForTool()
public static void initForTool(String classpath)
classpath
- class path to be used by RVMClassLoaderpublic static void boot()
Uninterruptible because we are not setup to execute a yieldpoint or stackoverflow check in the prologue this early in booting.
The following machine registers are set by "C" bootstrap program before calling this method:
private static void finishBooting()
private static void pleaseSpecifyAClass()
static void runClassInitializer(String className)
<clinit>
method of specified class, if that class appears
in bootimage and actually has a clinit method (we are flexible to
allow one list of classes to work with different bootimages and
different version of classpath (eg 0.05 vs. cvs head).
This method is called only while the VM boots.
className
- class whose initializer needs to be runpublic static void _assert(boolean b)
Note: code your assertion checks as
if (VM.VerifyAssertions) VM._assert(xxx);
b
- the assertion to verifypublic static void _assert(boolean b, String message)
Note: code your assertion checks as
if (VM.VerifyAssertions) VM._assert(xxx);
b
- the assertion to verifymessage
- the message to print if the assertion is falseprivate static void _assertionFailure(String msg1, String msg2)
private static void swLock()
private static void swUnlock()
private static void write(Atom value)
value
- what is printedpublic static void write(RVMMember value)
value
- what is printedpublic static void write(MemberReference value)
value
- what is printedpublic static void write(String value)
value
- what is printedprivate static void writeNotRunningVM(String value)
public static void write(char[] value, int len)
value
- character array that is printedlen
- number of characters printedpublic static void write(char value)
char
to console.value
- The character to printprivate static void writeNotRunningVM(char value)
public static void write(double value, int postDecimalDigits)
double
to console.value
- double
to be printedpostDecimalDigits
- Number of decimal placesprivate static void writeNotRunningVM(double value)
public static void write(int value)
int
to console.value
- what is printedprivate static void writeNotRunningVM(int value)
public static void writeHex(int value)
value
- What is printed, as hex onlyprivate static void writeHexNotRunningVM(int value)
public static void writeHex(long value)
value
- what is printed, as hex onlyprivate static void writeHexNotRunningVM(long value)
public static void writeHex(ObjectReference value)
public static void writeInt(int value)
value
- what is printed, as int onlyprivate static void writeNotRunningVM(long value)
public static void write(long value)
value
- what is printedpublic static void write(long value, boolean hexToo)
value
- what is printedhexToo
- how to print: true - print as decimal followed by hex
false - print as decimal onlypublic static void writeField(int fieldWidth, String s)
private static int getStringLength(String s)
public static void writeField(int fieldWidth, int value)
value
- print valuefieldWidth
- the number of characters that the output should contain. If the value
is too small, the output will be filled up with enough spaces, starting from the leftpublic static void writeField(int fieldWidth, Atom s)
Atom
s
to the console.
Left-fill with enough spaces to print at least fieldWidth
charactersfieldWidth
- Minimum width to print.s
- The Atom
to print.public static void writeln()
public static void write(double d)
public static void write(ObjectReference object)
public static void write(boolean b)
public static void sysWriteln(Atom a)
public static void sysWrite(MemberReference mr)
public static void sysWriteln()
public static void sysWrite(char c)
public static void sysWriteField(int w, int v)
public static void sysWriteField(int w, String s)
public static void sysWriteHex(int v)
public static void sysWriteHex(long v)
public static void sysWriteHex(Address v)
public static void sysWriteInt(int v)
public static void sysWriteLong(long v)
public static void sysWrite(double d, int p)
public static void sysWrite(double d)
public static void sysWrite(char[] c, int l)
public static void sysWriteln(Address a)
public static void sysWrite(ObjectReference o)
public static void sysWriteln(ObjectReference o)
public static void sysWriteln(Offset o)
public static void sysWriteln(Word w)
public static void sysWriteln(Extent e)
public static void sysWrite(boolean b)
public static void sysWrite(int i)
public static void sysWriteln(int i)
public static void sysWriteln(double d)
public static void sysWriteln(long l)
public static void sysWriteln(boolean b)
public static void sysWriteln(String s)
public static void sysWriteln(String s, Atom a)
public static void sysWriteln(String s, int i)
public static void sysWriteln(String s, boolean b)
public static void sysWriteln(String s, double d)
public static void sysWriteln(double d, String s)
public static void sysWriteln(String s, long i)
public static void sysWriteln(String s1, long i1, String s2, long i2)
public static void sysWriteln(int i, String s)
public static void sysWriteln(String s1, String s2)
public static void sysWriteln(String s, Address a)
public static void sysWrite(String s, ObjectReference r)
public static void sysWriteln(String s, ObjectReference r)
public static void sysWriteln(String s, Offset o)
public static void sysWriteln(String s, Word w)
public static void sysWriteln(String s1, String s2, Address a)
public static void sysWriteln(String s1, Address a, String s2)
public static void sysWriteln(String s1, Address a1, Address a2)
public static void sysWriteln(int i, Address a, RVMMethod m)
public static void sysWriteln(int i, Address a, Address b)
public static void sysWriteln(String s1, String s2, int i)
public static void sysWriteln(String s1, int i, String s2)
public static void sysWriteln(String s1, Offset o, String s2)
public static void sysWriteln(String s1, String s2, String s3)
public static void sysWriteln(String s1, String s2, String s3, Address a)
public static void sysWriteln(int i1, String s, int i2)
public static void sysWriteln(int i1, String s1, String s2)
public static void sysWriteln(String s1, int i1, String s2, String s3)
public static void sysWriteln(String s1, String s2, String s3, String s4)
public static void sysWriteln(String s1, int i, String s3, Address a, String s5)
public static void sysWriteln(int i, String s, Address a)
public static void sysWriteln(String s1, int i1, String s2, int i2)
public static void sysWriteln(String s1, int i, String s2, Address a)
public static void sysWriteln(String s1, int i, String s2, Word w)
public static void sysWriteln(String s1, int i, String s2, double d)
public static void sysWriteln(String s1, int i, String s2, Word w, String s3)
public static void sysWriteln(String s1, int i1, String s2, int i2, String s3)
public static void sysWriteln(String s1, int i1, String s2, int i2, String s3, int i3)
public static void sysWriteln(String s1, int i1, String s2, long l1)
public static void sysWriteln(String s1, Offset o, String s2, int i)
public static void sysWriteln(String s1, double d, String s2)
public static void sysWriteln(String s1, long l1, String s2, long l2, String s3)
public static void sysWriteln(String s1, String s2, int i1, String s3)
public static void sysWriteln(String s1, String s2, String s3, int i1)
public static void sysWriteln(String s1, String s2, String s3, String s4, int i5, String s6)
public static void sysWriteln(int i, String s1, double d, String s2)
public static void sysWriteln(String s1, String s2, String s3, int i1, String s4)
public static void sysWriteln(String s1, Address a1, String s2, Address a2)
public static void sysWriteln(String s1, Address a, String s2, int i)
public static void sysWriteln(String s0, Address a1, String s1, Word w1, String s2, int i1, String s3, int i2, String s4, Word w2, String s5, int i3)
private static void showThread()
public static void tsysWriteln(String s)
public static void tsysWriteln(String s1, String s2, String s3, int i4, String s5, String s6)
public static void tsysWriteln(String s1, String s2, String s3, String s4, String s5, String s6, String s7, int i8, String s9, String s10, String s11, String s12, String s13)
public static void tsysWriteln(String s1, String s2, String s3, String s4, String s5, String s6, String s7, int i8, String s9, String s10, String s11, String s12, String s13, int i14)
public static void tsysWrite(char[] c, int l)
public static void tsysWriteln(Address a)
public static void tsysWriteln(String s, int i)
public static void tsysWriteln(String s, Address a)
public static void tsysWriteln(String s1, Address a1, String s2, Address a2)
public static void tsysWriteln(String s1, Address a1, String s2, Address a2, String s3, Address a3)
public static void tsysWriteln(String s1, Address a1, String s2, Address a2, String s3, Address a3, String s4, Address a4)
public static void tsysWriteln(String s1, Address a1, String s2, Address a2, String s3, Address a3, String s4, Address a4, String s5, Address a5)
public static void bugReportMessage()
public static void sysFail(String message)
message
- error message describing the problempublic static void sysFail(String message, int number)
message
- error message describing the problemnumber
- an integer to append to message
.public static void sysExit(int value)
value
- value to pass to host o/spublic static void shutdown(int value)
value
- exit valuepublic static boolean sysFailInProgress()
private static void handlePossibleRecursiveCallToSysFail(String message)
private static void handlePossibleRecursiveCallToSysFail(String message, int number)
private static void handlePossibleRecursiveCallToSysExit()
private static void handlePossibleRecursiveShutdown()
private static void handlePossibleRecursiveExit(String called, int depth)
private static void handlePossibleRecursiveExit(String called, int depth, String message)
private static void handlePossibleRecursiveExit(String called, int depth, String message, int number)
private static void handlePossibleRecursiveExit(String called, int depth, String message, boolean showNumber, int number)
called
- Name of the function called: "sysExit", "sysFail", or
"shutdown".depth
- How deep are we in that function?message
- What message did it have? null means this particular
shutdown function does not come with a message.showNumber
- Print number
following
message
?number
- Print this number, if showNumber
is true
.public static void dieAbruptlyRecursiveSystemTrouble()
private static void init(String bootstrapClasspath, String[] bootCompilerArgs)
bootstrapClasspath
- places where VM implementation class residebootCompilerArgs
- command line arguments to pass along to the
boot compiler's init routine.public static void disableYieldpoints()
public static void enableYieldpoints()
public static void disableGC()
Authors of code running while GC is disabled must be certain not to allocate objects explicitly via "new", or implicitly via methods that, in turn, call "new" (such as string concatenation expressions that are translated by the java compiler into String() and StringBuffer() operations). Furthermore, to prevent deadlocks, code running with GC disabled must not lock any objects. This means the code must not execute any bytecodes that require runtime support (e.g. via RuntimeEntrypoints) such as:
Recommendation: as a debugging aid, Allocator implementations should test "Thread.disallowAllocationsByThisThread" to verify that they are never called while GC is disabled.
public static void disableGC(boolean recursiveOK)
recursiveOK
- whether recursion is allowed.public static void enableGC()
public static void enableGC(boolean recursiveOK)
disableGC()
request. This enforces a stack discipline;
we need it for the JNI Get*Critical and Release*Critical functions.
Should be matched with a preceding call to disableGC()
.recursiveOK
- unused (!)public static boolean buildFor32Addr()
public static boolean buildForSSE2()