001 /*
002 * This file is part of the Jikes RVM project (http://jikesrvm.org).
003 *
004 * This file is licensed to You under the Eclipse Public License (EPL);
005 * You may not use this file except in compliance with the License. You
006 * may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/eclipse-1.0.php
009 *
010 * See the COPYRIGHT.txt file distributed with this work for information
011 * regarding copyright ownership.
012 */
013 package org.jikesrvm;
014
015 import org.vmmagic.pragma.RuntimeFinal;
016
017 /**
018 * Flags that control the behavior of our virtual machine.
019 *
020 * Typically these are properties that can be set from the command line
021 * (and thus are NOT final). All final properties should be
022 * declared in Configuration
023 */
024 public class Properties extends Options {
025
026 // The VM class hierarchy is used in three ways:
027 // - by boot image writer to create an executable vm image
028 // - by tools that wish use VM classes for generic java programming
029 // - by vm image itself, at execution time
030 // The following flags specify which behavior is desired.
031 //
032
033 /**
034 * use classes for boot image generation? (see BootImageWriter)
035 */
036 @RuntimeFinal(false)
037 public static boolean writingBootImage;
038 /**
039 * use classes for generic java programming?
040 */
041 @RuntimeFinal(false)
042 public static boolean runningTool;
043 /**
044 * use classes for running actual VM?
045 */
046 @RuntimeFinal(true)
047 public static boolean runningVM;
048 /**
049 * are we in the boot-image-writing portion of boot-image-creation
050 */
051 @RuntimeFinal(false)
052 public static boolean writingImage = false;
053 /**
054 * is the running VM fully booted?
055 * Set by VM.boot when the VM is fully booted.
056 */
057 public static boolean fullyBooted = false;
058
059 /**
060 * Is it safe to create a java.lang.Thread now? Set by VM.boot at the
061 * appropriate time.
062 */
063 public static boolean safeToAllocateJavaThread = false;
064
065 /**
066 * The following is set on by -X:verboseBoot= command line arg.
067 * When true, it generates messages to the sysWrite stream summarizing
068 * progress during the execution of VM.boot
069 */
070 public static int verboseBoot = 0;
071
072 /**
073 * The following is set on by -verbose:class command line arg.
074 * When true, it generates messages to the sysWrite stream summarizing
075 * class loading activities
076 */
077 public static boolean verboseClassLoading = false;
078
079 /**
080 * The following is set on by -verbose:jni command line arg.
081 * When true, it generates messages to the sysWrite stream summarizing
082 * jni activities
083 */
084 public static boolean verboseJNI = false;
085
086 // Runtime subsystem tracing.
087 //
088 public static final boolean TraceDictionaries = false;
089 public static final boolean TraceStatics = false;
090 public static final boolean TraceFileSystem = false;
091 public static final boolean TraceThreads = false;
092 public static final boolean TraceStackTrace = false;
093 public static final boolean TraceExceptionDelivery = false;
094
095 // Baseline compiler reference map tracing.
096 //
097 public static final boolean TraceStkMaps = false;
098 public static final boolean ReferenceMapsStatistics = false;
099 public static final boolean ReferenceMapsBitStatistics = false;
100
101 public static final boolean TraceOnStackReplacement = false;
102
103 /** How much farther? */
104 public static final int maxSystemTroubleRecursionDepthBeforeWeStopVMSysWrite = 3;
105 }