diff options
Diffstat (limited to 'dev-java/icedtea/files/7-cacao-pr-157.patch')
-rw-r--r-- | dev-java/icedtea/files/7-cacao-pr-157.patch | 139 |
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 0000000..0701363 --- /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")); |