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_