summaryrefslogtreecommitdiffstats
path: root/runtime/mem_map.cc
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2014-06-05 20:48:42 -0700
committerIan Rogers <irogers@google.com>2014-06-10 23:19:29 -0700
commitc5f17732d8144491c642776b6b48c85dfadf4b52 (patch)
tree811daa488ae5ee5dfd9b3b73bd210bc1506e5ca1 /runtime/mem_map.cc
parent08654d40cdd256f6a6c8619bf06d04d4c819714a (diff)
downloadart-c5f17732d8144491c642776b6b48c85dfadf4b52.tar.gz
art-c5f17732d8144491c642776b6b48c85dfadf4b52.tar.bz2
art-c5f17732d8144491c642776b6b48c85dfadf4b52.zip
Remove deprecated WITH_HOST_DALVIK.
Bug: 13751317 Fix the Mac build: - disable x86 selector removal that causes OS/X 10.9 kernel panics, - madvise don't need does zero memory on the Mac, factor into MemMap routine, - switch to the elf.h in elfutils to avoid Linux kernel dependencies, - we can't rely on exclusive_owner_ being available from other pthread libraries so maintain our own when futexes aren't available (we can't rely on the OS/X 10.8 hack any more), - fix symbol naming in assembly code, - work around C library differences, - disable backtrace in DumpNativeStack to avoid a broken libbacktrace dependency, - disable main thread signal handling logic, - align the stack in stub_test, - use $(HOST_SHLIB_SUFFIX) rather than .so in host make file variables. Not all host tests are passing on the Mac with this change. dex2oat works as does running HelloWorld. Change-Id: I5a232aedfb2028524d49daa6397a8e60f3ee40d3
Diffstat (limited to 'runtime/mem_map.cc')
-rw-r--r--runtime/mem_map.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/runtime/mem_map.cc b/runtime/mem_map.cc
index 22a61a21c0..81a86235ec 100644
--- a/runtime/mem_map.cc
+++ b/runtime/mem_map.cc
@@ -473,6 +473,18 @@ MemMap* MemMap::RemapAtEnd(byte* new_end, const char* tail_name, int tail_prot,
return new MemMap(tail_name, actual, tail_size, actual, tail_base_size, tail_prot);
}
+void MemMap::MadviseDontNeedAndZero() {
+ if (base_begin_ != nullptr || base_size_ != 0) {
+ if (!kMadviseZeroes) {
+ memset(base_begin_, 0, base_size_);
+ }
+ int result = madvise(base_begin_, base_size_, MADV_DONTNEED);
+ if (result == -1) {
+ PLOG(WARNING) << "madvise failed";
+ }
+ }
+}
+
bool MemMap::Protect(int prot) {
if (base_begin_ == nullptr && base_size_ == 0) {
prot_ = prot;