src/share/vm/shark/sharkMemoryManager.cpp

Mon, 04 Apr 2011 03:02:00 -0700

author
twisti
date
Mon, 04 Apr 2011 03:02:00 -0700
changeset 2729
e863062e521d
parent 2314
f95d63e2154a
child 4314
2cd5e15048e6
permissions
-rw-r--r--

7032458: Zero and Shark fixes
Reviewed-by: twisti
Contributed-by: Gary Benson <gbenson@redhat.com>

     1 /*
     2  * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
     3  * Copyright 2009 Red Hat, Inc.
     4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     5  *
     6  * This code is free software; you can redistribute it and/or modify it
     7  * under the terms of the GNU General Public License version 2 only, as
     8  * published by the Free Software Foundation.
     9  *
    10  * This code is distributed in the hope that it will be useful, but WITHOUT
    11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    13  * version 2 for more details (a copy is included in the LICENSE file that
    14  * accompanied this code).
    15  *
    16  * You should have received a copy of the GNU General Public License version
    17  * 2 along with this work; if not, write to the Free Software Foundation,
    18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    19  *
    20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    21  * or visit www.oracle.com if you need additional information or have any
    22  * questions.
    23  *
    24  */
    26 #include "precompiled.hpp"
    27 #include "shark/llvmHeaders.hpp"
    28 #include "shark/sharkEntry.hpp"
    29 #include "shark/sharkMemoryManager.hpp"
    31 using namespace llvm;
    33 void SharkMemoryManager::AllocateGOT() {
    34   mm()->AllocateGOT();
    35 }
    37 unsigned char* SharkMemoryManager::getGOTBase() const {
    38   return mm()->getGOTBase();
    39 }
    41 unsigned char* SharkMemoryManager::allocateStub(const GlobalValue* F,
    42                                                 unsigned StubSize,
    43                                                 unsigned Alignment) {
    44   return mm()->allocateStub(F, StubSize, Alignment);
    45 }
    47 unsigned char* SharkMemoryManager::startFunctionBody(const Function* F,
    48                                                      uintptr_t& ActualSize) {
    49   return mm()->startFunctionBody(F, ActualSize);
    50 }
    52 void SharkMemoryManager::endFunctionBody(const Function* F,
    53                                          unsigned char* FunctionStart,
    54                                          unsigned char* FunctionEnd) {
    55   mm()->endFunctionBody(F, FunctionStart, FunctionEnd);
    57   SharkEntry *entry = get_entry_for_function(F);
    58   if (entry != NULL)
    59     entry->set_code_limit(FunctionEnd);
    60 }
    62 unsigned char* SharkMemoryManager::startExceptionTable(const Function* F,
    63                                                        uintptr_t& ActualSize) {
    64   return mm()->startExceptionTable(F, ActualSize);
    65 }
    67 void SharkMemoryManager::endExceptionTable(const Function* F,
    68                                            unsigned char* TableStart,
    69                                            unsigned char* TableEnd,
    70                                            unsigned char* FrameRegister) {
    71   mm()->endExceptionTable(F, TableStart, TableEnd, FrameRegister);
    72 }
    74 void SharkMemoryManager::setMemoryWritable() {
    75   mm()->setMemoryWritable();
    76 }
    78 void SharkMemoryManager::setMemoryExecutable() {
    79   mm()->setMemoryExecutable();
    80 }
    82 #if SHARK_LLVM_VERSION >= 27
    83 void SharkMemoryManager::deallocateExceptionTable(void *ptr) {
    84   mm()->deallocateExceptionTable(ptr);
    85 }
    87 void SharkMemoryManager::deallocateFunctionBody(void *ptr) {
    88   mm()->deallocateFunctionBody(ptr);
    89 }
    90 #else
    91 void SharkMemoryManager::deallocateMemForFunction(const Function* F) {
    92   return mm()->deallocateMemForFunction(F);
    93 }
    94 #endif
    96 uint8_t* SharkMemoryManager::allocateGlobal(uintptr_t Size,
    97                                             unsigned int Alignment) {
    98   return mm()->allocateGlobal(Size, Alignment);
    99 }
   101 #if SHARK_LLVM_VERSION < 27
   102 void* SharkMemoryManager::getDlsymTable() const {
   103   return mm()->getDlsymTable();
   104 }
   106 void SharkMemoryManager::SetDlsymTable(void *ptr) {
   107   mm()->SetDlsymTable(ptr);
   108 }
   109 #endif
   111 void SharkMemoryManager::setPoisonMemory(bool poison) {
   112   mm()->setPoisonMemory(poison);
   113 }
   115 unsigned char *SharkMemoryManager::allocateSpace(intptr_t Size,
   116                                                  unsigned int Alignment) {
   117   return mm()->allocateSpace(Size, Alignment);
   118 }

mercurial