diff options
author | Timothy J Fontaine <tjfontaine@gmail.com> | 2013-11-18 15:01:38 -0800 |
---|---|---|
committer | Timothy J Fontaine <tjfontaine@gmail.com> | 2013-11-18 15:01:38 -0800 |
commit | b73967e9a0c1178bdb83dcf115fe7b07c37fdc94 (patch) | |
tree | 833adedf190e965190cd49b5e45e140f5c72053a /deps/v8/src/arm | |
parent | 2329a254b480a5a0bbe13079dd4bed6b38dfc126 (diff) | |
download | node-new-b73967e9a0c1178bdb83dcf115fe7b07c37fdc94.tar.gz |
v8: upgrade to 3.22.24.5
Diffstat (limited to 'deps/v8/src/arm')
-rw-r--r-- | deps/v8/src/arm/lithium-arm.cc | 10 | ||||
-rw-r--r-- | deps/v8/src/arm/lithium-arm.h | 8 | ||||
-rw-r--r-- | deps/v8/src/arm/lithium-codegen-arm.cc | 5 | ||||
-rw-r--r-- | deps/v8/src/arm/stub-cache-arm.cc | 72 |
4 files changed, 42 insertions, 53 deletions
diff --git a/deps/v8/src/arm/lithium-arm.cc b/deps/v8/src/arm/lithium-arm.cc index 86d5d2b329..615c835bea 100644 --- a/deps/v8/src/arm/lithium-arm.cc +++ b/deps/v8/src/arm/lithium-arm.cc @@ -863,10 +863,12 @@ void LChunkBuilder::VisitInstruction(HInstruction* current) { LInstruction* instr = NULL; if (current->CanReplaceWithDummyUses()) { - HValue* first_operand = current->OperandCount() == 0 - ? graph()->GetConstant1() - : current->OperandAt(0); - instr = DefineAsRegister(new(zone()) LDummyUse(UseAny(first_operand))); + if (current->OperandCount() == 0) { + instr = DefineAsRegister(new(zone()) LDummy()); + } else { + instr = DefineAsRegister(new(zone()) + LDummyUse(UseAny(current->OperandAt(0)))); + } for (int i = 1; i < current->OperandCount(); ++i) { LInstruction* dummy = new(zone()) LDummyUse(UseAny(current->OperandAt(i))); diff --git a/deps/v8/src/arm/lithium-arm.h b/deps/v8/src/arm/lithium-arm.h index ed07229e17..5087fb33d2 100644 --- a/deps/v8/src/arm/lithium-arm.h +++ b/deps/v8/src/arm/lithium-arm.h @@ -91,6 +91,7 @@ class LCodeGen; V(DoubleToI) \ V(DoubleToSmi) \ V(Drop) \ + V(Dummy) \ V(DummyUse) \ V(ElementsKind) \ V(ForInCacheArray) \ @@ -423,6 +424,13 @@ class LLazyBailout V8_FINAL : public LTemplateInstruction<0, 0, 0> { }; +class LDummy V8_FINAL : public LTemplateInstruction<1, 0, 0> { + public: + explicit LDummy() { } + DECLARE_CONCRETE_INSTRUCTION(Dummy, "dummy") +}; + + class LDummyUse V8_FINAL : public LTemplateInstruction<1, 1, 0> { public: explicit LDummyUse(LOperand* value) { diff --git a/deps/v8/src/arm/lithium-codegen-arm.cc b/deps/v8/src/arm/lithium-codegen-arm.cc index fbe8e171fa..8b22e625ba 100644 --- a/deps/v8/src/arm/lithium-codegen-arm.cc +++ b/deps/v8/src/arm/lithium-codegen-arm.cc @@ -5650,6 +5650,11 @@ void LCodeGen::DoDeoptimize(LDeoptimize* instr) { } +void LCodeGen::DoDummy(LDummy* instr) { + // Nothing to see here, move on! +} + + void LCodeGen::DoDummyUse(LDummyUse* instr) { // Nothing to see here, move on! } diff --git a/deps/v8/src/arm/stub-cache-arm.cc b/deps/v8/src/arm/stub-cache-arm.cc index 004e067c82..923011fe08 100644 --- a/deps/v8/src/arm/stub-cache-arm.cc +++ b/deps/v8/src/arm/stub-cache-arm.cc @@ -121,18 +121,14 @@ static void ProbeTable(Isolate* isolate, } -// Helper function used to check that the dictionary doesn't contain -// the property. This function may return false negatives, so miss_label -// must always call a backup property check that is complete. -// This function is safe to call if the receiver has fast properties. -// Name must be unique and receiver must be a heap object. -static void GenerateDictionaryNegativeLookup(MacroAssembler* masm, - Label* miss_label, - Register receiver, - Handle<Name> name, - Register scratch0, - Register scratch1) { +void StubCompiler::GenerateDictionaryNegativeLookup(MacroAssembler* masm, + Label* miss_label, + Register receiver, + Handle<Name> name, + Register scratch0, + Register scratch1) { ASSERT(name->IsUniqueName()); + ASSERT(!receiver.is(scratch0)); Counters* counters = masm->isolate()->counters(); __ IncrementCounter(counters->negative_lookups(), 1, scratch0, scratch1); __ IncrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1); @@ -418,12 +414,12 @@ void StubCompiler::GenerateLoadFunctionPrototype(MacroAssembler* masm, // Generate code to check that a global property cell is empty. Create // the property cell at compilation time if no cell exists for the // property. -static void GenerateCheckPropertyCell(MacroAssembler* masm, - Handle<GlobalObject> global, - Handle<Name> name, - Register scratch, - Label* miss) { - Handle<Cell> cell = GlobalObject::EnsurePropertyCell(global, name); +void StubCompiler::GenerateCheckPropertyCell(MacroAssembler* masm, + Handle<JSGlobalObject> global, + Handle<Name> name, + Register scratch, + Label* miss) { + Handle<Cell> cell = JSGlobalObject::EnsurePropertyCell(global, name); ASSERT(cell->value()->IsTheHole()); __ mov(scratch, Operand(cell)); __ ldr(scratch, FieldMemOperand(scratch, Cell::kValueOffset)); @@ -441,7 +437,7 @@ void StoreStubCompiler::GenerateNegativeHolderLookup( Label* miss) { if (holder->IsJSGlobalObject()) { GenerateCheckPropertyCell( - masm, Handle<GlobalObject>::cast(holder), name, scratch1(), miss); + masm, Handle<JSGlobalObject>::cast(holder), name, scratch1(), miss); } else if (!holder->HasFastProperties() && !holder->IsJSGlobalProxy()) { GenerateDictionaryNegativeLookup( masm, miss, holder_reg, name, scratch1(), scratch2()); @@ -1156,19 +1152,17 @@ class CallInterceptorCompiler BASE_EMBEDDED { }; -// Calls GenerateCheckPropertyCell for each global object in the prototype chain -// from object to (but not including) holder. -static void GenerateCheckPropertyCells(MacroAssembler* masm, - Handle<JSObject> object, - Handle<JSObject> holder, - Handle<Name> name, - Register scratch, - Label* miss) { +void StubCompiler::GenerateCheckPropertyCells(MacroAssembler* masm, + Handle<JSObject> object, + Handle<JSObject> holder, + Handle<Name> name, + Register scratch, + Label* miss) { Handle<JSObject> current = object; while (!current.is_identical_to(holder)) { - if (current->IsGlobalObject()) { + if (current->IsJSGlobalObject()) { GenerateCheckPropertyCell(masm, - Handle<GlobalObject>::cast(current), + Handle<JSGlobalObject>::cast(current), name, scratch, miss); @@ -1373,26 +1367,6 @@ Register LoadStubCompiler::CallbackHandlerFrontend( } -void LoadStubCompiler::NonexistentHandlerFrontend( - Handle<JSObject> object, - Handle<JSObject> last, - Handle<Name> name, - Label* success, - Handle<GlobalObject> global) { - Label miss; - - HandlerFrontendHeader(object, receiver(), last, name, &miss); - - // If the last object in the prototype chain is a global object, - // check that the global property cell is empty. - if (!global.is_null()) { - GenerateCheckPropertyCell(masm(), global, name, scratch2(), &miss); - } - - HandlerFrontendFooter(name, success, &miss); -} - - void LoadStubCompiler::GenerateLoadField(Register reg, Handle<JSObject> holder, PropertyIndex field, @@ -2939,7 +2913,7 @@ Handle<Code> LoadStubCompiler::CompileLoadNonexistent( Handle<JSObject> object, Handle<JSObject> last, Handle<Name> name, - Handle<GlobalObject> global) { + Handle<JSGlobalObject> global) { Label success; NonexistentHandlerFrontend(object, last, name, &success, global); |