Index: test/cctest/compiler/graph-builder-tester.h |
diff --git a/test/cctest/compiler/graph-builder-tester.h b/test/cctest/compiler/graph-builder-tester.h |
index ca50c9f4eb92d6a9bd4d9c68ae398f7662eabb24..9a5174c1d744067b017887a56f05ea6a5ba71d2d 100644 |
--- a/test/cctest/compiler/graph-builder-tester.h |
+++ b/test/cctest/compiler/graph-builder-tester.h |
@@ -10,7 +10,9 @@ |
#include "src/compiler/common-operator.h" |
#include "src/compiler/graph-builder.h" |
+#include "src/compiler/linkage.h" |
#include "src/compiler/machine-operator.h" |
+#include "src/compiler/pipeline.h" |
#include "src/compiler/simplified-operator.h" |
#include "test/cctest/compiler/call-tester.h" |
#include "test/cctest/compiler/simplified-graph-builder.h" |
@@ -19,30 +21,6 @@ namespace v8 { |
namespace internal { |
namespace compiler { |
-class MachineCallHelper : public CallHelper { |
- public: |
- MachineCallHelper(Isolate* isolate, MachineSignature* machine_sig); |
- |
- Node* Parameter(size_t index); |
- |
- void GenerateCode() { Generate(); } |
- |
- protected: |
- virtual byte* Generate(); |
- void InitParameters(GraphBuilder* builder, CommonOperatorBuilder* common); |
- |
- protected: |
- size_t parameter_count() const { return machine_sig_->parameter_count(); } |
- |
- private: |
- Node** parameters_; |
- // TODO(dcarney): shouldn't need graph stored. |
- Isolate* isolate_; |
- Graph* graph_; |
- MaybeHandle<Code> code_; |
-}; |
- |
- |
class GraphAndBuilders { |
public: |
explicit GraphAndBuilders(Zone* zone) |
@@ -52,7 +30,7 @@ class GraphAndBuilders { |
main_simplified_(zone) {} |
protected: |
- // Prefixed with main_ to avoid naiming conflicts. |
+ // Prefixed with main_ to avoid naming conflicts. |
Graph* main_graph_; |
CommonOperatorBuilder main_common_; |
MachineOperatorBuilder main_machine_; |
@@ -64,7 +42,7 @@ template <typename ReturnType> |
class GraphBuilderTester |
: public HandleAndZoneScope, |
private GraphAndBuilders, |
- public MachineCallHelper, |
+ public CallHelper, |
public SimplifiedGraphBuilder, |
public CallHelper2<ReturnType, GraphBuilderTester<ReturnType> > { |
public: |
@@ -74,20 +52,53 @@ class GraphBuilderTester |
MachineType p3 = kMachNone, |
MachineType p4 = kMachNone) |
: GraphAndBuilders(main_zone()), |
- MachineCallHelper( |
+ CallHelper( |
main_isolate(), |
MakeMachineSignature( |
main_zone(), ReturnValueTraits<ReturnType>::Representation(), |
p0, p1, p2, p3, p4)), |
SimplifiedGraphBuilder(main_isolate(), main_graph_, &main_common_, |
- &main_machine_, &main_simplified_) { |
+ &main_machine_, &main_simplified_), |
+ parameters_(main_zone()->template NewArray<Node*>(parameter_count())) { |
Begin(static_cast<int>(parameter_count())); |
- InitParameters(this, &main_common_); |
+ InitParameters(); |
} |
virtual ~GraphBuilderTester() {} |
+ void GenerateCode() { Generate(); } |
+ Node* Parameter(size_t index) { |
+ DCHECK(index < parameter_count()); |
+ return parameters_[index]; |
+ } |
+ |
Factory* factory() const { return isolate()->factory(); } |
+ |
+ protected: |
+ virtual byte* Generate() { |
+ if (!Pipeline::SupportedBackend()) return NULL; |
+ if (code_.is_null()) { |
+ Zone* zone = graph()->zone(); |
+ CallDescriptor* desc = |
+ Linkage::GetSimplifiedCDescriptor(zone, machine_sig_); |
+ code_ = Pipeline::GenerateCodeForTesting(main_isolate(), desc, graph()); |
+ } |
+ return code_.ToHandleChecked()->entry(); |
+ } |
+ |
+ void InitParameters() { |
+ int param_count = static_cast<int>(parameter_count()); |
+ for (int i = 0; i < param_count; ++i) { |
+ parameters_[i] = this->NewNode(common()->Parameter(i), graph()->start()); |
+ } |
+ } |
+ |
+ size_t parameter_count() const { return machine_sig_->parameter_count(); } |
+ |
+ private: |
+ Node** parameters_; |
+ MaybeHandle<Code> code_; |
}; |
+ |
} // namespace compiler |
} // namespace internal |
} // namespace v8 |