From: titzer@chromium.org Date: Fri, 20 Sep 2013 12:25:00 +0000 (+0000) Subject: Use Unique in HTransitionElementsKind. X-Git-Tag: upstream/4.7.83~12372 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=05babb3dcabff3510ab6faf5ecb457619489a874;p=platform%2Fupstream%2Fv8.git Use Unique in HTransitionElementsKind. BUG= R=verwaest@chromium.org Review URL: https://codereview.chromium.org/23693006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16864 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/arm/lithium-arm.h b/src/arm/lithium-arm.h index 9c91a03..3902b4c 100644 --- a/src/arm/lithium-arm.h +++ b/src/arm/lithium-arm.h @@ -2276,8 +2276,10 @@ class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 1, 1> { virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; - Handle original_map() { return hydrogen()->original_map(); } - Handle transitioned_map() { return hydrogen()->transitioned_map(); } + Handle original_map() { return hydrogen()->original_map().handle(); } + Handle transitioned_map() { + return hydrogen()->transitioned_map().handle(); + } ElementsKind from_kind() { return hydrogen()->from_kind(); } ElementsKind to_kind() { return hydrogen()->to_kind(); } }; diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc index d8a4380..2bd2360 100644 --- a/src/hydrogen-instructions.cc +++ b/src/hydrogen-instructions.cc @@ -3133,12 +3133,12 @@ void HStoreKeyedGeneric::PrintDataTo(StringStream* stream) { void HTransitionElementsKind::PrintDataTo(StringStream* stream) { object()->PrintNameTo(stream); - ElementsKind from_kind = original_map()->elements_kind(); - ElementsKind to_kind = transitioned_map()->elements_kind(); + ElementsKind from_kind = original_map().handle()->elements_kind(); + ElementsKind to_kind = transitioned_map().handle()->elements_kind(); stream->Add(" %p [%s] -> %p [%s]", - *original_map(), + *original_map().handle(), ElementsAccessor::ForKind(from_kind)->name(), - *transitioned_map(), + *transitioned_map().handle(), ElementsAccessor::ForKind(to_kind)->name()); if (IsSimpleMapChangeTransition(from_kind, to_kind)) stream->Add(" (simple)"); } diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h index 6783694..505bc80 100644 --- a/src/hydrogen-instructions.h +++ b/src/hydrogen-instructions.h @@ -6513,25 +6513,20 @@ class HTransitionElementsKind V8_FINAL : public HTemplateInstruction<2> { HValue* object() { return OperandAt(0); } HValue* context() { return OperandAt(1); } - Handle original_map() { return original_map_; } - Handle transitioned_map() { return transitioned_map_; } + Unique original_map() { return original_map_; } + Unique transitioned_map() { return transitioned_map_; } ElementsKind from_kind() { return from_kind_; } ElementsKind to_kind() { return to_kind_; } virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; - virtual void FinalizeUniqueValueId() V8_OVERRIDE { - original_map_unique_id_ = UniqueValueId(original_map_); - transitioned_map_unique_id_ = UniqueValueId(transitioned_map_); - } - DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind) protected: virtual bool DataEquals(HValue* other) V8_OVERRIDE { HTransitionElementsKind* instr = HTransitionElementsKind::cast(other); - return original_map_unique_id_ == instr->original_map_unique_id_ && - transitioned_map_unique_id_ == instr->transitioned_map_unique_id_; + return original_map_ == instr->original_map_ && + transitioned_map_ == instr->transitioned_map_; } private: @@ -6539,10 +6534,8 @@ class HTransitionElementsKind V8_FINAL : public HTemplateInstruction<2> { HValue* object, Handle original_map, Handle transitioned_map) - : original_map_(original_map), - transitioned_map_(transitioned_map), - original_map_unique_id_(), - transitioned_map_unique_id_(), + : original_map_(Unique(original_map)), + transitioned_map_(Unique(transitioned_map)), from_kind_(original_map->elements_kind()), to_kind_(transitioned_map->elements_kind()) { SetOperandAt(0, object); @@ -6556,10 +6549,8 @@ class HTransitionElementsKind V8_FINAL : public HTemplateInstruction<2> { set_representation(Representation::Tagged()); } - Handle original_map_; - Handle transitioned_map_; - UniqueValueId original_map_unique_id_; - UniqueValueId transitioned_map_unique_id_; + Unique original_map_; + Unique transitioned_map_; ElementsKind from_kind_; ElementsKind to_kind_; }; diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc index 92b1250..0f6ef99 100644 --- a/src/ia32/lithium-codegen-ia32.cc +++ b/src/ia32/lithium-codegen-ia32.cc @@ -4853,9 +4853,8 @@ void LCodeGen::DoTransitionElementsKind(LTransitionElementsKind* instr) { __ j(not_equal, ¬_applicable, branch_distance); if (is_simple_map_transition) { Register new_map_reg = ToRegister(instr->new_map_temp()); - Handle map = instr->hydrogen()->transitioned_map(); __ mov(FieldOperand(object_reg, HeapObject::kMapOffset), - Immediate(map)); + Immediate(to_map)); // Write barrier. ASSERT_NE(instr->temp(), NULL); __ RecordWriteForMap(object_reg, to_map, new_map_reg, diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h index 20e64c4..379d64b 100644 --- a/src/ia32/lithium-ia32.h +++ b/src/ia32/lithium-ia32.h @@ -2355,8 +2355,10 @@ class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 2, 2> { virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; - Handle original_map() { return hydrogen()->original_map(); } - Handle transitioned_map() { return hydrogen()->transitioned_map(); } + Handle original_map() { return hydrogen()->original_map().handle(); } + Handle transitioned_map() { + return hydrogen()->transitioned_map().handle(); + } ElementsKind from_kind() { return hydrogen()->from_kind(); } ElementsKind to_kind() { return hydrogen()->to_kind(); } }; diff --git a/src/mips/lithium-mips.h b/src/mips/lithium-mips.h index 4cfa128..7c22ae8 100644 --- a/src/mips/lithium-mips.h +++ b/src/mips/lithium-mips.h @@ -2250,8 +2250,10 @@ class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 1, 1> { virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; - Handle original_map() { return hydrogen()->original_map(); } - Handle transitioned_map() { return hydrogen()->transitioned_map(); } + Handle original_map() { return hydrogen()->original_map().handle(); } + Handle transitioned_map() { + return hydrogen()->transitioned_map().handle(); + } ElementsKind from_kind() { return hydrogen()->from_kind(); } ElementsKind to_kind() { return hydrogen()->to_kind(); } }; diff --git a/src/x64/lithium-x64.h b/src/x64/lithium-x64.h index 136b294..9f45f97 100644 --- a/src/x64/lithium-x64.h +++ b/src/x64/lithium-x64.h @@ -2201,8 +2201,10 @@ class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 1, 2> { virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; - Handle original_map() { return hydrogen()->original_map(); } - Handle transitioned_map() { return hydrogen()->transitioned_map(); } + Handle original_map() { return hydrogen()->original_map().handle(); } + Handle transitioned_map() { + return hydrogen()->transitioned_map().handle(); + } ElementsKind from_kind() { return hydrogen()->from_kind(); } ElementsKind to_kind() { return hydrogen()->to_kind(); } };