Reviewers: Benedikt Meurer,
Message:
Benedikt: this change is required for
https://codereview.chromium.org/1239793002/. Could you please take a look?
Thanks.
Description:
[turbofan] Change RawMachineAssembler to take a CallDescriptor instead of a
MachineSignature.
The InterpreterAssembler needs to specify a specific CallDescriptor type
instead of using the SimplifiedCDescriptor type. This CL makes it possible
to specify the CallDescriptor used by the RawMachineAssembler instead of
specifying a MachineSignature.
BUG=v8:4280
LOG=N
Please review this at https://codereview.chromium.org/1235313002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+40, -37 lines):
M src/compiler/raw-machine-assembler.h
M src/compiler/raw-machine-assembler.cc
M test/cctest/compiler/codegen-tester.h
M test/cctest/compiler/instruction-selector-tester.h
M test/unittests/compiler/instruction-selector-unittest.h
Index: src/compiler/raw-machine-assembler.cc
diff --git a/src/compiler/raw-machine-assembler.cc
b/src/compiler/raw-machine-assembler.cc
index
3e87ef5d97a9006dc35e95f5ccc8c714de4c6695..1a3d6494e93d07225e9c304e5339ddf67738296c
100644
--- a/src/compiler/raw-machine-assembler.cc
+++ b/src/compiler/raw-machine-assembler.cc
@@ -12,16 +12,14 @@ namespace internal {
namespace compiler {
RawMachineAssembler::RawMachineAssembler(Isolate* isolate, Graph* graph,
- const MachineSignature*
machine_sig,
+ CallDescriptor* call_descriptor,
MachineType word,
MachineOperatorBuilder::Flags
flags)
: GraphBuilder(isolate, graph),
schedule_(new (zone()) Schedule(zone())),
machine_(zone(), word, flags),
common_(zone()),
- machine_sig_(machine_sig),
- call_descriptor_(
- Linkage::GetSimplifiedCDescriptor(graph->zone(), machine_sig)),
+ call_descriptor_(call_descriptor),
parameters_(NULL),
current_block_(schedule()->start()) {
int param_count = static_cast<int>(parameter_count());
Index: src/compiler/raw-machine-assembler.h
diff --git a/src/compiler/raw-machine-assembler.h
b/src/compiler/raw-machine-assembler.h
index
bc28e6c8175d3ef909e32732c7e75ff1dbc26d2d..36299440d681ac2550ed7e336741e08b94fe92f4
100644
--- a/src/compiler/raw-machine-assembler.h
+++ b/src/compiler/raw-machine-assembler.h
@@ -43,7 +43,7 @@ class RawMachineAssembler : public GraphBuilder {
};
RawMachineAssembler(Isolate* isolate, Graph* graph,
- const MachineSignature* machine_sig,
+ CallDescriptor* call_descriptor,
MachineType word = kMachPtr,
MachineOperatorBuilder::Flags flags =
MachineOperatorBuilder::Flag::kNoFlags);
@@ -53,8 +53,10 @@ class RawMachineAssembler : public GraphBuilder {
MachineOperatorBuilder* machine() { return &machine_; }
CommonOperatorBuilder* common() { return &common_; }
CallDescriptor* call_descriptor() const { return call_descriptor_; }
- size_t parameter_count() const { return machine_sig_->parameter_count();
}
- const MachineSignature* machine_sig() const { return machine_sig_; }
+ size_t parameter_count() const { return
machine_sig()->parameter_count(); }
+ const MachineSignature* machine_sig() const {
+ return call_descriptor_->GetMachineSignature();
+ }
Node* UndefinedConstant() {
Unique<HeapObject> unique = Unique<HeapObject>::CreateImmovable(
@@ -528,7 +530,6 @@ class RawMachineAssembler : public GraphBuilder {
Schedule* schedule_;
MachineOperatorBuilder machine_;
CommonOperatorBuilder common_;
- const MachineSignature* machine_sig_;
CallDescriptor* call_descriptor_;
Node** parameters_;
BasicBlock* current_block_;
Index: test/cctest/compiler/codegen-tester.h
diff --git a/test/cctest/compiler/codegen-tester.h
b/test/cctest/compiler/codegen-tester.h
index
bc6d938ce13aff135c4c931f09cd1831bc65f279..d8ecc02fc24ca1af9542be2e3c856578cf0efd51
100644
--- a/test/cctest/compiler/codegen-tester.h
+++ b/test/cctest/compiler/codegen-tester.h
@@ -34,8 +34,10 @@ class RawMachineAssemblerTester : public
HandleAndZoneScope,
p2, p3, p4)),
RawMachineAssembler(
main_isolate(), new (main_zone()) Graph(main_zone()),
- CSignature::New(main_zone(), MachineTypeForC<ReturnType>(),
p0, p1,
- p2, p3, p4),
+ Linkage::GetSimplifiedCDescriptor(
+ main_zone(),
+ CSignature::New(main_zone(),
MachineTypeForC<ReturnType>(), p0,
+ p1, p2, p3, p4)),
kMachPtr,
InstructionSelector::SupportedMachineOperatorFlags()) {}
void CheckNumber(double expected, Object* number) {
Index: test/cctest/compiler/instruction-selector-tester.h
diff --git a/test/cctest/compiler/instruction-selector-tester.h
b/test/cctest/compiler/instruction-selector-tester.h
index
3a28b2e5dfaf0553f859618bce082c360eb707bc..6b094b1c1da8a3094d55daec6f452624513620a3
100644
--- a/test/cctest/compiler/instruction-selector-tester.h
+++ b/test/cctest/compiler/instruction-selector-tester.h
@@ -27,20 +27,23 @@ class InstructionSelectorTester : public
HandleAndZoneScope,
enum Mode { kTargetMode, kInternalMode };
static const int kParameterCount = 3;
- static MachineType* BuildParameterArray(Zone* zone) {
- MachineType* array = zone->NewArray<MachineType>(kParameterCount);
+ static CallDescriptor* BuildCallDescriptor(Zone* zone) {
+ MachineType* parameter_array =
zone->NewArray<MachineType>(kParameterCount);
for (int i = 0; i < kParameterCount; ++i) {
array[i] = kMachInt32;
}
- return array;
+ return Linkage::GetSimplifiedCDescriptor(
+ graph->zone(),
+ new (zone) MachineCallDescriptorBuilder(kMachInt32,
kParameterCount,
+ parameter_array));
}
InstructionSelectorTester()
: RawMachineAssembler(
new (main_zone()) Graph(main_zone()),
- new (main_zone()) MachineCallDescriptorBuilder(
- kMachInt32, kParameterCount,
BuildParameterArray(main_zone())),
- kMachPtr) {}
+ BuildCallDescriptor(main_zone()),
+ kMachPtr,
+ machine_sig)) {}
void SelectInstructions(CpuFeature feature) {
SelectInstructions(InstructionSelector::Features(feature));
Index: test/unittests/compiler/instruction-selector-unittest.h
diff --git a/test/unittests/compiler/instruction-selector-unittest.h
b/test/unittests/compiler/instruction-selector-unittest.h
index
15d3b2005f60a578f43c6ba4e8f78976f56af1b4..574864edf5ea3b25c2cd12f4be339c5c800dd87f
100644
--- a/test/unittests/compiler/instruction-selector-unittest.h
+++ b/test/unittests/compiler/instruction-selector-unittest.h
@@ -39,22 +39,22 @@ class InstructionSelectorTest : public TestWithContext,
StreamBuilder(InstructionSelectorTest* test, MachineType return_type)
: RawMachineAssembler(
test->isolate(), new (test->zone()) Graph(test->zone()),
- MakeMachineSignature(test->zone(), return_type), kMachPtr,
+ MakeCallDescriptor(test->zone(), return_type), kMachPtr,
MachineOperatorBuilder::kAllOptionalOps),
test_(test) {}
StreamBuilder(InstructionSelectorTest* test, MachineType return_type,
MachineType parameter0_type)
: RawMachineAssembler(
test->isolate(), new (test->zone()) Graph(test->zone()),
- MakeMachineSignature(test->zone(), return_type,
parameter0_type),
+ MakeCallDescriptor(test->zone(), return_type,
parameter0_type),
kMachPtr, MachineOperatorBuilder::kAllOptionalOps),
test_(test) {}
StreamBuilder(InstructionSelectorTest* test, MachineType return_type,
MachineType parameter0_type, MachineType parameter1_type)
: RawMachineAssembler(
test->isolate(), new (test->zone()) Graph(test->zone()),
- MakeMachineSignature(test->zone(), return_type,
parameter0_type,
- parameter1_type),
+ MakeCallDescriptor(test->zone(), return_type,
parameter0_type,
+ parameter1_type),
kMachPtr, MachineOperatorBuilder::kAllOptionalOps),
test_(test) {}
StreamBuilder(InstructionSelectorTest* test, MachineType return_type,
@@ -62,8 +62,8 @@ class InstructionSelectorTest : public TestWithContext,
MachineType parameter2_type)
: RawMachineAssembler(
test->isolate(), new (test->zone()) Graph(test->zone()),
- MakeMachineSignature(test->zone(), return_type,
parameter0_type,
- parameter1_type, parameter2_type),
+ MakeCallDescriptor(test->zone(), return_type,
parameter0_type,
+ parameter1_type, parameter2_type),
kMachPtr, MachineOperatorBuilder::kAllOptionalOps),
test_(test) {}
@@ -85,41 +85,40 @@ class InstructionSelectorTest : public TestWithContext,
int
local_count);
private:
- MachineSignature* MakeMachineSignature(Zone* zone,
- MachineType return_type) {
+ CallDescriptor* MakeCallDescriptor(Zone* zone, MachineType
return_type) {
MachineSignature::Builder builder(zone, 1, 0);
builder.AddReturn(return_type);
- return builder.Build();
+ return Linkage::GetSimplifiedCDescriptor(zone, builder.Build());
}
- MachineSignature* MakeMachineSignature(Zone* zone, MachineType
return_type,
- MachineType parameter0_type) {
+ CallDescriptor* MakeCallDescriptor(Zone* zone, MachineType return_type,
+ MachineType parameter0_type) {
MachineSignature::Builder builder(zone, 1, 1);
builder.AddReturn(return_type);
builder.AddParam(parameter0_type);
- return builder.Build();
+ return Linkage::GetSimplifiedCDescriptor(zone, builder.Build());
}
- MachineSignature* MakeMachineSignature(Zone* zone, MachineType
return_type,
- MachineType parameter0_type,
- MachineType parameter1_type) {
+ CallDescriptor* MakeCallDescriptor(Zone* zone, MachineType return_type,
+ MachineType parameter0_type,
+ MachineType parameter1_type) {
MachineSignature::Builder builder(zone, 1, 2);
builder.AddReturn(return_type);
builder.AddParam(parameter0_type);
builder.AddParam(parameter1_type);
- return builder.Build();
+ return Linkage::GetSimplifiedCDescriptor(zone, builder.Build());
}
- MachineSignature* MakeMachineSignature(Zone* zone, MachineType
return_type,
- MachineType parameter0_type,
- MachineType parameter1_type,
- MachineType parameter2_type) {
+ CallDescriptor* MakeCallDescriptor(Zone* zone, MachineType return_type,
+ MachineType parameter0_type,
+ MachineType parameter1_type,
+ MachineType parameter2_type) {
MachineSignature::Builder builder(zone, 1, 3);
builder.AddReturn(return_type);
builder.AddParam(parameter0_type);
builder.AddParam(parameter1_type);
builder.AddParam(parameter2_type);
- return builder.Build();
+ return Linkage::GetSimplifiedCDescriptor(zone, builder.Build());
}
private:
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.