Revert "Revert "Upgrade to 5.0.71.48"" DO NOT MERGE
This reverts commit f2e3994fa5148cc3d9946666f0b0596290192b0e,
and updates the x64 makefile properly so it doesn't break that
build.
FPIIM-449
Change-Id: Ib83e35bfbae6af627451c926a9650ec57c045605
(cherry picked from commit 109988c7ccb6f3fd1a58574fa3dfb88beaef6632)
diff --git a/src/crankshaft/hydrogen-instructions.h b/src/crankshaft/hydrogen-instructions.h
index 13ada8c..22ed052 100644
--- a/src/crankshaft/hydrogen-instructions.h
+++ b/src/crankshaft/hydrogen-instructions.h
@@ -48,7 +48,6 @@
V(AbnormalExit) \
V(AccessArgumentsAt) \
V(Add) \
- V(AllocateBlockContext) \
V(Allocate) \
V(ApplyArguments) \
V(ArgumentsElements) \
@@ -64,7 +63,6 @@
V(CallFunction) \
V(CallNewArray) \
V(CallRuntime) \
- V(CallStub) \
V(CapturedObject) \
V(Change) \
V(CheckArrayBufferNotNeutered) \
@@ -79,7 +77,6 @@
V(CompareNumericAndBranch) \
V(CompareHoleAndBranch) \
V(CompareGeneric) \
- V(CompareMinusZeroAndBranch) \
V(CompareObjectEqAndBranch) \
V(CompareMap) \
V(Constant) \
@@ -117,7 +114,6 @@
V(LoadNamedField) \
V(LoadNamedGeneric) \
V(LoadRoot) \
- V(MapEnumLength) \
V(MathFloorOfDiv) \
V(MathMinMax) \
V(MaybeGrowElements) \
@@ -2402,7 +2398,9 @@
HValue* context() const { return first(); }
HValue* function() const { return second(); }
- ConvertReceiverMode convert_mode() const { return convert_mode_; }
+ ConvertReceiverMode convert_mode() const {
+ return ConvertReceiverModeField::decode(bit_field_);
+ }
FeedbackVectorSlot slot() const { return slot_; }
Handle<TypeFeedbackVector> feedback_vector() const {
return feedback_vector_;
@@ -2424,10 +2422,14 @@
HCallFunction(HValue* context, HValue* function, int argument_count,
ConvertReceiverMode convert_mode)
: HBinaryCall(context, function, argument_count),
- convert_mode_(convert_mode) {}
+ bit_field_(ConvertReceiverModeField::encode(convert_mode)) {}
Handle<TypeFeedbackVector> feedback_vector_;
FeedbackVectorSlot slot_;
- ConvertReceiverMode convert_mode_;
+
+ class ConvertReceiverModeField : public BitField<ConvertReceiverMode, 0, 2> {
+ };
+
+ uint32_t bit_field_;
};
@@ -2493,31 +2495,6 @@
};
-class HMapEnumLength final : public HUnaryOperation {
- public:
- DECLARE_INSTRUCTION_FACTORY_P1(HMapEnumLength, HValue*);
-
- Representation RequiredInputRepresentation(int index) override {
- return Representation::Tagged();
- }
-
- DECLARE_CONCRETE_INSTRUCTION(MapEnumLength)
-
- protected:
- bool DataEquals(HValue* other) override { return true; }
-
- private:
- explicit HMapEnumLength(HValue* value)
- : HUnaryOperation(value, HType::Smi()) {
- set_representation(Representation::Smi());
- SetFlag(kUseGVN);
- SetDependsOnFlag(kMaps);
- }
-
- bool IsDeletable() const override { return true; }
-};
-
-
class HUnaryMathOperation final : public HTemplateInstruction<2> {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
@@ -2810,8 +2787,6 @@
bool in_new_space = isolate->heap()->InNewSpace(*func);
// NOTE: We create an uninitialized Unique and initialize it later.
// This is because a JSFunction can move due to GC during graph creation.
- // TODO(titzer): This is a migration crutch. Replace with some kind of
- // Uniqueness scope later.
Unique<JSFunction> target = Unique<JSFunction>::CreateUninitialized(func);
HCheckValue* check = new(zone) HCheckValue(value, target, in_new_space);
return check;
@@ -3341,7 +3316,6 @@
Representation representation_from_non_phi_uses_ = Representation::None();
bool has_type_feedback_from_uses_ = false;
- // TODO(titzer): we can't eliminate the receiver for generating backtraces
bool IsDeletable() const override { return !IsReceiver(); }
};
@@ -3756,9 +3730,8 @@
class HBinaryOperation : public HTemplateInstruction<3> {
public:
HBinaryOperation(HValue* context, HValue* left, HValue* right,
- Strength strength, HType type = HType::Tagged())
+ HType type = HType::Tagged())
: HTemplateInstruction<3>(type),
- strength_(strength),
observed_output_representation_(Representation::None()) {
DCHECK(left != NULL && right != NULL);
SetOperandAt(0, context);
@@ -3771,7 +3744,6 @@
HValue* context() const { return OperandAt(0); }
HValue* left() const { return OperandAt(1); }
HValue* right() const { return OperandAt(2); }
- Strength strength() const { return strength_; }
// True if switching left and right operands likely generates better code.
bool AreOperandsBetterSwitched() {
@@ -3847,13 +3819,10 @@
return base::bits::IsPowerOfTwo32(static_cast<uint32_t>(value));
}
- Strength strength() { return strength_; }
-
DECLARE_ABSTRACT_INSTRUCTION(BinaryOperation)
private:
bool IgnoreObservedOutputRepresentation(Representation current_rep);
- Strength strength_;
Representation observed_input_representation_[2];
Representation observed_output_representation_;
@@ -4123,11 +4092,10 @@
class HBitwiseBinaryOperation : public HBinaryOperation {
public:
HBitwiseBinaryOperation(HValue* context, HValue* left, HValue* right,
- Strength strength, HType type = HType::TaggedNumber())
- : HBinaryOperation(context, left, right, strength, type) {
+ HType type = HType::TaggedNumber())
+ : HBinaryOperation(context, left, right, type) {
SetFlag(kFlexibleRepresentation);
SetFlag(kTruncatingToInt32);
- if (!is_strong(strength)) SetFlag(kAllowUndefinedAsNaN);
SetAllSideEffects();
}
@@ -4182,7 +4150,7 @@
private:
HMathFloorOfDiv(HValue* context, HValue* left, HValue* right)
- : HBinaryOperation(context, left, right, Strength::WEAK) {
+ : HBinaryOperation(context, left, right) {
set_representation(Representation::Integer32());
SetFlag(kUseGVN);
SetFlag(kCanOverflow);
@@ -4201,13 +4169,11 @@
class HArithmeticBinaryOperation : public HBinaryOperation {
public:
- HArithmeticBinaryOperation(HValue* context, HValue* left, HValue* right,
- Strength strength)
- : HBinaryOperation(context, left, right, strength,
- HType::TaggedNumber()) {
+ HArithmeticBinaryOperation(HValue* context, HValue* left, HValue* right)
+ : HBinaryOperation(context, left, right, HType::TaggedNumber()) {
SetAllSideEffects();
SetFlag(kFlexibleRepresentation);
- if (!is_strong(strength)) SetFlag(kAllowUndefinedAsNaN);
+ SetFlag(kAllowUndefinedAsNaN);
}
void RepresentationChanged(Representation to) override {
@@ -4232,9 +4198,8 @@
class HCompareGeneric final : public HBinaryOperation {
public:
static HCompareGeneric* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right, Token::Value token,
- Strength strength = Strength::WEAK) {
- return new (zone) HCompareGeneric(context, left, right, token, strength);
+ HValue* left, HValue* right, Token::Value token) {
+ return new (zone) HCompareGeneric(context, left, right, token);
}
Representation RequiredInputRepresentation(int index) override {
@@ -4250,8 +4215,8 @@
private:
HCompareGeneric(HValue* context, HValue* left, HValue* right,
- Token::Value token, Strength strength)
- : HBinaryOperation(context, left, right, strength, HType::Boolean()),
+ Token::Value token)
+ : HBinaryOperation(context, left, right, HType::Boolean()),
token_(token) {
DCHECK(Token::IsCompareOp(token));
set_representation(Representation::Tagged());
@@ -4268,17 +4233,9 @@
HValue* context, HValue* left,
HValue* right, Token::Value token,
HBasicBlock* true_target = NULL,
- HBasicBlock* false_target = NULL,
- Strength strength = Strength::WEAK) {
- return new (zone) HCompareNumericAndBranch(left, right, token, true_target,
- false_target, strength);
- }
- static HCompareNumericAndBranch* New(Isolate* isolate, Zone* zone,
- HValue* context, HValue* left,
- HValue* right, Token::Value token,
- Strength strength) {
+ HBasicBlock* false_target = NULL) {
return new (zone)
- HCompareNumericAndBranch(left, right, token, NULL, NULL, strength);
+ HCompareNumericAndBranch(left, right, token, true_target, false_target);
}
HValue* left() const { return OperandAt(0); }
@@ -4302,8 +4259,6 @@
bool KnownSuccessorBlock(HBasicBlock** block) override;
- Strength strength() const { return strength_; }
-
std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT
void SetOperandPositions(Zone* zone, SourcePosition left_pos,
@@ -4316,9 +4271,8 @@
private:
HCompareNumericAndBranch(HValue* left, HValue* right, Token::Value token,
- HBasicBlock* true_target, HBasicBlock* false_target,
- Strength strength)
- : token_(token), strength_(strength) {
+ HBasicBlock* true_target, HBasicBlock* false_target)
+ : token_(token) {
SetFlag(kFlexibleRepresentation);
DCHECK(Token::IsCompareOp(token));
SetOperandAt(0, left);
@@ -4329,7 +4283,6 @@
Representation observed_input_representation_[2];
Token::Value token_;
- Strength strength_;
};
@@ -4358,27 +4311,6 @@
};
-class HCompareMinusZeroAndBranch final : public HUnaryControlInstruction {
- public:
- DECLARE_INSTRUCTION_FACTORY_P1(HCompareMinusZeroAndBranch, HValue*);
-
- void InferRepresentation(HInferRepresentationPhase* h_infer) override;
-
- Representation RequiredInputRepresentation(int index) override {
- return representation();
- }
-
- bool KnownSuccessorBlock(HBasicBlock** block) override;
-
- DECLARE_CONCRETE_INSTRUCTION(CompareMinusZeroAndBranch)
-
- private:
- explicit HCompareMinusZeroAndBranch(HValue* value)
- : HUnaryControlInstruction(value, NULL, NULL) {
- }
-};
-
-
class HCompareObjectEqAndBranch : public HTemplateControlInstruction<2, 2> {
public:
DECLARE_INSTRUCTION_FACTORY_P2(HCompareObjectEqAndBranch, HValue*, HValue*);
@@ -4682,8 +4614,7 @@
private:
HInstanceOf(HValue* context, HValue* left, HValue* right)
- : HBinaryOperation(context, left, right, Strength::WEAK,
- HType::Boolean()) {
+ : HBinaryOperation(context, left, right, HType::Boolean()) {
set_representation(Representation::Tagged());
SetAllSideEffects();
}
@@ -4766,10 +4697,9 @@
class HAdd final : public HArithmeticBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ HValue* left, HValue* right);
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right, Strength strength,
+ HValue* left, HValue* right,
ExternalAddType external_add_type);
// Add is only commutative if two integer values are added and not if two
@@ -4831,9 +4761,9 @@
Range* InferRange(Zone* zone) override;
private:
- HAdd(HValue* context, HValue* left, HValue* right, Strength strength,
+ HAdd(HValue* context, HValue* left, HValue* right,
ExternalAddType external_add_type = NoExternalAdd)
- : HArithmeticBinaryOperation(context, left, right, strength),
+ : HArithmeticBinaryOperation(context, left, right),
external_add_type_(external_add_type) {
SetFlag(kCanOverflow);
switch (external_add_type_) {
@@ -4868,8 +4798,7 @@
class HSub final : public HArithmeticBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ HValue* left, HValue* right);
HValue* Canonicalize() override;
@@ -4890,8 +4819,8 @@
Range* InferRange(Zone* zone) override;
private:
- HSub(HValue* context, HValue* left, HValue* right, Strength strength)
- : HArithmeticBinaryOperation(context, left, right, strength) {
+ HSub(HValue* context, HValue* left, HValue* right)
+ : HArithmeticBinaryOperation(context, left, right) {
SetFlag(kCanOverflow);
}
};
@@ -4900,14 +4829,11 @@
class HMul final : public HArithmeticBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ HValue* left, HValue* right);
static HInstruction* NewImul(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK) {
- HInstruction* instr =
- HMul::New(isolate, zone, context, left, right, strength);
+ HValue* left, HValue* right) {
+ HInstruction* instr = HMul::New(isolate, zone, context, left, right);
if (!instr->IsMul()) return instr;
HMul* mul = HMul::cast(instr);
// TODO(mstarzinger): Prevent bailout on minus zero for imul.
@@ -4937,8 +4863,8 @@
Range* InferRange(Zone* zone) override;
private:
- HMul(HValue* context, HValue* left, HValue* right, Strength strength)
- : HArithmeticBinaryOperation(context, left, right, strength) {
+ HMul(HValue* context, HValue* left, HValue* right)
+ : HArithmeticBinaryOperation(context, left, right) {
SetFlag(kCanOverflow);
}
};
@@ -4947,8 +4873,7 @@
class HMod final : public HArithmeticBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ HValue* left, HValue* right);
HValue* Canonicalize() override;
@@ -4967,8 +4892,8 @@
Range* InferRange(Zone* zone) override;
private:
- HMod(HValue* context, HValue* left, HValue* right, Strength strength)
- : HArithmeticBinaryOperation(context, left, right, strength) {
+ HMod(HValue* context, HValue* left, HValue* right)
+ : HArithmeticBinaryOperation(context, left, right) {
SetFlag(kCanBeDivByZero);
SetFlag(kCanOverflow);
SetFlag(kLeftCanBeNegative);
@@ -4979,8 +4904,7 @@
class HDiv final : public HArithmeticBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ HValue* left, HValue* right);
HValue* Canonicalize() override;
@@ -4999,8 +4923,8 @@
Range* InferRange(Zone* zone) override;
private:
- HDiv(HValue* context, HValue* left, HValue* right, Strength strength)
- : HArithmeticBinaryOperation(context, left, right, strength) {
+ HDiv(HValue* context, HValue* left, HValue* right)
+ : HArithmeticBinaryOperation(context, left, right) {
SetFlag(kCanBeDivByZero);
SetFlag(kCanOverflow);
}
@@ -5046,8 +4970,7 @@
private:
HMathMinMax(HValue* context, HValue* left, HValue* right, Operation op)
- : HArithmeticBinaryOperation(context, left, right, Strength::WEAK),
- operation_(op) {}
+ : HArithmeticBinaryOperation(context, left, right), operation_(op) {}
Operation operation_;
};
@@ -5056,8 +4979,7 @@
class HBitwise final : public HBitwiseBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- Token::Value op, HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ Token::Value op, HValue* left, HValue* right);
Token::Value op() const { return op_; }
@@ -5077,9 +4999,8 @@
Range* InferRange(Zone* zone) override;
private:
- HBitwise(HValue* context, Token::Value op, HValue* left, HValue* right,
- Strength strength)
- : HBitwiseBinaryOperation(context, left, right, strength), op_(op) {
+ HBitwise(HValue* context, Token::Value op, HValue* left, HValue* right)
+ : HBitwiseBinaryOperation(context, left, right), op_(op) {
DCHECK(op == Token::BIT_AND || op == Token::BIT_OR || op == Token::BIT_XOR);
// BIT_AND with a smi-range positive value will always unset the
// entire sign-extension of the smi-sign.
@@ -5113,8 +5034,7 @@
class HShl final : public HBitwiseBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ HValue* left, HValue* right);
Range* InferRange(Zone* zone) override;
@@ -5135,16 +5055,15 @@
bool DataEquals(HValue* other) override { return true; }
private:
- HShl(HValue* context, HValue* left, HValue* right, Strength strength)
- : HBitwiseBinaryOperation(context, left, right, strength) {}
+ HShl(HValue* context, HValue* left, HValue* right)
+ : HBitwiseBinaryOperation(context, left, right) {}
};
class HShr final : public HBitwiseBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ HValue* left, HValue* right);
bool TryDecompose(DecompositionResult* decomposition) override {
if (right()->IsInteger32Constant()) {
@@ -5173,16 +5092,15 @@
bool DataEquals(HValue* other) override { return true; }
private:
- HShr(HValue* context, HValue* left, HValue* right, Strength strength)
- : HBitwiseBinaryOperation(context, left, right, strength) {}
+ HShr(HValue* context, HValue* left, HValue* right)
+ : HBitwiseBinaryOperation(context, left, right) {}
};
class HSar final : public HBitwiseBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK);
+ HValue* left, HValue* right);
bool TryDecompose(DecompositionResult* decomposition) override {
if (right()->IsInteger32Constant()) {
@@ -5211,17 +5129,16 @@
bool DataEquals(HValue* other) override { return true; }
private:
- HSar(HValue* context, HValue* left, HValue* right, Strength strength)
- : HBitwiseBinaryOperation(context, left, right, strength) {}
+ HSar(HValue* context, HValue* left, HValue* right)
+ : HBitwiseBinaryOperation(context, left, right) {}
};
class HRor final : public HBitwiseBinaryOperation {
public:
static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context,
- HValue* left, HValue* right,
- Strength strength = Strength::WEAK) {
- return new (zone) HRor(context, left, right, strength);
+ HValue* left, HValue* right) {
+ return new (zone) HRor(context, left, right);
}
void UpdateRepresentation(Representation new_rep,
@@ -5237,8 +5154,8 @@
bool DataEquals(HValue* other) override { return true; }
private:
- HRor(HValue* context, HValue* left, HValue* right, Strength strength)
- : HBitwiseBinaryOperation(context, left, right, strength) {
+ HRor(HValue* context, HValue* left, HValue* right)
+ : HBitwiseBinaryOperation(context, left, right) {
ChangeRepresentation(Representation::Integer32());
}
};
@@ -5316,27 +5233,6 @@
};
-class HCallStub final : public HUnaryCall {
- public:
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P2(HCallStub, CodeStub::Major, int);
- CodeStub::Major major_key() { return major_key_; }
-
- HValue* context() { return value(); }
-
- std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT
-
- DECLARE_CONCRETE_INSTRUCTION(CallStub)
-
- private:
- HCallStub(HValue* context, CodeStub::Major major_key, int argument_count)
- : HUnaryCall(context, argument_count),
- major_key_(major_key) {
- }
-
- CodeStub::Major major_key_;
-};
-
-
class HUnknownOSRValue final : public HTemplateInstruction<0> {
public:
DECLARE_INSTRUCTION_FACTORY_P2(HUnknownOSRValue, HEnvironment*, int);
@@ -6027,6 +5923,11 @@
Representation::UInteger8());
}
+ static HObjectAccess ForMapBitField3() {
+ return HObjectAccess(kInobject, Map::kBitField3Offset,
+ Representation::Integer32());
+ }
+
static HObjectAccess ForNameHashField() {
return HObjectAccess(kInobject,
Name::kHashFieldOffset,
@@ -6399,9 +6300,8 @@
class HLoadNamedGeneric final : public HTemplateInstruction<2> {
public:
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HLoadNamedGeneric, HValue*,
- Handle<Name>, LanguageMode,
- InlineCacheState);
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadNamedGeneric, HValue*,
+ Handle<Name>, InlineCacheState);
HValue* context() const { return OperandAt(0); }
HValue* object() const { return OperandAt(1); }
@@ -6429,14 +6329,10 @@
DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric)
- LanguageMode language_mode() const { return language_mode_; }
-
private:
HLoadNamedGeneric(HValue* context, HValue* object, Handle<Name> name,
- LanguageMode language_mode,
InlineCacheState initialization_state)
: name_(name),
- language_mode_(language_mode),
initialization_state_(initialization_state) {
SetOperandAt(0, context);
SetOperandAt(1, object);
@@ -6447,7 +6343,6 @@
Handle<Name> name_;
Handle<TypeFeedbackVector> feedback_vector_;
FeedbackVectorSlot slot_;
- LanguageMode language_mode_;
InlineCacheState initialization_state_;
};
@@ -6690,9 +6585,8 @@
class HLoadKeyedGeneric final : public HTemplateInstruction<3> {
public:
- DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HLoadKeyedGeneric, HValue*,
- HValue*, LanguageMode,
- InlineCacheState);
+ DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadKeyedGeneric, HValue*,
+ HValue*, InlineCacheState);
HValue* object() const { return OperandAt(0); }
HValue* key() const { return OperandAt(1); }
HValue* context() const { return OperandAt(2); }
@@ -6724,14 +6618,10 @@
DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric)
- LanguageMode language_mode() const { return language_mode_; }
-
private:
HLoadKeyedGeneric(HValue* context, HValue* obj, HValue* key,
- LanguageMode language_mode,
InlineCacheState initialization_state)
- : initialization_state_(initialization_state),
- language_mode_(language_mode) {
+ : initialization_state_(initialization_state) {
set_representation(Representation::Tagged());
SetOperandAt(0, obj);
SetOperandAt(1, key);
@@ -6742,7 +6632,6 @@
Handle<TypeFeedbackVector> feedback_vector_;
FeedbackVectorSlot slot_;
InlineCacheState initialization_state_;
- LanguageMode language_mode_;
};
@@ -7298,7 +7187,7 @@
HStringAdd(HValue* context, HValue* left, HValue* right,
PretenureFlag pretenure_flag, StringAddFlags flags,
Handle<AllocationSite> allocation_site)
- : HBinaryOperation(context, left, right, Strength::WEAK, HType::String()),
+ : HBinaryOperation(context, left, right, HType::String()),
flags_(flags),
pretenure_flag_(pretenure_flag) {
set_representation(Representation::Tagged());
@@ -7778,36 +7667,6 @@
};
-class HAllocateBlockContext: public HTemplateInstruction<2> {
- public:
- DECLARE_INSTRUCTION_FACTORY_P3(HAllocateBlockContext, HValue*,
- HValue*, Handle<ScopeInfo>);
- HValue* context() const { return OperandAt(0); }
- HValue* function() const { return OperandAt(1); }
- Handle<ScopeInfo> scope_info() const { return scope_info_; }
-
- Representation RequiredInputRepresentation(int index) override {
- return Representation::Tagged();
- }
-
- std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT
-
- DECLARE_CONCRETE_INSTRUCTION(AllocateBlockContext)
-
- private:
- HAllocateBlockContext(HValue* context,
- HValue* function,
- Handle<ScopeInfo> scope_info)
- : scope_info_(scope_info) {
- SetOperandAt(0, context);
- SetOperandAt(1, function);
- set_representation(Representation::Tagged());
- }
-
- Handle<ScopeInfo> scope_info_;
-};
-
-
#undef DECLARE_INSTRUCTION
#undef DECLARE_CONCRETE_INSTRUCTION