1 | // Copyright 2010 the V8 project authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. |
4 | |
5 | #ifndef V8_EXTENSIONS_GC_EXTENSION_H_ |
6 | #define V8_EXTENSIONS_GC_EXTENSION_H_ |
7 | |
8 | #include "include/v8.h" |
9 | #include "src/utils.h" |
10 | |
11 | namespace v8 { |
12 | namespace internal { |
13 | |
14 | class GCExtension : public v8::Extension { |
15 | public: |
16 | explicit GCExtension(const char* fun_name) |
17 | : v8::Extension("v8/gc" , |
18 | BuildSource(buffer_, sizeof(buffer_), fun_name)) {} |
19 | v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( |
20 | v8::Isolate* isolate, v8::Local<v8::String> name) override; |
21 | static void GC(const v8::FunctionCallbackInfo<v8::Value>& args); |
22 | |
23 | private: |
24 | static const char* BuildSource(char* buf, size_t size, const char* fun_name) { |
25 | SNPrintF(Vector<char>(buf, static_cast<int>(size)), |
26 | "native function %s();" , fun_name); |
27 | return buf; |
28 | } |
29 | |
30 | char buffer_[50]; |
31 | }; |
32 | |
33 | } // namespace internal |
34 | } // namespace v8 |
35 | |
36 | #endif // V8_EXTENSIONS_GC_EXTENSION_H_ |
37 | |