[cleanup] Remove more OpParameter

Bug: v8:7570, v8:7517
Change-Id: Ia62a9afeec0d0df1596198deec6165a3f02edeaa
Reviewed-on: https://chromium-review.googlesource.com/973606
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52120}
This commit is contained in:
Sigurd Schneider 2018-03-21 17:21:56 +01:00 committed by Commit Bot
parent cbbdc6cb83
commit c35eee3b56
9 changed files with 126 additions and 119 deletions

View File

@ -69,8 +69,9 @@ inline bool operator==(const BranchOperatorInfo& a,
}
V8_EXPORT_PRIVATE const BranchOperatorInfo& BranchOperatorInfoOf(
const Operator* const);
V8_EXPORT_PRIVATE BranchHint BranchHintOf(const Operator* const);
const Operator* const) WARN_UNUSED_RESULT;
V8_EXPORT_PRIVATE BranchHint BranchHintOf(const Operator* const)
WARN_UNUSED_RESULT;
// Helper function for return nodes, because returns have a hidden value input.
int ValueInputCountOfReturn(Operator const* const op);
@ -105,9 +106,10 @@ size_t hast_value(DeoptimizeParameters p);
std::ostream& operator<<(std::ostream&, DeoptimizeParameters p);
DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const);
DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const)
WARN_UNUSED_RESULT;
IsSafetyCheck IsSafetyCheckOf(const Operator* op);
IsSafetyCheck IsSafetyCheckOf(const Operator* op) WARN_UNUSED_RESULT;
class SelectParameters final {
public:
@ -131,14 +133,16 @@ size_t hash_value(SelectParameters const& p);
std::ostream& operator<<(std::ostream&, SelectParameters const& p);
V8_EXPORT_PRIVATE SelectParameters const& SelectParametersOf(
const Operator* const);
const Operator* const) WARN_UNUSED_RESULT;
V8_EXPORT_PRIVATE CallDescriptor const* CallDescriptorOf(const Operator* const);
V8_EXPORT_PRIVATE CallDescriptor const* CallDescriptorOf(const Operator* const)
WARN_UNUSED_RESULT;
V8_EXPORT_PRIVATE size_t ProjectionIndexOf(const Operator* const);
V8_EXPORT_PRIVATE size_t ProjectionIndexOf(const Operator* const)
WARN_UNUSED_RESULT;
V8_EXPORT_PRIVATE MachineRepresentation
PhiRepresentationOf(const Operator* const);
PhiRepresentationOf(const Operator* const) WARN_UNUSED_RESULT;
// The {IrOpcode::kParameter} opcode represents an incoming parameter to the
// function. This class bundles the index and a debug name for such operators.
@ -157,8 +161,9 @@ class ParameterInfo final {
std::ostream& operator<<(std::ostream&, ParameterInfo const&);
V8_EXPORT_PRIVATE int ParameterIndexOf(const Operator* const);
const ParameterInfo& ParameterInfoOf(const Operator* const);
V8_EXPORT_PRIVATE int ParameterIndexOf(const Operator* const)
WARN_UNUSED_RESULT;
const ParameterInfo& ParameterInfoOf(const Operator* const) WARN_UNUSED_RESULT;
struct ObjectStateInfo final : std::pair<uint32_t, int> {
ObjectStateInfo(uint32_t object_id, int size)
@ -342,9 +347,9 @@ std::ostream& operator<<(std::ostream& os,
Type* TypeGuardTypeOf(Operator const*) WARN_UNUSED_RESULT;
int OsrValueIndexOf(Operator const*);
int OsrValueIndexOf(Operator const*) WARN_UNUSED_RESULT;
SparseInputMask SparseInputMaskOf(Operator const*);
SparseInputMask SparseInputMaskOf(Operator const*) WARN_UNUSED_RESULT;
ZoneVector<MachineType> const* MachineTypesOf(Operator const*)
WARN_UNUSED_RESULT;
@ -374,7 +379,8 @@ ArgumentsStateType ArgumentsStateTypeOf(Operator const*) WARN_UNUSED_RESULT;
uint32_t ObjectIdOf(Operator const*);
MachineRepresentation DeadValueRepresentationOf(Operator const*);
MachineRepresentation DeadValueRepresentationOf(Operator const*)
WARN_UNUSED_RESULT;
class IfValueParameters final {
public:

View File

@ -260,7 +260,7 @@ size_t hash_value(ContextAccess const&);
V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, ContextAccess const&);
ContextAccess const& ContextAccessOf(Operator const*);
V8_EXPORT_PRIVATE ContextAccess const& ContextAccessOf(Operator const*);
// Defines the name and ScopeInfo for a new catch context. This is used as a
// parameter by the JSCreateCatchContext operator.

View File

@ -45,7 +45,8 @@ class OptionalOperator final {
// A Load needs a MachineType.
typedef MachineType LoadRepresentation;
LoadRepresentation LoadRepresentationOf(Operator const*);
V8_EXPORT_PRIVATE LoadRepresentation LoadRepresentationOf(Operator const*)
WARN_UNUSED_RESULT;
// A Store needs a MachineType and a WriteBarrierKind in order to emit the
// correct write barrier.
@ -71,13 +72,14 @@ size_t hash_value(StoreRepresentation);
V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, StoreRepresentation);
StoreRepresentation const& StoreRepresentationOf(Operator const*);
V8_EXPORT_PRIVATE StoreRepresentation const& StoreRepresentationOf(
Operator const*) WARN_UNUSED_RESULT;
// An UnalignedStore needs a MachineType.
typedef MachineRepresentation UnalignedStoreRepresentation;
UnalignedStoreRepresentation const& UnalignedStoreRepresentationOf(
Operator const*);
Operator const*) WARN_UNUSED_RESULT;
class StackSlotRepresentation final {
public:
@ -101,11 +103,13 @@ size_t hash_value(StackSlotRepresentation);
V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&,
StackSlotRepresentation);
StackSlotRepresentation const& StackSlotRepresentationOf(Operator const* op);
V8_EXPORT_PRIVATE StackSlotRepresentation const& StackSlotRepresentationOf(
Operator const* op) WARN_UNUSED_RESULT;
MachineRepresentation AtomicStoreRepresentationOf(Operator const* op);
MachineRepresentation AtomicStoreRepresentationOf(Operator const* op)
WARN_UNUSED_RESULT;
MachineType AtomicOpRepresentationOf(Operator const* op);
MachineType AtomicOpRepresentationOf(Operator const* op) WARN_UNUSED_RESULT;
// Interface for building machine-level operators. These operators are
// machine-level but machine-independent and thus define a language suitable

View File

@ -76,7 +76,8 @@ size_t hash_value(FieldAccess const&);
V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, FieldAccess const&);
FieldAccess const& FieldAccessOf(const Operator* op) WARN_UNUSED_RESULT;
V8_EXPORT_PRIVATE FieldAccess const& FieldAccessOf(const Operator* op)
WARN_UNUSED_RESULT;
template <>
void Operator1<FieldAccess>::PrintParameter(std::ostream& os,
@ -123,7 +124,8 @@ V8_EXPORT_PRIVATE ElementAccess const& ElementAccessOf(const Operator* op)
ExternalArrayType ExternalArrayTypeOf(const Operator* op) WARN_UNUSED_RESULT;
// The ConvertReceiverMode is used as parameter by ConvertReceiver operators.
ConvertReceiverMode ConvertReceiverModeOf(Operator const* op);
ConvertReceiverMode ConvertReceiverModeOf(Operator const* op)
WARN_UNUSED_RESULT;
// A the parameters for several Check nodes. The {feedback} parameter is
// optional. If {feedback} references a valid CallIC slot and this MapCheck
@ -362,11 +364,11 @@ ElementsTransition const& ElementsTransitionOf(const Operator* op)
// Parameters for TransitionAndStoreElement, or
// TransitionAndStoreNonNumberElement, or
// TransitionAndStoreNumberElement.
Handle<Map> DoubleMapParameterOf(const Operator* op);
Handle<Map> FastMapParameterOf(const Operator* op);
Handle<Map> DoubleMapParameterOf(const Operator* op) WARN_UNUSED_RESULT;
Handle<Map> FastMapParameterOf(const Operator* op) WARN_UNUSED_RESULT;
// Parameters for TransitionAndStoreNonNumberElement.
Type* ValueTypeParameterOf(const Operator* op);
Type* ValueTypeParameterOf(const Operator* op) WARN_UNUSED_RESULT;
// A hint for speculative number operations.
enum class NumberOperationHint : uint8_t {
@ -381,7 +383,7 @@ size_t hash_value(NumberOperationHint);
V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, NumberOperationHint);
NumberOperationHint NumberOperationHintOf(const Operator* op)
V8_EXPORT_PRIVATE NumberOperationHint NumberOperationHintOf(const Operator* op)
WARN_UNUSED_RESULT;
class NumberOperationParameters {

View File

@ -256,7 +256,7 @@ UnobservablesSet RedundantStoreFinder::RecomputeSet(Node* node,
switch (node->op()->opcode()) {
case IrOpcode::kStoreField: {
Node* stored_to = node->InputAt(0);
FieldAccess access = OpParameter<FieldAccess>(node->op());
const FieldAccess& access = FieldAccessOf(node->op());
StoreOffset offset = ToOffset(access);
UnobservableStore observation = {stored_to->id(), offset};
@ -297,7 +297,7 @@ UnobservablesSet RedundantStoreFinder::RecomputeSet(Node* node,
}
case IrOpcode::kLoadField: {
Node* loaded_from = node->InputAt(0);
FieldAccess access = OpParameter<FieldAccess>(node->op());
const FieldAccess& access = FieldAccessOf(node->op());
StoreOffset offset = ToOffset(access);
TRACE(

View File

@ -70,7 +70,7 @@ void ContextSpecializationTester::CheckChangesToValue(
void ContextSpecializationTester::CheckContextInputAndDepthChanges(
Node* node, Handle<Context> expected_new_context_object,
size_t expected_new_depth) {
ContextAccess access = OpParameter<ContextAccess>(node->op());
ContextAccess access = ContextAccessOf(node->op());
Reduction r = spec()->Reduce(node);
CHECK(r.Changed());
@ -79,7 +79,7 @@ void ContextSpecializationTester::CheckContextInputAndDepthChanges(
HeapObjectMatcher match(new_context);
CHECK_EQ(*match.Value(), *expected_new_context_object);
ContextAccess new_access = OpParameter<ContextAccess>(r.replacement()->op());
ContextAccess new_access = ContextAccessOf(r.replacement()->op());
CHECK_EQ(new_access.depth(), expected_new_depth);
CHECK_EQ(new_access.index(), access.index());
CHECK_EQ(new_access.immutable(), access.immutable());
@ -87,14 +87,14 @@ void ContextSpecializationTester::CheckContextInputAndDepthChanges(
void ContextSpecializationTester::CheckContextInputAndDepthChanges(
Node* node, Node* expected_new_context, size_t expected_new_depth) {
ContextAccess access = OpParameter<ContextAccess>(node->op());
ContextAccess access = ContextAccessOf(node->op());
Reduction r = spec()->Reduce(node);
CHECK(r.Changed());
Node* new_context = NodeProperties::GetContextInput(r.replacement());
CHECK_EQ(new_context, expected_new_context);
ContextAccess new_access = OpParameter<ContextAccess>(r.replacement()->op());
ContextAccess new_access = ContextAccessOf(r.replacement()->op());
CHECK_EQ(new_access.depth(), expected_new_depth);
CHECK_EQ(new_access.index(), access.index());
CHECK_EQ(new_access.immutable(), access.immutable());
@ -149,7 +149,7 @@ TEST(ReduceJSLoadContext0) {
CHECK_EQ(IrOpcode::kHeapConstant, new_context_input->opcode());
HeapObjectMatcher match(new_context_input);
CHECK_EQ(*native, *match.Value());
ContextAccess access = OpParameter<ContextAccess>(r.replacement()->op());
ContextAccess access = ContextAccessOf(r.replacement()->op());
CHECK_EQ(Context::GLOBAL_EVAL_FUN_INDEX, static_cast<int>(access.index()));
CHECK_EQ(0, static_cast<int>(access.depth()));
CHECK_EQ(false, access.immutable());
@ -453,7 +453,7 @@ TEST(ReduceJSStoreContext0) {
CHECK_EQ(IrOpcode::kHeapConstant, new_context_input->opcode());
HeapObjectMatcher match(new_context_input);
CHECK_EQ(*native, *match.Value());
ContextAccess access = OpParameter<ContextAccess>(r.replacement()->op());
ContextAccess access = ContextAccessOf(r.replacement()->op());
CHECK_EQ(Context::GLOBAL_EVAL_FUN_INDEX, static_cast<int>(access.index()));
CHECK_EQ(0, static_cast<int>(access.depth()));
CHECK_EQ(false, access.immutable());

View File

@ -355,7 +355,7 @@ TEST_F(Int64LoweringTest, CallI64Return) {
start(), start()));
CompareCallDescriptors(
OpParameter<const CallDescriptor*>(
CallDescriptorOf(
graph()->end()->InputAt(1)->InputAt(1)->InputAt(0)->op()),
compiler::GetI32WasmCallDescriptor(zone(), call_descriptor));
}
@ -391,8 +391,7 @@ TEST_F(Int64LoweringTest, CallI64Parameter) {
start(), start()));
CompareCallDescriptors(
OpParameter<const CallDescriptor*>(
graph()->end()->InputAt(1)->InputAt(1)->op()),
CallDescriptorOf(graph()->end()->InputAt(1)->InputAt(1)->op()),
compiler::GetI32WasmCallDescriptor(zone(), call_descriptor));
}

View File

@ -88,8 +88,7 @@ TEST_P(MachineLoadOperatorTest, OpcodeIsCorrect) {
TEST_P(MachineLoadOperatorTest, ParameterIsCorrect) {
MachineOperatorBuilder machine(zone(), representation());
EXPECT_EQ(GetParam(),
OpParameter<LoadRepresentation>(machine.Load(GetParam())));
EXPECT_EQ(GetParam(), LoadRepresentationOf(machine.Load(GetParam())));
}
@ -149,8 +148,7 @@ TEST_P(MachineStoreOperatorTest, OpcodeIsCorrect) {
TEST_P(MachineStoreOperatorTest, ParameterIsCorrect) {
MachineOperatorBuilder machine(zone(), representation());
EXPECT_EQ(GetParam(),
OpParameter<StoreRepresentation>(machine.Store(GetParam())));
EXPECT_EQ(GetParam(), StoreRepresentationOf(machine.Store(GetParam())));
}

View File

@ -688,8 +688,8 @@ class IsCallMatcher final : public TestNodeMatcher {
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
if (!TestNodeMatcher::MatchAndExplain(node, listener) ||
!PrintMatchAndExplain(OpParameter<const CallDescriptor*>(node->op()),
"descriptor", descriptor_matcher_, listener)) {
!PrintMatchAndExplain(CallDescriptorOf(node->op()), "descriptor",
descriptor_matcher_, listener)) {
return false;
}
for (size_t i = 0; i < value_matchers_.size(); ++i) {
@ -753,8 +753,8 @@ class IsTailCallMatcher final : public TestNodeMatcher {
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
if (!TestNodeMatcher::MatchAndExplain(node, listener) ||
!PrintMatchAndExplain(OpParameter<CallDescriptor const*>(node->op()),
"descriptor", descriptor_matcher_, listener)) {
!PrintMatchAndExplain(CallDescriptorOf(node->op()), "descriptor",
descriptor_matcher_, listener)) {
return false;
}
for (size_t i = 0; i < value_matchers_.size(); ++i) {
@ -805,8 +805,8 @@ class IsSpeculativeBinopMatcher final : public TestNodeMatcher {
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
return (TestNodeMatcher::MatchAndExplain(node, listener) &&
// TODO(bmeurer): The type parameter is currently ignored.
PrintMatchAndExplain(OpParameter<NumberOperationHint>(node->op()),
"hints", hint_matcher_, listener) &&
PrintMatchAndExplain(NumberOperationHintOf(node->op()), "hints",
hint_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "lhs",
lhs_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), "rhs",
@ -879,7 +879,7 @@ class IsLoadFieldMatcher final : public TestNodeMatcher {
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
return (TestNodeMatcher::MatchAndExplain(node, listener) &&
PrintMatchAndExplain(OpParameter<FieldAccess>(node->op()), "access",
PrintMatchAndExplain(FieldAccessOf(node->op()), "access",
access_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
base_matcher_, listener) &&
@ -927,7 +927,7 @@ class IsStoreFieldMatcher final : public TestNodeMatcher {
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
return (TestNodeMatcher::MatchAndExplain(node, listener) &&
PrintMatchAndExplain(OpParameter<FieldAccess>(node->op()), "access",
PrintMatchAndExplain(FieldAccessOf(node->op()), "access",
access_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
base_matcher_, listener) &&
@ -978,8 +978,8 @@ class IsLoadElementMatcher final : public TestNodeMatcher {
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
return (TestNodeMatcher::MatchAndExplain(node, listener) &&
PrintMatchAndExplain(OpParameter<ElementAccess>(node->op()),
"access", access_matcher_, listener) &&
PrintMatchAndExplain(ElementAccessOf(node->op()), "access",
access_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
base_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
@ -1033,8 +1033,8 @@ class IsStoreElementMatcher final : public TestNodeMatcher {
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
return (TestNodeMatcher::MatchAndExplain(node, listener) &&
PrintMatchAndExplain(OpParameter<ElementAccess>(node->op()),
"access", access_matcher_, listener) &&
PrintMatchAndExplain(ElementAccessOf(node->op()), "access",
access_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
base_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
@ -1056,66 +1056,65 @@ class IsStoreElementMatcher final : public TestNodeMatcher {
const Matcher<Node*> control_matcher_;
};
#define LOAD_MATCHER(kLoad) \
class Is##kLoad##Matcher final : public TestNodeMatcher { \
public: \
Is##kLoad##Matcher(const Matcher<LoadRepresentation>& rep_matcher, \
const Matcher<Node*>& base_matcher, \
const Matcher<Node*>& index_matcher, \
const Matcher<Node*>& effect_matcher, \
const Matcher<Node*>& control_matcher) \
: TestNodeMatcher(IrOpcode::k##kLoad), \
rep_matcher_(rep_matcher), \
base_matcher_(base_matcher), \
index_matcher_(index_matcher), \
effect_matcher_(effect_matcher), \
control_matcher_(control_matcher) {} \
\
void DescribeTo(std::ostream* os) const final { \
TestNodeMatcher::DescribeTo(os); \
*os << " whose rep ("; \
rep_matcher_.DescribeTo(os); \
*os << "), base ("; \
base_matcher_.DescribeTo(os); \
*os << "), index ("; \
index_matcher_.DescribeTo(os); \
*os << "), effect ("; \
effect_matcher_.DescribeTo(os); \
*os << ") and control ("; \
control_matcher_.DescribeTo(os); \
*os << ")"; \
} \
\
bool MatchAndExplain(Node* node, \
MatchResultListener* listener) const final { \
Node* effect_node = nullptr; \
Node* control_node = nullptr; \
if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) { \
effect_node = NodeProperties::GetEffectInput(node); \
} \
if (NodeProperties::FirstControlIndex(node) < node->InputCount()) { \
control_node = NodeProperties::GetControlInput(node); \
} \
return ( \
TestNodeMatcher::MatchAndExplain(node, listener) && \
PrintMatchAndExplain(OpParameter<LoadRepresentation>(node->op()), \
"rep", rep_matcher_, listener) && \
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", \
base_matcher_, listener) && \
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), \
"index", index_matcher_, listener) && \
PrintMatchAndExplain(effect_node, "effect", effect_matcher_, \
listener) && \
PrintMatchAndExplain(control_node, "control", control_matcher_, \
listener)); \
} \
\
private: \
const Matcher<LoadRepresentation> rep_matcher_; \
const Matcher<Node*> base_matcher_; \
const Matcher<Node*> index_matcher_; \
const Matcher<Node*> effect_matcher_; \
const Matcher<Node*> control_matcher_; \
#define LOAD_MATCHER(kLoad) \
class Is##kLoad##Matcher final : public TestNodeMatcher { \
public: \
Is##kLoad##Matcher(const Matcher<LoadRepresentation>& rep_matcher, \
const Matcher<Node*>& base_matcher, \
const Matcher<Node*>& index_matcher, \
const Matcher<Node*>& effect_matcher, \
const Matcher<Node*>& control_matcher) \
: TestNodeMatcher(IrOpcode::k##kLoad), \
rep_matcher_(rep_matcher), \
base_matcher_(base_matcher), \
index_matcher_(index_matcher), \
effect_matcher_(effect_matcher), \
control_matcher_(control_matcher) {} \
\
void DescribeTo(std::ostream* os) const final { \
TestNodeMatcher::DescribeTo(os); \
*os << " whose rep ("; \
rep_matcher_.DescribeTo(os); \
*os << "), base ("; \
base_matcher_.DescribeTo(os); \
*os << "), index ("; \
index_matcher_.DescribeTo(os); \
*os << "), effect ("; \
effect_matcher_.DescribeTo(os); \
*os << ") and control ("; \
control_matcher_.DescribeTo(os); \
*os << ")"; \
} \
\
bool MatchAndExplain(Node* node, \
MatchResultListener* listener) const final { \
Node* effect_node = nullptr; \
Node* control_node = nullptr; \
if (NodeProperties::FirstEffectIndex(node) < node->InputCount()) { \
effect_node = NodeProperties::GetEffectInput(node); \
} \
if (NodeProperties::FirstControlIndex(node) < node->InputCount()) { \
control_node = NodeProperties::GetControlInput(node); \
} \
return (TestNodeMatcher::MatchAndExplain(node, listener) && \
PrintMatchAndExplain(LoadRepresentationOf(node->op()), "rep", \
rep_matcher_, listener) && \
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), \
"base", base_matcher_, listener) && \
PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), \
"index", index_matcher_, listener) && \
PrintMatchAndExplain(effect_node, "effect", effect_matcher_, \
listener) && \
PrintMatchAndExplain(control_node, "control", control_matcher_, \
listener)); \
} \
\
private: \
const Matcher<LoadRepresentation> rep_matcher_; \
const Matcher<Node*> base_matcher_; \
const Matcher<Node*> index_matcher_; \
const Matcher<Node*> effect_matcher_; \
const Matcher<Node*> control_matcher_; \
};
LOAD_MATCHER(Load)
@ -1207,10 +1206,9 @@ class IsStackSlotMatcher final : public TestNodeMatcher {
}
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
return (
TestNodeMatcher::MatchAndExplain(node, listener) &&
PrintMatchAndExplain(OpParameter<StackSlotRepresentation>(node->op()),
"rep", rep_matcher_, listener));
return (TestNodeMatcher::MatchAndExplain(node, listener) &&
PrintMatchAndExplain(StackSlotRepresentationOf(node->op()), "rep",
rep_matcher_, listener));
}
private:
@ -1280,8 +1278,8 @@ class IsLoadContextMatcher final : public TestNodeMatcher {
bool MatchAndExplain(Node* node, MatchResultListener* listener) const final {
return (TestNodeMatcher::MatchAndExplain(node, listener) &&
PrintMatchAndExplain(OpParameter<ContextAccess>(node->op()),
"access", access_matcher_, listener) &&
PrintMatchAndExplain(ContextAccessOf(node->op()), "access",
access_matcher_, listener) &&
PrintMatchAndExplain(NodeProperties::GetContextInput(node),
"context", context_matcher_, listener));
}