diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2011-11-02 16:58:08 +0100 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2011-11-02 16:58:35 +0100 |
commit | edea4122b1c725a9f7873c02fe04100995472ddc (patch) | |
tree | 3334347495150cfd3a68909489689c112457ae07 /deps/v8/src/hydrogen-instructions.h | |
parent | cc9223406837e7610b5f36b16b6a0e51861370cb (diff) | |
download | node-new-edea4122b1c725a9f7873c02fe04100995472ddc.tar.gz |
Revert "Upgrade V8 to 3.7.1"
This reverts commit 92f5a5d3caf01f382f90c235e9057590a5e76870.
V8 3.7.1 in debug mode on ia32 has a curious race-like bug where an fs.Stats
object is not fully formed until some time after it's created. This is easy
to demonstrate by running `make test-debug`.
V8 3.7.0 does not exhibit this behaviour so back we go.
Fixes #1981.
Diffstat (limited to 'deps/v8/src/hydrogen-instructions.h')
-rw-r--r-- | deps/v8/src/hydrogen-instructions.h | 92 |
1 files changed, 14 insertions, 78 deletions
diff --git a/deps/v8/src/hydrogen-instructions.h b/deps/v8/src/hydrogen-instructions.h index 65fc4df4bd..6b43f53da7 100644 --- a/deps/v8/src/hydrogen-instructions.h +++ b/deps/v8/src/hydrogen-instructions.h @@ -171,7 +171,6 @@ class LChunkBuilder; V(Throw) \ V(ToFastProperties) \ V(ToInt32) \ - V(TransitionElementsKind) \ V(Typeof) \ V(TypeofIsAndBranch) \ V(UnaryMathOperation) \ @@ -398,11 +397,6 @@ class HType { return type_ == kUninitialized; } - bool IsHeapObject() { - ASSERT(type_ != kUninitialized); - return IsHeapNumber() || IsString() || IsNonPrimitive(); - } - static HType TypeFromValue(Handle<Object> value); const char* ToString(); @@ -1107,14 +1101,12 @@ class HChange: public HUnaryOperation { ASSERT(!value->representation().IsNone() && !to.IsNone()); ASSERT(!value->representation().Equals(to)); set_representation(to); - set_type(HType::TaggedNumber()); SetFlag(kUseGVN); if (deoptimize_on_undefined) SetFlag(kDeoptimizeOnUndefined); if (is_truncating) SetFlag(kTruncatingToInt32); } virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited); - virtual HType CalculateInferredType(); Representation from() { return value()->representation(); } Representation to() { return representation(); } @@ -1348,7 +1340,7 @@ class HPushArgument: public HUnaryOperation { class HThisFunction: public HTemplateInstruction<0> { public: - explicit HThisFunction(Handle<JSFunction> closure) : closure_(closure) { + HThisFunction() { set_representation(Representation::Tagged()); SetFlag(kUseGVN); } @@ -1357,18 +1349,10 @@ class HThisFunction: public HTemplateInstruction<0> { return Representation::None(); } - Handle<JSFunction> closure() const { return closure_; } - DECLARE_CONCRETE_INSTRUCTION(ThisFunction) protected: - virtual bool DataEquals(HValue* other) { - HThisFunction* b = HThisFunction::cast(other); - return *closure() == *b->closure(); - } - - private: - Handle<JSFunction> closure_; + virtual bool DataEquals(HValue* other) { return true; } }; @@ -2296,7 +2280,6 @@ class HConstant: public HTemplateInstruction<0> { } virtual bool EmitAtUses() { return !representation().IsDouble(); } - virtual HValue* Canonicalize(); virtual void PrintDataTo(StringStream* stream); virtual HType CalculateInferredType(); bool IsInteger() const { return handle_->IsSmi(); } @@ -3277,13 +3260,6 @@ class HLoadGlobalGeneric: public HTemplateInstruction<2> { }; -static inline bool StoringValueNeedsWriteBarrier(HValue* value) { - return !value->type().IsBoolean() - && !value->type().IsSmi() - && !(value->IsConstant() && HConstant::cast(value)->ImmortalImmovable()); -} - - class HStoreGlobalCell: public HUnaryOperation { public: HStoreGlobalCell(HValue* value, @@ -3299,9 +3275,6 @@ class HStoreGlobalCell: public HUnaryOperation { bool RequiresHoleCheck() { return !details_.IsDontDelete() || details_.IsReadOnly(); } - bool NeedsWriteBarrier() { - return StoringValueNeedsWriteBarrier(value()); - } virtual Representation RequiredInputRepresentation(int index) { return Representation::Tagged(); @@ -3382,6 +3355,13 @@ class HLoadContextSlot: public HUnaryOperation { }; +static inline bool StoringValueNeedsWriteBarrier(HValue* value) { + return !value->type().IsBoolean() + && !value->type().IsSmi() + && !(value->IsConstant() && HConstant::cast(value)->ImmortalImmovable()); +} + + class HStoreContextSlot: public HTemplateInstruction<2> { public: HStoreContextSlot(HValue* context, int slot_index, HValue* value) @@ -3720,9 +3700,9 @@ class HStoreNamedGeneric: public HTemplateInstruction<3> { HValue* object, Handle<String> name, HValue* value, - StrictModeFlag strict_mode_flag) + bool strict_mode) : name_(name), - strict_mode_flag_(strict_mode_flag) { + strict_mode_(strict_mode) { SetOperandAt(0, object); SetOperandAt(1, value); SetOperandAt(2, context); @@ -3733,7 +3713,7 @@ class HStoreNamedGeneric: public HTemplateInstruction<3> { HValue* value() { return OperandAt(1); } HValue* context() { return OperandAt(2); } Handle<String> name() { return name_; } - StrictModeFlag strict_mode_flag() { return strict_mode_flag_; } + bool strict_mode() { return strict_mode_; } virtual void PrintDataTo(StringStream* stream); @@ -3745,7 +3725,7 @@ class HStoreNamedGeneric: public HTemplateInstruction<3> { private: Handle<String> name_; - StrictModeFlag strict_mode_flag_; + bool strict_mode_; }; @@ -3906,44 +3886,6 @@ class HStoreKeyedGeneric: public HTemplateInstruction<4> { }; -class HTransitionElementsKind: public HTemplateInstruction<1> { - public: - HTransitionElementsKind(HValue* object, - Handle<Map> original_map, - Handle<Map> transitioned_map) - : original_map_(original_map), - transitioned_map_(transitioned_map) { - SetOperandAt(0, object); - SetFlag(kUseGVN); - SetFlag(kDependsOnMaps); - set_representation(Representation::Tagged()); - } - - virtual Representation RequiredInputRepresentation(int index) { - return Representation::Tagged(); - } - - HValue* object() { return OperandAt(0); } - Handle<Map> original_map() { return original_map_; } - Handle<Map> transitioned_map() { return transitioned_map_; } - - virtual void PrintDataTo(StringStream* stream); - - DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind) - - protected: - virtual bool DataEquals(HValue* other) { - HTransitionElementsKind* instr = HTransitionElementsKind::cast(other); - return original_map_.is_identical_to(instr->original_map()) && - transitioned_map_.is_identical_to(instr->transitioned_map()); - } - - private: - Handle<Map> original_map_; - Handle<Map> transitioned_map_; -}; - - class HStringAdd: public HBinaryOperation { public: HStringAdd(HValue* context, HValue* left, HValue* right) @@ -4006,7 +3948,7 @@ class HStringCharFromCode: public HTemplateInstruction<2> { HStringCharFromCode(HValue* context, HValue* char_code) { SetOperandAt(0, context); SetOperandAt(1, char_code); - set_representation(Representation::Tagged()); + set_representation(Representation::Tagged()); SetFlag(kUseGVN); } @@ -4015,7 +3957,6 @@ class HStringCharFromCode: public HTemplateInstruction<2> { ? Representation::Tagged() : Representation::Integer32(); } - virtual HType CalculateInferredType(); HValue* context() { return OperandAt(0); } HValue* value() { return OperandAt(1); } @@ -4093,7 +4034,6 @@ class HArrayLiteral: public HMaterializedLiteral<1> { virtual Representation RequiredInputRepresentation(int index) { return Representation::Tagged(); } - virtual HType CalculateInferredType(); DECLARE_CONCRETE_INSTRUCTION(ArrayLiteral) @@ -4128,7 +4068,6 @@ class HObjectLiteral: public HMaterializedLiteral<1> { virtual Representation RequiredInputRepresentation(int index) { return Representation::Tagged(); } - virtual HType CalculateInferredType(); DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral) @@ -4158,7 +4097,6 @@ class HRegExpLiteral: public HMaterializedLiteral<1> { virtual Representation RequiredInputRepresentation(int index) { return Representation::Tagged(); } - virtual HType CalculateInferredType(); DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral) @@ -4183,7 +4121,6 @@ class HFunctionLiteral: public HTemplateInstruction<1> { virtual Representation RequiredInputRepresentation(int index) { return Representation::Tagged(); } - virtual HType CalculateInferredType(); DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral) @@ -4207,7 +4144,6 @@ class HTypeof: public HTemplateInstruction<2> { HValue* context() { return OperandAt(0); } HValue* value() { return OperandAt(1); } - virtual HValue* Canonicalize(); virtual void PrintDataTo(StringStream* stream); virtual Representation RequiredInputRepresentation(int index) { |