| 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..5245c6b1bfd45d3d23e5e5efb82a5b4fa4707fba 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_) {}
|
| + 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_
|
|
|