summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-java/icedtea/files/6-cacao-pr-157.patch')
-rw-r--r--dev-java/icedtea/files/6-cacao-pr-157.patch143
1 files changed, 143 insertions, 0 deletions
diff --git a/dev-java/icedtea/files/6-cacao-pr-157.patch b/dev-java/icedtea/files/6-cacao-pr-157.patch
new file mode 100644
index 000000000000..3419b8f12be8
--- /dev/null
+++ b/dev-java/icedtea/files/6-cacao-pr-157.patch
@@ -0,0 +1,143 @@
+diff -Naur cacao/cacao/src/vm/options.c cacao/cacao/src/vm/options.c
+--- cacao/cacao/src/vm/options.c 2013-01-10 16:45:14.000000000 +0000
++++ cacao/cacao/src/vm/options.c 2016-01-03 11:48:06.439004345 +0000
+@@ -26,6 +26,7 @@
+ #include "config.h"
+
+ #include <limits.h>
++#include <stddef.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -56,9 +57,9 @@
+
+ bool opt_run = true;
+
+-s4 opt_heapmaxsize = 0; /* maximum heap size */
+-s4 opt_heapstartsize = 0; /* initial heap size */
+-s4 opt_stacksize = 0; /* thread stack size */
++size_t opt_heapmaxsize = 0; /* maximum heap size */
++size_t opt_heapstartsize = 0; /* initial heap size */
++size_t opt_stacksize = 0; /* thread stack size */
+
+ bool opt_verbose = false;
+ bool opt_debugcolor = false; /* use ANSI terminal sequences */
+diff -Naur cacao/cacao/src/vm/options.h cacao/cacao/src/vm/options.h
+--- cacao/cacao/src/vm/options.h 2013-01-10 16:45:14.000000000 +0000
++++ cacao/cacao/src/vm/options.h 2016-01-03 11:48:55.397204706 +0000
+@@ -32,6 +32,7 @@
+ extern "C" {
+ #endif
+
++#include <stddef.h>
+ #include <stdint.h>
+
+ #include "vm/types.h"
+@@ -82,9 +83,9 @@
+ extern bool opt_jar;
+ extern bool opt_run;
+
+-extern s4 opt_heapmaxsize;
+-extern s4 opt_heapstartsize;
+-extern s4 opt_stacksize;
++extern size_t opt_heapmaxsize;
++extern size_t opt_heapstartsize;
++extern size_t opt_stacksize;
+
+ extern bool opt_verbose;
+ extern bool opt_debugcolor;
+diff -Naur cacao/cacao/src/vm/vm.cpp cacao/cacao/src/vm/vm.cpp
+--- cacao/cacao/src/vm/vm.cpp 2013-01-10 16:45:14.000000000 +0000
++++ cacao/cacao/src/vm/vm.cpp 2016-01-03 11:50:15.779891441 +0000
+@@ -25,6 +25,7 @@
+
+ #include "config.h"
+
++#include <stddef.h>
+ #include <stdint.h>
+
+ #include <exception>
+@@ -33,6 +34,10 @@
+ #include <errno.h>
+ #include <stdlib.h>
+
++#if defined(__LINUX__)
++#include <unistd.h>
++#endif
++
+ #include "vm/types.h"
+
+ #include "arch.h"
+@@ -699,6 +704,19 @@
+ opt_heapstartsize = HEAP_STARTSIZE;
+ opt_stacksize = STACK_SIZE;
+
++#if defined(__LINUX__)
++ // Calculate 1/4 of the physical memory.
++ size_t qmem = sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE) / 4;
++
++ if (qmem > INT32_MAX) {
++ // Allocate no more than 2GB.
++ opt_heapmaxsize = INT32_MAX;
++ } else if (qmem > HEAP_MAXSIZE) {
++ // Otherwise use this if greater than default (128MB).
++ opt_heapmaxsize = qmem;
++ }
++#endif
++
+ // First of all, parse the -XX options.
+
+ #if defined(ENABLE_VMLOG)
+@@ -914,18 +932,33 @@
+ case OPT_SS:
+ {
+ char c;
+- int j;
++ size_t j;
+
++ errno = 0;
+ c = opt_arg[strlen(opt_arg) - 1];
++ j = strtoul(opt_arg, NULL, 10);
++
++ if (errno)
++ break; // Invalid.
+
+ if ((c == 'k') || (c == 'K')) {
+- j = atoi(opt_arg) * 1024;
++ if (j > SIZE_MAX / 1024)
++ break; // Overflow.
++ else
++ j *= 1024;
+
+ } else if ((c == 'm') || (c == 'M')) {
+- j = atoi(opt_arg) * 1024 * 1024;
+-
+- } else
+- j = atoi(opt_arg);
++ if (j > SIZE_MAX / 1024 / 1024)
++ break; // Overflow.
++ else
++ j *= 1024 * 1024;
++
++ } else if ((c == 'g') || (c == 'G')) {
++ if (j > SIZE_MAX / 1024 / 1024 / 1024)
++ break; // Overflow.
++ else
++ j *= 1024 * 1024 * 1024;
++ }
+
+ if (opt == OPT_MX)
+ opt_heapmaxsize = j;
+@@ -1525,9 +1558,9 @@
+ void VM::print_run_time_config()
+ {
+ puts("Run-time variables:\n");
+- printf(" maximum heap size : %d\n", opt_heapmaxsize);
+- printf(" initial heap size : %d\n", opt_heapstartsize);
+- printf(" stack size : %d\n", opt_stacksize);
++ printf(" maximum heap size : %lu\n", opt_heapmaxsize);
++ printf(" initial heap size : %lu\n", opt_heapstartsize);
++ printf(" stack size : %lu\n", opt_stacksize);
+
+ #if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
+ printf(" gnu.classpath.boot.library.path: %s\n", _properties.get("gnu.classpath.boot.library.path"));