Chromium Code Reviews| Index: src/zone-allocator.h |
| diff --git a/test/cctest/trace-extension.h b/src/zone-allocator.h |
| similarity index 55% |
| copy from test/cctest/trace-extension.h |
| copy to src/zone-allocator.h |
| index b80b3d45dc81579629ddccb6761cfa709b17e4e9..22f73aec064e3e20208b83cb185bd0e00909104d 100644 |
| --- a/test/cctest/trace-extension.h |
| +++ b/src/zone-allocator.h |
| @@ -25,32 +25,56 @@ |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| -#ifndef V8_TEST_CCTEST_TRACE_EXTENSION_H_ |
| -#define V8_TEST_CCTEST_TRACE_EXTENSION_H_ |
| +#ifndef V8_ZONE_ALLOCATOR_H_ |
| +#define V8_ZONE_ALLOCATOR_H_ |
| -#include "v8.h" |
| +#include "zone.h" |
| namespace v8 { |
| namespace internal { |
| -class TraceExtension : public v8::Extension { |
| +template<typename T> |
| +class zone_allocator { |
| public: |
| - TraceExtension() : v8::Extension("v8/trace", kSource) { } |
| - virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( |
| - v8::Isolate* isolate, |
| - v8::Handle<v8::String> name); |
| - static void Trace(const v8::FunctionCallbackInfo<v8::Value>& args); |
| - static void JSTrace(const v8::FunctionCallbackInfo<v8::Value>& args); |
| - static void JSEntrySP(const v8::FunctionCallbackInfo<v8::Value>& args); |
| - static void JSEntrySPLevel2(const v8::FunctionCallbackInfo<v8::Value>& args); |
| - static Address GetJsEntrySp(); |
| - static void InitTraceEnv(TickSample* sample); |
| - static void DoTrace(Address fp); |
| + typedef T* pointer; |
| + typedef const T* const_pointer; |
| + typedef T& reference; |
| + typedef const T& const_reference; |
| + typedef T value_type; |
| + typedef size_t size_type; |
| + typedef ptrdiff_t difference_type; |
| + template<class O> struct rebind { |
| + typedef zone_allocator<O> other; |
| + }; |
| + |
| + explicit zone_allocator(Zone* zone) throw() : zone_(zone) {} |
| + explicit zone_allocator(const zone_allocator& other) throw() |
| + : zone_(other.zone_) {} |
|
Jakob Kummerow
2014/02/07 11:48:04
nit: 4-space indent
|
| + template<typename U> zone_allocator(const zone_allocator<U>&) throw() {} |
| + |
| + pointer address(reference x) const {return &x;} |
| + const_pointer address(const_reference x) const {return &x;} |
| + |
| + pointer allocate(size_type count, const void* hint = 0) { |
| + size_t size = count * sizeof(value_type); |
| + size = RoundUp(size, kPointerSize); |
| + return static_cast<pointer>(zone_->New(size)); |
| + } |
| + void deallocate(pointer p, size_type) { /* noop for Zones */ } |
| + |
| + size_type max_size() const throw() { |
| + size_type max = static_cast<size_type>(-1) / sizeof(T); |
| + return (max > 0 ? max : 1); |
| + } |
| + void construct(pointer p, const T& val) { |
| + new(static_cast<void*>(p)) T(val); |
| + } |
| + void destroy(pointer p) { (static_cast<T*>(p))->~T(); } |
| + |
| private: |
| - static Address GetFP(const v8::FunctionCallbackInfo<v8::Value>& args); |
| - static const char* kSource; |
| + Zone* zone_; |
| }; |
| } } // namespace v8::internal |
| -#endif |
| +#endif // V8_ZONE_ALLOCATOR_H_ |