Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(716)

Side by Side Diff: test/cctest/compiler/graph-builder-tester.h

Issue 1164603002: [turbofan] Clean up cctest "framework" for dealing with native calls. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/cctest/compiler/codegen-tester.h ('k') | test/cctest/compiler/test-run-machops.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_CCTEST_COMPILER_GRAPH_BUILDER_TESTER_H_ 5 #ifndef V8_CCTEST_COMPILER_GRAPH_BUILDER_TESTER_H_
6 #define V8_CCTEST_COMPILER_GRAPH_BUILDER_TESTER_H_ 6 #define V8_CCTEST_COMPILER_GRAPH_BUILDER_TESTER_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 #include "test/cctest/cctest.h" 9 #include "test/cctest/cctest.h"
10 10
(...skipping 21 matching lines...) Expand all
32 protected: 32 protected:
33 // Prefixed with main_ to avoid naming conflicts. 33 // Prefixed with main_ to avoid naming conflicts.
34 Graph* main_graph_; 34 Graph* main_graph_;
35 CommonOperatorBuilder main_common_; 35 CommonOperatorBuilder main_common_;
36 MachineOperatorBuilder main_machine_; 36 MachineOperatorBuilder main_machine_;
37 SimplifiedOperatorBuilder main_simplified_; 37 SimplifiedOperatorBuilder main_simplified_;
38 }; 38 };
39 39
40 40
41 template <typename ReturnType> 41 template <typename ReturnType>
42 class GraphBuilderTester 42 class GraphBuilderTester : public HandleAndZoneScope,
43 : public HandleAndZoneScope, 43 private GraphAndBuilders,
44 private GraphAndBuilders, 44 public CallHelper<ReturnType>,
45 public CallHelper, 45 public SimplifiedGraphBuilder {
46 public SimplifiedGraphBuilder,
47 public CallHelper2<ReturnType, GraphBuilderTester<ReturnType> > {
48 public: 46 public:
49 explicit GraphBuilderTester(MachineType p0 = kMachNone, 47 explicit GraphBuilderTester(MachineType p0 = kMachNone,
50 MachineType p1 = kMachNone, 48 MachineType p1 = kMachNone,
51 MachineType p2 = kMachNone, 49 MachineType p2 = kMachNone,
52 MachineType p3 = kMachNone, 50 MachineType p3 = kMachNone,
53 MachineType p4 = kMachNone) 51 MachineType p4 = kMachNone)
54 : GraphAndBuilders(main_zone()), 52 : GraphAndBuilders(main_zone()),
55 CallHelper( 53 CallHelper<ReturnType>(
56 main_isolate(), 54 main_isolate(),
57 MakeMachineSignature( 55 MakeMachineSignature(
58 main_zone(), ReturnValueTraits<ReturnType>::Representation(), 56 main_zone(), ReturnValueTraits<ReturnType>::Representation(),
59 p0, p1, p2, p3, p4)), 57 p0, p1, p2, p3, p4)),
60 SimplifiedGraphBuilder(main_isolate(), main_graph_, &main_common_, 58 SimplifiedGraphBuilder(main_isolate(), main_graph_, &main_common_,
61 &main_machine_, &main_simplified_), 59 &main_machine_, &main_simplified_),
62 parameters_(main_zone()->template NewArray<Node*>(parameter_count())) { 60 parameters_(main_zone()->template NewArray<Node*>(parameter_count())) {
63 Begin(static_cast<int>(parameter_count())); 61 Begin(static_cast<int>(parameter_count()));
64 InitParameters(); 62 InitParameters();
65 } 63 }
66 virtual ~GraphBuilderTester() {} 64 virtual ~GraphBuilderTester() {}
67 65
68 void GenerateCode() { Generate(); } 66 void GenerateCode() { Generate(); }
69 Node* Parameter(size_t index) { 67 Node* Parameter(size_t index) {
70 DCHECK(index < parameter_count()); 68 DCHECK(index < parameter_count());
71 return parameters_[index]; 69 return parameters_[index];
72 } 70 }
73 71
74 Factory* factory() const { return isolate()->factory(); } 72 Factory* factory() const { return isolate()->factory(); }
75 73
76 protected: 74 protected:
77 virtual byte* Generate() { 75 virtual byte* Generate() {
78 if (!Pipeline::SupportedBackend()) return NULL; 76 if (!Pipeline::SupportedBackend()) return NULL;
79 if (code_.is_null()) { 77 if (code_.is_null()) {
80 Zone* zone = graph()->zone(); 78 Zone* zone = graph()->zone();
81 CallDescriptor* desc = 79 CallDescriptor* desc =
82 Linkage::GetSimplifiedCDescriptor(zone, machine_sig_); 80 Linkage::GetSimplifiedCDescriptor(zone, this->machine_sig_);
83 code_ = Pipeline::GenerateCodeForTesting(main_isolate(), desc, graph()); 81 code_ = Pipeline::GenerateCodeForTesting(main_isolate(), desc, graph());
84 } 82 }
85 return code_.ToHandleChecked()->entry(); 83 return code_.ToHandleChecked()->entry();
86 } 84 }
87 85
88 void InitParameters() { 86 void InitParameters() {
89 int param_count = static_cast<int>(parameter_count()); 87 int param_count = static_cast<int>(parameter_count());
90 for (int i = 0; i < param_count; ++i) { 88 for (int i = 0; i < param_count; ++i) {
91 parameters_[i] = this->NewNode(common()->Parameter(i), graph()->start()); 89 parameters_[i] = this->NewNode(common()->Parameter(i), graph()->start());
92 } 90 }
93 } 91 }
94 92
95 size_t parameter_count() const { return machine_sig_->parameter_count(); } 93 size_t parameter_count() const {
94 return this->machine_sig_->parameter_count();
95 }
96 96
97 private: 97 private:
98 Node** parameters_; 98 Node** parameters_;
99 MaybeHandle<Code> code_; 99 MaybeHandle<Code> code_;
100
101 // TODO(titzer): factor me elsewhere.
102 static MachineSignature* MakeMachineSignature(
103 Zone* zone, MachineType return_type, MachineType p0 = kMachNone,
104 MachineType p1 = kMachNone, MachineType p2 = kMachNone,
105 MachineType p3 = kMachNone, MachineType p4 = kMachNone) {
106 // Count the number of parameters.
107 size_t param_count = 5;
108 MachineType types[] = {p0, p1, p2, p3, p4};
109 while (param_count > 0 && types[param_count - 1] == kMachNone)
110 param_count--;
111 size_t return_count = return_type == kMachNone ? 0 : 1;
112
113 // Build the machine signature.
114 MachineSignature::Builder builder(zone, return_count, param_count);
115 if (return_count > 0) builder.AddReturn(return_type);
116 for (size_t i = 0; i < param_count; i++) {
117 builder.AddParam(types[i]);
118 }
119 return builder.Build();
120 }
100 }; 121 };
101 122
102 } // namespace compiler 123 } // namespace compiler
103 } // namespace internal 124 } // namespace internal
104 } // namespace v8 125 } // namespace v8
105 126
106 #endif // V8_CCTEST_COMPILER_GRAPH_BUILDER_TESTER_H_ 127 #endif // V8_CCTEST_COMPILER_GRAPH_BUILDER_TESTER_H_
OLDNEW
« no previous file with comments | « test/cctest/compiler/codegen-tester.h ('k') | test/cctest/compiler/test-run-machops.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698