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 {
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 {
public:
Node* value() const;
MachineRepresentation rep() const;
bool IsBound() const;
protected:
explicit CodeAssemblerVariable(CodeAssembler* assembler,
MachineRepresentation rep);
CodeAssemblerVariable(CodeAssembler* assembler, MachineRepresentation rep,
......@@ -1216,9 +1224,6 @@ class V8_EXPORT_PRIVATE CodeAssemblerVariable {
~CodeAssemblerVariable();
void Bind(Node* value);
Node* value() const;
MachineRepresentation rep() const;
bool IsBound() const;
private:
class Impl;
......
......@@ -434,9 +434,7 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
// and then jump to an exit label.
class ExitPoint {
private:
using Node = compiler::Node;
using CodeAssemblerLabel = compiler::CodeAssemblerLabel;
using CodeAssemblerVariable = compiler::CodeAssemblerVariable;
public:
using IndirectReturnHandler = std::function<void(TNode<Object> result)>;
......
......@@ -18,7 +18,8 @@ namespace compiler {
namespace {
using Variable = CodeAssemblerVariable;
template <class T>
using TVariable = TypedCodeAssemblerVariable<T>;
TNode<Smi> SmiTag(CodeAssembler* m, Node* value) {
int32_t constant_value;
......@@ -217,10 +218,10 @@ TEST(VariableMerge1) {
Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged);
TVariable<Int32T> var1(&m);
CodeAssemblerLabel l1(&m), l2(&m), merge(&m);
TNode<Int32T> temp = m.Int32Constant(0);
var1.Bind(temp);
var1 = temp;
m.Branch(m.Int32Constant(1), &l1, &l2);
m.Bind(&l1);
CHECK_EQ(var1.value(), temp);
......@@ -236,17 +237,17 @@ TEST(VariableMerge2) {
Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged);
TVariable<Int32T> var1(&m);
CodeAssemblerLabel l1(&m), l2(&m), merge(&m);
TNode<Int32T> temp = m.Int32Constant(0);
var1.Bind(temp);
var1 = temp;
m.Branch(m.Int32Constant(1), &l1, &l2);
m.Bind(&l1);
CHECK_EQ(var1.value(), temp);
m.Goto(&merge);
m.Bind(&l2);
TNode<Int32T> temp2 = m.Int32Constant(2);
var1.Bind(temp2);
var1 = temp2;
CHECK_EQ(var1.value(), temp2);
m.Goto(&merge);
m.Bind(&merge);
......@@ -257,19 +258,19 @@ TEST(VariableMerge3) {
Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged);
Variable var2(&m, MachineRepresentation::kTagged);
TVariable<Int32T> var1(&m);
TVariable<Int32T> var2(&m);
CodeAssemblerLabel l1(&m), l2(&m), merge(&m);
TNode<Int32T> temp = m.Int32Constant(0);
var1.Bind(temp);
var2.Bind(temp);
var1 = temp;
var2 = temp;
m.Branch(m.Int32Constant(1), &l1, &l2);
m.Bind(&l1);
CHECK_EQ(var1.value(), temp);
m.Goto(&merge);
m.Bind(&l2);
TNode<Int32T> temp2 = m.Int32Constant(2);
var1.Bind(temp2);
var1 = temp2;
CHECK_EQ(var1.value(), temp2);
m.Goto(&merge);
m.Bind(&merge);
......@@ -282,10 +283,10 @@ TEST(VariableMergeBindFirst) {
Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged);
TVariable<Int32T> var1(&m);
CodeAssemblerLabel l1(&m), l2(&m), merge(&m, &var1), end(&m);
TNode<Int32T> temp = m.Int32Constant(0);
var1.Bind(temp);
var1 = temp;
m.Branch(m.Int32Constant(1), &l1, &l2);
m.Bind(&l1);
CHECK_EQ(var1.value(), temp);
......@@ -296,7 +297,7 @@ TEST(VariableMergeBindFirst) {
m.Goto(&end);
m.Bind(&l2);
TNode<Int32T> temp2 = m.Int32Constant(2);
var1.Bind(temp2);
var1 = temp2;
CHECK_EQ(var1.value(), temp2);
m.Goto(&merge);
m.Bind(&end);
......@@ -308,12 +309,12 @@ TEST(VariableMergeSwitch) {
Isolate* isolate(CcTest::InitIsolateOnce());
CodeAssemblerTester asm_tester(isolate);
CodeAssembler m(asm_tester.state());
Variable var1(&m, MachineRepresentation::kTagged);
TVariable<Smi> var1(&m);
CodeAssemblerLabel l1(&m), l2(&m), default_label(&m);
CodeAssemblerLabel* labels[] = {&l1, &l2};
int32_t values[] = {1, 2};
TNode<Smi> temp1 = m.SmiConstant(0);
var1.Bind(temp1);
var1 = temp1;
m.Switch(m.Int32Constant(2), &default_label, values, labels, 2);
m.Bind(&l1);
CHECK_EQ(temp1, var1.value());
......@@ -321,11 +322,11 @@ TEST(VariableMergeSwitch) {
m.Bind(&l2);
CHECK_EQ(temp1, var1.value());
TNode<Smi> temp2 = m.SmiConstant(7);
var1.Bind(temp2);
var1 = temp2;
m.Goto(&default_label);
m.Bind(&default_label);
CHECK_EQ(IrOpcode::kPhi, var1.value()->opcode());
CHECK_EQ(2, var1.value()->op()->ValueInputCount());
CHECK_EQ(IrOpcode::kPhi, (*var1.value()).opcode());
CHECK_EQ(2, (*var1.value()).op()->ValueInputCount());
CHECK_EQ(temp1, NodeProperties::GetValueInput(var1.value(), 0));
CHECK_EQ(temp2, NodeProperties::GetValueInput(var1.value(), 1));
m.Return(temp1);
......@@ -396,14 +397,14 @@ TEST(DeferredCodePhiHints) {
m.Goto(&block1);
m.Bind(&block1);
{
Variable var_object(&m, MachineRepresentation::kTagged);
TVariable<Map> var_object(&m);
CodeAssemblerLabel loop(&m, &var_object);
var_object.Bind(m.SmiConstant(0));
var_object = m.CAST(LoadMap(&m, m.SmiConstant(0)));
m.Goto(&loop);
m.Bind(&loop);
{
Node* map = LoadMap(&m, var_object.value());
var_object.Bind(map);
TNode<Map> map = m.CAST(LoadMap(&m, var_object.value()));
var_object = map;
m.Goto(&loop);
}
}
......@@ -423,17 +424,17 @@ TEST(TestOutOfScopeVariable) {
&block1, &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.IntPtrConstant(0)),
&block2, &block3);
m.Bind(&block2);
var_object.Bind(m.IntPtrConstant(55));
var_object = m.IntPtrConstant(55);
m.Goto(&block1);
m.Bind(&block3);
var_object.Bind(m.IntPtrConstant(66));
var_object = m.IntPtrConstant(66);
m.Goto(&block1);
}
m.Bind(&block1);
......@@ -446,7 +447,7 @@ TEST(ExceptionHandler) {
CodeAssemblerTester asm_tester(isolate, kNumParams);
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);
{
ScopedExceptionHandler handler(&m, &exception, &var);
......
......@@ -45,16 +45,15 @@ Handle<Code> BuildCaller(Isolate* isolate, CallDescriptor* call_descriptor,
// The first parameter is always the callee.
Handle<Code> callee = BuildCallee(isolate, callee_descriptor);
// defeat the instruction selector.
CodeStubAssembler::Variable target_var(&assembler,
MachineRepresentation::kTagged);
CodeStubAssembler::TVariable<Code> target_var(&assembler);
CodeStubAssembler::Label t(&assembler), f(&assembler),
end(&assembler, &target_var);
__ Branch(__ Int32Constant(0), &t, &f);
__ BIND(&t);
target_var.Bind(__ HeapConstant(callee));
target_var = __ HeapConstant(callee);
__ Goto(&end);
__ BIND(&f);
target_var.Bind(__ HeapConstant(callee));
target_var = __ HeapConstant(callee);
__ Goto(&end);
__ BIND(&end);
params.push_back(target_var.value());
......
......@@ -37,7 +37,6 @@ namespace compiler {
namespace {
using Label = CodeAssemblerLabel;
using Variable = CodeAssemblerVariable;
template <class T>
using TVariable = TypedCodeAssemblerVariable<T>;
using PromiseResolvingFunctions = TorqueStructPromiseResolvingFunctions;
......@@ -3395,18 +3394,18 @@ TEST(SingleInputPhiElimination) {
CodeAssemblerTester asm_tester(isolate, kNumParams);
{
CodeStubAssembler m(asm_tester.state());
Variable temp1(&m, MachineRepresentation::kTagged);
Variable temp2(&m, MachineRepresentation::kTagged);
TVariable<Smi> temp1(&m);
TVariable<Smi> temp2(&m);
Label temp_label(&m, {&temp1, &temp2});
Label end_label(&m, {&temp1, &temp2});
temp1.Bind(m.Parameter(1));
temp2.Bind(m.Parameter(1));
temp1 = m.CAST(m.Parameter(1));
temp2 = m.CAST(m.Parameter(1));
m.Branch(m.TaggedEqual(m.UncheckedCast<Object>(m.Parameter(0)),
m.UncheckedCast<Object>(m.Parameter(1))),
&end_label, &temp_label);
temp1.Bind(m.Parameter(2));
temp2.Bind(m.Parameter(2));
m.BIND(&temp_label);
temp1 = m.CAST(m.Parameter(2));
temp2 = m.CAST(m.Parameter(2));
m.Goto(&end_label);
m.BIND(&end_label);
m.Return(m.UncheckedCast<Object>(temp1.value()));
......
......@@ -27,8 +27,6 @@ namespace compiler {
namespace {
using Variable = CodeAssemblerVariable;
class TestTorqueAssembler : public CodeStubAssembler {
public:
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