summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-java/icedtea/files/7-cacao-pr-157.patch')
-rw-r--r--dev-java/icedtea/files/7-cacao-pr-157.patch139
1 files changed, 139 insertions, 0 deletions
diff --git a/dev-java/icedtea/files/7-cacao-pr-157.patch b/dev-java/icedtea/files/7-cacao-pr-157.patch
new file mode 100644
index 000000000000..0701363cf38a
--- /dev/null
+++ b/dev-java/icedtea/files/7-cacao-pr-157.patch
@@ -0,0 +1,139 @@
+diff -Naur cacao/cacao/src/vm/options.cpp cacao/cacao/src/vm/options.cpp
+--- cacao/cacao/src/vm/options.cpp 2014-12-12 21:14:45.000000000 +0000
++++ cacao/cacao/src/vm/options.cpp 2015-12-23 21:01:37.644275263 +0000
+@@ -26,6 +26,7 @@
+ #include "config.h"
+
+ #include <limits.h>
++#include <stddef.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -60,9 +61,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.hpp cacao/cacao/src/vm/options.hpp
+--- cacao/cacao/src/vm/options.hpp 2014-12-12 21:14:45.000000000 +0000
++++ cacao/cacao/src/vm/options.hpp 2015-12-23 21:01:37.645275246 +0000
+@@ -26,6 +26,7 @@
+ #ifndef OPTIONS_HPP_
+ #define OPTIONS_HPP_ 1
+
++#include <stddef.h> // for size_t
+ #include <stdint.h> // for int64_t
+ #include <stdio.h> // for FILE
+ #include "config.h" // for ENABLE_DEBUG_FILTER, etc
+@@ -77,9 +78,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 2014-12-12 21:14:45.000000000 +0000
++++ cacao/cacao/src/vm/vm.cpp 2015-12-23 21:01:38.046268504 +0000
+@@ -29,9 +29,14 @@
+ #include <cerrno>
+ #include <cstdlib>
+ #include <exception>
++#include <stddef.h>
+ #include <stdint.h>
+ #include <inttypes.h>
+
++#if defined(__LINUX__)
++#include <unistd.h>
++#endif
++
+ #include "md-abi.hpp"
+
+ #include "mm/codememory.hpp"
+@@ -690,6 +695,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.
+ options_xx(vm_args);
+
+@@ -896,18 +914,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;
+@@ -1498,9 +1531,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"));