OSDN Git Service

Merge "Optimize Class.getMethod() by loading only one method."
[android-x86/dalvik.git] / vm / Init.c
index ae609c6..d1ff157 100644 (file)
--- a/vm/Init.c
+++ b/vm/Init.c
@@ -119,6 +119,7 @@ static void usage(const char* progName)
     dvmFprintf(stderr, "  -Xgc:[no]postverify\n");
     dvmFprintf(stderr, "  -Xgc:[no]concurrent\n");
     dvmFprintf(stderr, "  -Xgc:[no]verifycardtable\n");
+    dvmFprintf(stderr, "  -XX:+DisableExplicitGC\n");
     dvmFprintf(stderr, "  -Xgenregmap\n");
     dvmFprintf(stderr, "  -Xverifyopt:[no]checkmon\n");
     dvmFprintf(stderr, "  -Xcheckdexsum\n");
@@ -769,7 +770,7 @@ static int processOptions(int argc, const char* const argv[],
             size_t val = parseMemOption(argv[i]+4, 1024);
             if (val != 0) {
                 if (val >= kMinHeapStartSize && val <= kMaxHeapSize) {
-                    gDvm.heapSizeStart = val;
+                    gDvm.heapStartingSize = val;
                 } else {
                     dvmFprintf(stderr,
                         "Invalid -Xms '%s', range is %dKB to %dKB\n",
@@ -784,7 +785,7 @@ static int processOptions(int argc, const char* const argv[],
             size_t val = parseMemOption(argv[i]+4, 1024);
             if (val != 0) {
                 if (val >= kMinHeapSize && val <= kMaxHeapSize) {
-                    gDvm.heapSizeMax = val;
+                    gDvm.heapMaximumSize = val;
                 } else {
                     dvmFprintf(stderr,
                         "Invalid -Xmx '%s', range is %dKB to %dKB\n",
@@ -795,6 +796,14 @@ static int processOptions(int argc, const char* const argv[],
                 dvmFprintf(stderr, "Invalid -Xmx option '%s'\n", argv[i]);
                 return -1;
             }
+        } else if (strncmp(argv[i], "-XX:HeapGrowthLimit=", 20) == 0) {
+            size_t val = parseMemOption(argv[i] + 20, 1024);
+            if (val != 0) {
+                gDvm.heapGrowthLimit = val;
+            } else {
+                dvmFprintf(stderr, "Invalid -XX:HeapGrowthLimit option '%s'\n", argv[i]);
+                return -1;
+            }
         } else if (strncmp(argv[i], "-Xss", 4) == 0) {
             size_t val = parseMemOption(argv[i]+4, 1);
             if (val != 0) {
@@ -810,6 +819,8 @@ static int processOptions(int argc, const char* const argv[],
                 return -1;
             }
 
+        } else if (strncmp(argv[i], "-XX:+DisableExplicitGC", 22) == 0) {
+            gDvm.disableExplicitGc = true;
         } else if (strcmp(argv[i], "-verbose") == 0 ||
             strcmp(argv[i], "-verbose:class") == 0)
         {
@@ -1057,8 +1068,9 @@ static void setCommandLineDefaults()
     /* Defaults overridden by -Xms and -Xmx.
      * TODO: base these on a system or application-specific default
      */
-    gDvm.heapSizeStart = 2 * 1024 * 1024;   // Spec says 16MB; too big for us.
-    gDvm.heapSizeMax = 16 * 1024 * 1024;    // Spec says 75% physical mem
+    gDvm.heapStartingSize = 2 * 1024 * 1024;  // Spec says 16MB; too big for us.
+    gDvm.heapMaximumSize = 16 * 1024 * 1024;  // Spec says 75% physical mem
+    gDvm.heapGrowthLimit = 0;  // 0 means no growth limit
     gDvm.stackSize = kDefaultStackSize;
 
     gDvm.concurrentMarkSweep = true;