summaryrefslogtreecommitdiff
path: root/chromium/v8/src/code-stubs-utils.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-07-12 14:07:37 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-07-17 10:29:26 +0000
commitec02ee4181c49b61fce1c8fb99292dbb8139cc90 (patch)
tree25cde714b2b71eb639d1cd53f5a22e9ba76e14ef /chromium/v8/src/code-stubs-utils.h
parentbb09965444b5bb20b096a291445170876225268d (diff)
downloadqtwebengine-chromium-ec02ee4181c49b61fce1c8fb99292dbb8139cc90.tar.gz
BASELINE: Update Chromium to 59.0.3071.134
Change-Id: Id02ef6fb2204c5fd21668a1c3e6911c83b17585a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/v8/src/code-stubs-utils.h')
-rw-r--r--chromium/v8/src/code-stubs-utils.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/chromium/v8/src/code-stubs-utils.h b/chromium/v8/src/code-stubs-utils.h
new file mode 100644
index 00000000000..4b411acb9bb
--- /dev/null
+++ b/chromium/v8/src/code-stubs-utils.h
@@ -0,0 +1,49 @@
+// 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_CODE_STUBS_UTILS_H_
+#define V8_CODE_STUBS_UTILS_H_
+
+namespace v8 {
+namespace internal {
+
+namespace compiler {
+class CodeAssemblerState;
+} // namespace compiler
+
+// ----------------------------------------------------------------------------
+// Support macro for defining code stubs with Turbofan.
+// ----------------------------------------------------------------------------
+//
+// A code stub generator is defined by writing:
+//
+// TF_STUB(name, code_assember_base_class) {
+// ...
+// }
+//
+// In the body of the generator function the arguments can be accessed
+// as "Parameter(n)".
+#define TF_STUB(StubName, AssemblerBase) \
+ class StubName##Assembler : public AssemblerBase { \
+ public: \
+ typedef StubName::Descriptor Descriptor; \
+ \
+ explicit StubName##Assembler(compiler::CodeAssemblerState* state) \
+ : AssemblerBase(state) {} \
+ void Generate##StubName##Impl(const StubName* stub); \
+ \
+ Node* Parameter(Descriptor::ParameterIndices index) { \
+ return CodeAssembler::Parameter(static_cast<int>(index)); \
+ } \
+ }; \
+ void StubName::GenerateAssembly(compiler::CodeAssemblerState* state) const { \
+ StubName##Assembler assembler(state); \
+ assembler.Generate##StubName##Impl(this); \
+ } \
+ void StubName##Assembler::Generate##StubName##Impl(const StubName* stub)
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_CODE_STUBS_UTILS_H_