Index: src/builtins/builtins-utils-gen.h |
diff --git a/src/builtins/builtins-utils-gen.h b/src/builtins/builtins-utils-gen.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..30508ce9b10fb00e30a5ed9037ac770aff890578 |
--- /dev/null |
+++ b/src/builtins/builtins-utils-gen.h |
@@ -0,0 +1,43 @@ |
+// Copyright 2017 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef V8_BUILTINS_BUILTINS_UTILS_GEN_H_ |
+#define V8_BUILTINS_BUILTINS_UTILS_GEN_H_ |
+ |
+namespace v8 { |
+namespace internal { |
+ |
+namespace compiler { |
+class CodeAssemblerState; |
+} // namespace compiler |
+ |
+// ---------------------------------------------------------------------------- |
+// Support macro for defining builtins with Turbofan. |
+// ---------------------------------------------------------------------------- |
+// |
+// A builtin function is defined by writing: |
+// |
+// TF_BUILTIN(name, code_assember_base_class) { |
+// ... |
+// } |
+// |
+// In the body of the builtin function the arguments can be accessed |
+// as "Parameter(n)". |
+#define TF_BUILTIN(Name, AssemblerBase) \ |
+ class Name##Assembler : public AssemblerBase { \ |
+ public: \ |
+ explicit Name##Assembler(compiler::CodeAssemblerState* state) \ |
+ : AssemblerBase(state) {} \ |
+ void Generate##Name##Impl(); \ |
+ }; \ |
+ void Builtins::Generate_##Name(compiler::CodeAssemblerState* state) { \ |
+ Name##Assembler assembler(state); \ |
+ assembler.Generate##Name##Impl(); \ |
+ } \ |
+ void Name##Assembler::Generate##Name##Impl() |
+ |
+} // namespace internal |
+} // namespace v8 |
+ |
+#endif // V8_BUILTINS_BUILTINS_UTILS_GEN_H_ |