Commit d4c91e7d authored by Santiago Aboy Solanes's avatar Santiago Aboy Solanes Committed by Commit Bot

[csa][cleanup] Remove the use of non-typed Variables

Since we are not using CodeAssemblerVariables anymore, we can properly
scope the class so that the only way to instance one is through the
typed version (i.e TypedCodeAssemblerVariable).

Bug: v8:6949
Change-Id: I3ee99bcbb9421aadd0944af57f6452e832719758
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2290858
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68797}
parent b98a1831
...@@ -1201,8 +1201,16 @@ class V8_EXPORT_PRIVATE CodeAssembler { ...@@ -1201,8 +1201,16 @@ class V8_EXPORT_PRIVATE CodeAssembler {
DISALLOW_COPY_AND_ASSIGN(CodeAssembler); DISALLOW_COPY_AND_ASSIGN(CodeAssembler);
}; };
// TODO(solanes, v8:6949): this class should be merged into
// TypedCodeAssemblerVariable. It's required to be separate for
// CodeAssemblerVariableLists.
class V8_EXPORT_PRIVATE CodeAssemblerVariable { class V8_EXPORT_PRIVATE CodeAssemblerVariable {
public: public:
Node* value() const;
MachineRepresentation rep() const;
bool IsBound() const;
protected:
explicit CodeAssemblerVariable(CodeAssembler* assembler, explicit CodeAssemblerVariable(CodeAssembler* assembler,
MachineRepresentation rep); MachineRepresentation rep);
CodeAssemblerVariable(CodeAssembler* assembler, MachineRepresentation rep, CodeAssemblerVariable(CodeAssembler* assembler, MachineRepresentation rep,
...@@ -1216,9 +1224,6 @@ class V8_EXPORT_PRIVATE CodeAssemblerVariable { ...@@ -1216,9 +1224,6 @@ class V8_EXPORT_PRIVATE CodeAssemblerVariable {
~CodeAssemblerVariable(); ~CodeAssemblerVariable();
void Bind(Node* value); void Bind(Node* value);
Node* value() const;
MachineRepresentation rep() const;
bool IsBound() const;
private: private:
class Impl; class Impl;
......
...@@ -434,9 +434,7 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler { ...@@ -434,9 +434,7 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
// and then jump to an exit label. // and then jump to an exit label.
class ExitPoint { class ExitPoint {
private: private:
using Node = compiler::Node;
using CodeAssemblerLabel = compiler::CodeAssemblerLabel; using CodeAssemblerLabel = compiler::CodeAssemblerLabel;
using CodeAssemblerVariable = compiler::CodeAssemblerVariable;
public: public:
using IndirectReturnHandler = std::function<void(TNode<Object> result)>; using IndirectReturnHandler = std::function<void(TNode<Object> result)>;
......
...@@ -18,7 +18,8 @@ namespace compiler { ...@@ -18,7 +18,8 @@ namespace compiler {
namespace { namespace {
using Variable = CodeAssemblerVariable; template <class T>
using TVariable = TypedCodeAssemblerVariable<T>;
TNode<Smi> SmiTag(CodeAssembler* m, Node* value) { TNode<Smi> SmiTag(CodeAssembler* m, Node* value) {
int32_t constant_value; int32_t constant_value;
...@@ -217,10 +218,10 @@ TEST(VariableMerge1) { ...@@ -217,10 +218,10 @@ TEST(VariableMerge1) {
Isolate* isolate(CcTest::InitIsolateOnce()); Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate); CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state()); CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged); TVariable<Int32T> var1(&m);
CodeAssemblerLabel l1(&m), l2(&m), merge(&m); CodeAssemblerLabel l1(&m), l2(&m), merge(&m);
TNode<Int32T> temp = m.Int32Constant(0); TNode<Int32T> temp = m.Int32Constant(0);
var1.Bind(temp); var1 = temp;
m.Branch(m.Int32Constant(1), &l1, &l2); m.Branch(m.Int32Constant(1), &l1, &l2);
m.Bind(&l1); m.Bind(&l1);
CHECK_EQ(var1.value(), temp); CHECK_EQ(var1.value(), temp);
...@@ -236,17 +237,17 @@ TEST(VariableMerge2) { ...@@ -236,17 +237,17 @@ TEST(VariableMerge2) {
Isolate* isolate(CcTest::InitIsolateOnce()); Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate); CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state()); CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged); TVariable<Int32T> var1(&m);
CodeAssemblerLabel l1(&m), l2(&m), merge(&m); CodeAssemblerLabel l1(&m), l2(&m), merge(&m);
TNode<Int32T> temp = m.Int32Constant(0); TNode<Int32T> temp = m.Int32Constant(0);
var1.Bind(temp); var1 = temp;
m.Branch(m.Int32Constant(1), &l1, &l2); m.Branch(m.Int32Constant(1), &l1, &l2);
m.Bind(&l1); m.Bind(&l1);
CHECK_EQ(var1.value(), temp); CHECK_EQ(var1.value(), temp);
m.Goto(&merge); m.Goto(&merge);
m.Bind(&l2); m.Bind(&l2);
TNode<Int32T> temp2 = m.Int32Constant(2); TNode<Int32T> temp2 = m.Int32Constant(2);
var1.Bind(temp2); var1 = temp2;
CHECK_EQ(var1.value(), temp2); CHECK_EQ(var1.value(), temp2);
m.Goto(&merge); m.Goto(&merge);
m.Bind(&merge); m.Bind(&merge);
...@@ -257,19 +258,19 @@ TEST(VariableMerge3) { ...@@ -257,19 +258,19 @@ TEST(VariableMerge3) {
Isolate* isolate(CcTest::InitIsolateOnce()); Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate); CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state()); CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged); TVariable<Int32T> var1(&m);
Variable var2(&m, MachineRepresentation::kTagged); TVariable<Int32T> var2(&m);
CodeAssemblerLabel l1(&m), l2(&m), merge(&m); CodeAssemblerLabel l1(&m), l2(&m), merge(&m);
TNode<Int32T> temp = m.Int32Constant(0); TNode<Int32T> temp = m.Int32Constant(0);
var1.Bind(temp); var1 = temp;
var2.Bind(temp); var2 = temp;
m.Branch(m.Int32Constant(1), &l1, &l2); m.Branch(m.Int32Constant(1), &l1, &l2);
m.Bind(&l1); m.Bind(&l1);
CHECK_EQ(var1.value(), temp); CHECK_EQ(var1.value(), temp);
m.Goto(&merge); m.Goto(&merge);
m.Bind(&l2); m.Bind(&l2);
TNode<Int32T> temp2 = m.Int32Constant(2); TNode<Int32T> temp2 = m.Int32Constant(2);
var1.Bind(temp2); var1 = temp2;
CHECK_EQ(var1.value(), temp2); CHECK_EQ(var1.value(), temp2);
m.Goto(&merge); m.Goto(&merge);
m.Bind(&merge); m.Bind(&merge);
...@@ -282,10 +283,10 @@ TEST(VariableMergeBindFirst) { ...@@ -282,10 +283,10 @@ TEST(VariableMergeBindFirst) {
Isolate* isolate(CcTest::InitIsolateOnce()); Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate); CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state()); CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged); TVariable<Int32T> var1(&m);
CodeAssemblerLabel l1(&m), l2(&m), merge(&m, &var1), end(&m); CodeAssemblerLabel l1(&m), l2(&m), merge(&m, &var1), end(&m);
TNode<Int32T> temp = m.Int32Constant(0); TNode<Int32T> temp = m.Int32Constant(0);
var1.Bind(temp); var1 = temp;
m.Branch(m.Int32Constant(1), &l1, &l2); m.Branch(m.Int32Constant(1), &l1, &l2);
m.Bind(&l1); m.Bind(&l1);
CHECK_EQ(var1.value(), temp); CHECK_EQ(var1.value(), temp);
...@@ -296,7 +297,7 @@ TEST(VariableMergeBindFirst) { ...@@ -296,7 +297,7 @@ TEST(VariableMergeBindFirst) {
m.Goto(&end); m.Goto(&end);
m.Bind(&l2); m.Bind(&l2);
TNode<Int32T> temp2 = m.Int32Constant(2); TNode<Int32T> temp2 = m.Int32Constant(2);
var1.Bind(temp2); var1 = temp2;
CHECK_EQ(var1.value(), temp2); CHECK_EQ(var1.value(), temp2);
m.Goto(&merge); m.Goto(&merge);
m.Bind(&end); m.Bind(&end);
...@@ -308,12 +309,12 @@ TEST(VariableMergeSwitch) { ...@@ -308,12 +309,12 @@ TEST(VariableMergeSwitch) {
Isolate* isolate(CcTest::InitIsolateOnce()); Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate); CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state()); CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged); TVariable<Smi> var1(&m);
CodeAssemblerLabel l1(&m), l2(&m), default_label(&m); CodeAssemblerLabel l1(&m), l2(&m), default_label(&m);
CodeAssemblerLabel* labels[] = {&l1, &l2}; CodeAssemblerLabel* labels[] = {&l1, &l2};
int32_t values[] = {1, 2}; int32_t values[] = {1, 2};
TNode<Smi> temp1 = m.SmiConstant(0); TNode<Smi> temp1 = m.SmiConstant(0);
var1.Bind(temp1); var1 = temp1;
m.Switch(m.Int32Constant(2), &default_label, values, labels, 2); m.Switch(m.Int32Constant(2), &default_label, values, labels, 2);
m.Bind(&l1); m.Bind(&l1);
CHECK_EQ(temp1, var1.value()); CHECK_EQ(temp1, var1.value());
...@@ -321,11 +322,11 @@ TEST(VariableMergeSwitch) { ...@@ -321,11 +322,11 @@ TEST(VariableMergeSwitch) {
m.Bind(&l2); m.Bind(&l2);
CHECK_EQ(temp1, var1.value()); CHECK_EQ(temp1, var1.value());
TNode<Smi> temp2 = m.SmiConstant(7); TNode<Smi> temp2 = m.SmiConstant(7);
var1.Bind(temp2); var1 = temp2;
m.Goto(&default_label); m.Goto(&default_label);
m.Bind(&default_label); m.Bind(&default_label);
CHECK_EQ(IrOpcode::kPhi, var1.value()->opcode()); CHECK_EQ(IrOpcode::kPhi, (*var1.value()).opcode());
CHECK_EQ(2, var1.value()->op()->ValueInputCount()); CHECK_EQ(2, (*var1.value()).op()->ValueInputCount());
CHECK_EQ(temp1, NodeProperties::GetValueInput(var1.value(), 0)); CHECK_EQ(temp1, NodeProperties::GetValueInput(var1.value(), 0));
CHECK_EQ(temp2, NodeProperties::GetValueInput(var1.value(), 1)); CHECK_EQ(temp2, NodeProperties::GetValueInput(var1.value(), 1));
m.Return(temp1); m.Return(temp1);
...@@ -396,14 +397,14 @@ TEST(DeferredCodePhiHints) { ...@@ -396,14 +397,14 @@ TEST(DeferredCodePhiHints) {
m.Goto(&block1); m.Goto(&block1);
m.Bind(&block1); m.Bind(&block1);
{ {
Variable var_object(&m, MachineRepresentation::kTagged); TVariable<Map> var_object(&m);
CodeAssemblerLabel loop(&m, &var_object); CodeAssemblerLabel loop(&m, &var_object);
var_object.Bind(m.SmiConstant(0)); var_object = m.CAST(LoadMap(&m, m.SmiConstant(0)));
m.Goto(&loop); m.Goto(&loop);
m.Bind(&loop); m.Bind(&loop);
{ {
Node* map = LoadMap(&m, var_object.value()); TNode<Map> map = m.CAST(LoadMap(&m, var_object.value()));
var_object.Bind(map); var_object = map;
m.Goto(&loop); m.Goto(&loop);
} }
} }
...@@ -423,17 +424,17 @@ TEST(TestOutOfScopeVariable) { ...@@ -423,17 +424,17 @@ TEST(TestOutOfScopeVariable) {
&block1, &block4); &block1, &block4);
m.Bind(&block4); m.Bind(&block4);
{ {
Variable var_object(&m, MachineRepresentation::kTagged); TVariable<IntPtrT> var_object(&m);
m.Branch(m.WordEqual(m.UncheckedCast<IntPtrT>(m.Parameter(0)), m.Branch(m.WordEqual(m.UncheckedCast<IntPtrT>(m.Parameter(0)),
m.IntPtrConstant(0)), m.IntPtrConstant(0)),
&block2, &block3); &block2, &block3);
m.Bind(&block2); m.Bind(&block2);
var_object.Bind(m.IntPtrConstant(55)); var_object = m.IntPtrConstant(55);
m.Goto(&block1); m.Goto(&block1);
m.Bind(&block3); m.Bind(&block3);
var_object.Bind(m.IntPtrConstant(66)); var_object = m.IntPtrConstant(66);
m.Goto(&block1); m.Goto(&block1);
} }
m.Bind(&block1); m.Bind(&block1);
...@@ -446,7 +447,7 @@ TEST(ExceptionHandler) { ...@@ -446,7 +447,7 @@ TEST(ExceptionHandler) {
CodeAssemblerTester asm_tester(isolate, kNumParams); CodeAssemblerTester asm_tester(isolate, kNumParams);
CodeAssembler m(asm_tester.state()); CodeAssembler m(asm_tester.state());
CodeAssembler::TVariable<Object> var(m.SmiConstant(0), &m); TVariable<Object> var(m.SmiConstant(0), &m);
CodeAssemblerLabel exception(&m, {&var}, CodeAssemblerLabel::kDeferred); CodeAssemblerLabel exception(&m, {&var}, CodeAssemblerLabel::kDeferred);
{ {
ScopedExceptionHandler handler(&m, &exception, &var); ScopedExceptionHandler handler(&m, &exception, &var);
......
...@@ -45,16 +45,15 @@ Handle<Code> BuildCaller(Isolate* isolate, CallDescriptor* call_descriptor, ...@@ -45,16 +45,15 @@ Handle<Code> BuildCaller(Isolate* isolate, CallDescriptor* call_descriptor,
// The first parameter is always the callee. // The first parameter is always the callee.
Handle<Code> callee = BuildCallee(isolate, callee_descriptor); Handle<Code> callee = BuildCallee(isolate, callee_descriptor);
// defeat the instruction selector. // defeat the instruction selector.
CodeStubAssembler::Variable target_var(&assembler, CodeStubAssembler::TVariable<Code> target_var(&assembler);
MachineRepresentation::kTagged);
CodeStubAssembler::Label t(&assembler), f(&assembler), CodeStubAssembler::Label t(&assembler), f(&assembler),
end(&assembler, &target_var); end(&assembler, &target_var);
__ Branch(__ Int32Constant(0), &t, &f); __ Branch(__ Int32Constant(0), &t, &f);
__ BIND(&t); __ BIND(&t);
target_var.Bind(__ HeapConstant(callee)); target_var = __ HeapConstant(callee);
__ Goto(&end); __ Goto(&end);
__ BIND(&f); __ BIND(&f);
target_var.Bind(__ HeapConstant(callee)); target_var = __ HeapConstant(callee);
__ Goto(&end); __ Goto(&end);
__ BIND(&end); __ BIND(&end);
params.push_back(target_var.value()); params.push_back(target_var.value());
......
...@@ -37,7 +37,6 @@ namespace compiler { ...@@ -37,7 +37,6 @@ namespace compiler {
namespace { namespace {
using Label = CodeAssemblerLabel; using Label = CodeAssemblerLabel;
using Variable = CodeAssemblerVariable;
template <class T> template <class T>
using TVariable = TypedCodeAssemblerVariable<T>; using TVariable = TypedCodeAssemblerVariable<T>;
using PromiseResolvingFunctions = TorqueStructPromiseResolvingFunctions; using PromiseResolvingFunctions = TorqueStructPromiseResolvingFunctions;
...@@ -3395,18 +3394,18 @@ TEST(SingleInputPhiElimination) { ...@@ -3395,18 +3394,18 @@ TEST(SingleInputPhiElimination) {
CodeAssemblerTester asm_tester(isolate, kNumParams); CodeAssemblerTester asm_tester(isolate, kNumParams);
{ {
CodeStubAssembler m(asm_tester.state()); CodeStubAssembler m(asm_tester.state());
Variable temp1(&m, MachineRepresentation::kTagged); TVariable<Smi> temp1(&m);
Variable temp2(&m, MachineRepresentation::kTagged); TVariable<Smi> temp2(&m);
Label temp_label(&m, {&temp1, &temp2}); Label temp_label(&m, {&temp1, &temp2});
Label end_label(&m, {&temp1, &temp2}); Label end_label(&m, {&temp1, &temp2});
temp1.Bind(m.Parameter(1)); temp1 = m.CAST(m.Parameter(1));
temp2.Bind(m.Parameter(1)); temp2 = m.CAST(m.Parameter(1));
m.Branch(m.TaggedEqual(m.UncheckedCast<Object>(m.Parameter(0)), m.Branch(m.TaggedEqual(m.UncheckedCast<Object>(m.Parameter(0)),
m.UncheckedCast<Object>(m.Parameter(1))), m.UncheckedCast<Object>(m.Parameter(1))),
&end_label, &temp_label); &end_label, &temp_label);
temp1.Bind(m.Parameter(2));
temp2.Bind(m.Parameter(2));
m.BIND(&temp_label); m.BIND(&temp_label);
temp1 = m.CAST(m.Parameter(2));
temp2 = m.CAST(m.Parameter(2));
m.Goto(&end_label); m.Goto(&end_label);
m.BIND(&end_label); m.BIND(&end_label);
m.Return(m.UncheckedCast<Object>(temp1.value())); m.Return(m.UncheckedCast<Object>(temp1.value()));
......
...@@ -27,8 +27,6 @@ namespace compiler { ...@@ -27,8 +27,6 @@ namespace compiler {
namespace { namespace {
using Variable = CodeAssemblerVariable;
class TestTorqueAssembler : public CodeStubAssembler { class TestTorqueAssembler : public CodeStubAssembler {
public: public:
explicit TestTorqueAssembler(CodeAssemblerState* state) explicit TestTorqueAssembler(CodeAssemblerState* state)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment