| // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. |
| // This source code is licensed under the BSD-style license found in the |
| // LICENSE file in the root directory of this source tree. An additional grant |
| // of patent rights can be found in the PATENTS file in the same directory. |
| // |
| // Copyright (c) 2011 The LevelDB Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. See the AUTHORS file for names of contributors. |
| |
| #ifndef ROCKSDB_JEMALLOC |
| # error This file can only be part of jemalloc aware build |
| #endif |
| |
| #include <stdexcept> |
| #include "jemalloc/jemalloc.h" |
| |
| // Global operators to be replaced by a linker when this file is |
| // a part of the build |
| |
| void* operator new(size_t size) { |
| void* p = je_malloc(size); |
| if (!p) { |
| throw std::bad_alloc(); |
| } |
| return p; |
| } |
| |
| void* operator new[](size_t size) { |
| void* p = je_malloc(size); |
| if (!p) { |
| throw std::bad_alloc(); |
| } |
| return p; |
| } |
| |
| void operator delete(void* p) { |
| if (p) { |
| je_free(p); |
| } |
| } |
| |
| void operator delete[](void* p) { |
| if (p) { |
| je_free(p); |
| } |
| } |
| |