github.com/igggame/nebulas-go@v2.1.0+incompatible/nf/nvm/v8/allocator.h (about)

     1  // Copyright (C) 2017 go-nebulas authors
     2  //
     3  // This file is part of the go-nebulas library.
     4  //
     5  // the go-nebulas library is free software: you can redistribute it and/or
     6  // modify it under the terms of the GNU General Public License as published by
     7  // the Free Software Foundation, either version 3 of the License, or
     8  // (at your option) any later version.
     9  //
    10  // the go-nebulas library is distributed in the hope that it will be useful,
    11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13  // GNU General Public License for more details.
    14  //
    15  // You should have received a copy of the GNU General Public License
    16  // along with the go-nebulas library.  If not, see
    17  // <http://www.gnu.org/licenses/>.
    18  //
    19  #ifndef _NEBULAS_NF_NVM_V8_ALLOCATOR_H_
    20  #define _NEBULAS_NF_NVM_V8_ALLOCATOR_H_
    21  
    22  #include <stdint.h>
    23  #include <v8.h>
    24  
    25  using namespace v8;
    26  
    27  class ArrayBufferAllocator : public ArrayBuffer::Allocator {
    28  public:
    29    ArrayBufferAllocator();
    30    virtual ~ArrayBufferAllocator();
    31  
    32    /**
    33     * Allocate |length| bytes. Return NULL if allocation is not successful.
    34     * Memory should be initialized to zeroes.
    35     */
    36    virtual void *Allocate(size_t length);
    37  
    38    /**
    39     * Allocate |length| bytes. Return NULL if allocation is not successful.
    40     * Memory does not have to be initialized.
    41     */
    42    virtual void *AllocateUninitialized(size_t length);
    43  
    44    /**
    45     * Free the memory block of size |length|, pointed to by |data|.
    46     * That memory is guaranteed to be previously allocated by |Allocate|.
    47     */
    48    virtual void Free(void *data, size_t length);
    49  
    50    size_t total_available_size();
    51  
    52    size_t peak_allocated_size();
    53  
    54  private:
    55    size_t total_allocated_size_;
    56    size_t peak_allocated_size_;
    57  };
    58  
    59  #endif // _NEBULAS_NF_NVM_V8_ALLOCATOR_H_