From c277e7efad70f4c3ac512c0fcece223c2dc66cae Mon Sep 17 00:00:00 2001 From: michael_dawson Date: Mon, 23 Mar 2015 14:31:34 -0700 Subject: [PATCH] PPC: Remove PropertyCell space Port 16c8485a35efc36cf6ccd15185282d65412e1502 Original commit message: Replaces StoreGlobalCell / LoadGlobalCell with NamedField variants that use write barriers. R=mbrandy@us.ibm.com, svenpanne@chromium.org BUG= Review URL: https://codereview.chromium.org/1018333003 Cr-Commit-Position: refs/heads/master@{#27380} --- src/ppc/lithium-codegen-ppc.cc | 37 ------------------------------------- src/ppc/lithium-ppc.cc | 19 ------------------- src/ppc/lithium-ppc.h | 24 ------------------------ 3 files changed, 80 deletions(-) diff --git a/src/ppc/lithium-codegen-ppc.cc b/src/ppc/lithium-codegen-ppc.cc index 81a3ffb..8649d26 100644 --- a/src/ppc/lithium-codegen-ppc.cc +++ b/src/ppc/lithium-codegen-ppc.cc @@ -3042,18 +3042,6 @@ void LCodeGen::DoReturn(LReturn* instr) { } -void LCodeGen::DoLoadGlobalCell(LLoadGlobalCell* instr) { - Register result = ToRegister(instr->result()); - __ mov(ip, Operand(Handle(instr->hydrogen()->cell().handle()))); - __ LoadP(result, FieldMemOperand(ip, Cell::kValueOffset)); - if (instr->hydrogen()->RequiresHoleCheck()) { - __ LoadRoot(ip, Heap::kTheHoleValueRootIndex); - __ cmp(result, ip); - DeoptimizeIf(eq, instr, Deoptimizer::kHole); - } -} - - template void LCodeGen::EmitVectorLoadICRegisters(T* instr) { DCHECK(FLAG_vector_ics); @@ -3089,31 +3077,6 @@ void LCodeGen::DoLoadGlobalGeneric(LLoadGlobalGeneric* instr) { } -void LCodeGen::DoStoreGlobalCell(LStoreGlobalCell* instr) { - Register value = ToRegister(instr->value()); - Register cell = scratch0(); - - // Load the cell. - __ mov(cell, Operand(instr->hydrogen()->cell().handle())); - - // If the cell we are storing to contains the hole it could have - // been deleted from the property dictionary. In that case, we need - // to update the property details in the property dictionary to mark - // it as no longer deleted. - if (instr->hydrogen()->RequiresHoleCheck()) { - // We use a temp to check the payload (CompareRoot might clobber ip). - Register payload = ToRegister(instr->temp()); - __ LoadP(payload, FieldMemOperand(cell, Cell::kValueOffset)); - __ CompareRoot(payload, Heap::kTheHoleValueRootIndex); - DeoptimizeIf(eq, instr, Deoptimizer::kHole); - } - - // Store the value. - __ StoreP(value, FieldMemOperand(cell, Cell::kValueOffset), r0); - // Cells are always rescanned, so no write barrier here. -} - - void LCodeGen::DoLoadContextSlot(LLoadContextSlot* instr) { Register context = ToRegister(instr->context()); Register result = ToRegister(instr->result()); diff --git a/src/ppc/lithium-ppc.cc b/src/ppc/lithium-ppc.cc index 305b114..ec75713 100644 --- a/src/ppc/lithium-ppc.cc +++ b/src/ppc/lithium-ppc.cc @@ -2098,14 +2098,6 @@ LInstruction* LChunkBuilder::DoConstant(HConstant* instr) { } -LInstruction* LChunkBuilder::DoLoadGlobalCell(HLoadGlobalCell* instr) { - LLoadGlobalCell* result = new (zone()) LLoadGlobalCell; - return instr->RequiresHoleCheck() - ? AssignEnvironment(DefineAsRegister(result)) - : DefineAsRegister(result); -} - - LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { LOperand* context = UseFixed(instr->context(), cp); LOperand* global_object = @@ -2120,17 +2112,6 @@ LInstruction* LChunkBuilder::DoLoadGlobalGeneric(HLoadGlobalGeneric* instr) { } -LInstruction* LChunkBuilder::DoStoreGlobalCell(HStoreGlobalCell* instr) { - LOperand* value = UseRegister(instr->value()); - // Use a temp to check the value in the cell in the case where we perform - // a hole check. - return instr->RequiresHoleCheck() - ? AssignEnvironment(new (zone()) - LStoreGlobalCell(value, TempRegister())) - : new (zone()) LStoreGlobalCell(value, NULL); -} - - LInstruction* LChunkBuilder::DoLoadContextSlot(HLoadContextSlot* instr) { LOperand* context = UseRegisterAtStart(instr->value()); LInstruction* result = diff --git a/src/ppc/lithium-ppc.h b/src/ppc/lithium-ppc.h index 0f34d24..5dce71c 100644 --- a/src/ppc/lithium-ppc.h +++ b/src/ppc/lithium-ppc.h @@ -100,7 +100,6 @@ class LCodeGen; V(LoadRoot) \ V(LoadFieldByIndex) \ V(LoadFunctionPrototype) \ - V(LoadGlobalCell) \ V(LoadGlobalGeneric) \ V(LoadKeyed) \ V(LoadKeyedGeneric) \ @@ -142,7 +141,6 @@ class LCodeGen; V(StoreCodeEntry) \ V(StoreContextSlot) \ V(StoreFrameContext) \ - V(StoreGlobalCell) \ V(StoreKeyed) \ V(StoreKeyedGeneric) \ V(StoreNamedField) \ @@ -1641,13 +1639,6 @@ class LLoadKeyedGeneric FINAL : public LTemplateInstruction<1, 3, 1> { }; -class LLoadGlobalCell FINAL : public LTemplateInstruction<1, 0, 0> { - public: - DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell, "load-global-cell") - DECLARE_HYDROGEN_ACCESSOR(LoadGlobalCell) -}; - - class LLoadGlobalGeneric FINAL : public LTemplateInstruction<1, 2, 1> { public: LLoadGlobalGeneric(LOperand* context, LOperand* global_object, @@ -1669,21 +1660,6 @@ class LLoadGlobalGeneric FINAL : public LTemplateInstruction<1, 2, 1> { }; -class LStoreGlobalCell FINAL : public LTemplateInstruction<0, 1, 1> { - public: - LStoreGlobalCell(LOperand* value, LOperand* temp) { - inputs_[0] = value; - temps_[0] = temp; - } - - LOperand* value() { return inputs_[0]; } - LOperand* temp() { return temps_[0]; } - - DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell") - DECLARE_HYDROGEN_ACCESSOR(StoreGlobalCell) -}; - - class LLoadContextSlot FINAL : public LTemplateInstruction<1, 1, 0> { public: explicit LLoadContextSlot(LOperand* context) { inputs_[0] = context; } -- 2.7.4