14a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com// Copyright 2010 the V8 project authors. All rights reserved. 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file. 44a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com 54a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com#ifndef V8_EXTENSIONS_GC_EXTENSION_H_ 64a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com#define V8_EXTENSIONS_GC_EXTENSION_H_ 74a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com 8196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/v8.h" 94a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com 104a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.comnamespace v8 { 114a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.comnamespace internal { 124a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com 134a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.comclass GCExtension : public v8::Extension { 144a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com public: 1543c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org explicit GCExtension(const char* fun_name) 1643c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org : v8::Extension("v8/gc", 1743c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org BuildSource(buffer_, sizeof(buffer_), fun_name)) {} 189f18d9111f676f2899d9aa2444130c985eb75395machenbach@chromium.org virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( 199f18d9111f676f2899d9aa2444130c985eb75395machenbach@chromium.org v8::Isolate* isolate, 204a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com v8::Handle<v8::String> name); 21d4be0f0c0edfc0a0b46e745055c3dc497c0ffcb5verwaest@chromium.org static void GC(const v8::FunctionCallbackInfo<v8::Value>& args); 2243c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org 2343c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org private: 2443c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org static const char* BuildSource(char* buf, size_t size, const char* fun_name) { 2570ec1a2160dd946b9578d04d97d631a6d4ab4f8cbmeurer@chromium.org SNPrintF(Vector<char>(buf, static_cast<int>(size)), 2670ec1a2160dd946b9578d04d97d631a6d4ab4f8cbmeurer@chromium.org "native function %s();", fun_name); 2743c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org return buf; 2843c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org } 2943c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org 3043c51e51fafad9405752a3d7e953367531469575machenbach@chromium.org char buffer_[50]; 314a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com}; 324a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com 334a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com} } // namespace v8::internal 344a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com 354a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com#endif // V8_EXTENSIONS_GC_EXTENSION_H_ 36