diff options
author | Michaël Zasso <targos@protonmail.com> | 2016-12-23 16:30:57 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2017-01-26 22:46:17 +0100 |
commit | 2739185b790e040c3b044c577327f5d44bffad4a (patch) | |
tree | 29a466999212f4c85958379d9d400eec8a185ba5 /deps/v8/src/crankshaft/x64/lithium-x64.cc | |
parent | a67a04d7654faaa04c8da00e42981ebc9fd0911c (diff) | |
download | node-new-2739185b790e040c3b044c577327f5d44bffad4a.tar.gz |
deps: update V8 to 5.5.372.40
PR-URL: https://github.com/nodejs/node/pull/9618
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'deps/v8/src/crankshaft/x64/lithium-x64.cc')
-rw-r--r-- | deps/v8/src/crankshaft/x64/lithium-x64.cc | 76 |
1 files changed, 16 insertions, 60 deletions
diff --git a/deps/v8/src/crankshaft/x64/lithium-x64.cc b/deps/v8/src/crankshaft/x64/lithium-x64.cc index 42451690af..18fb5d4d09 100644 --- a/deps/v8/src/crankshaft/x64/lithium-x64.cc +++ b/deps/v8/src/crankshaft/x64/lithium-x64.cc @@ -348,15 +348,6 @@ void LStoreNamedField::PrintDataTo(StringStream* stream) { } -void LStoreNamedGeneric::PrintDataTo(StringStream* stream) { - object()->PrintTo(stream); - stream->Add("."); - stream->Add(String::cast(*name())->ToCString().get()); - stream->Add(" <- "); - value()->PrintTo(stream); -} - - void LLoadKeyed::PrintDataTo(StringStream* stream) { elements()->PrintTo(stream); stream->Add("["); @@ -389,15 +380,6 @@ void LStoreKeyed::PrintDataTo(StringStream* stream) { } -void LStoreKeyedGeneric::PrintDataTo(StringStream* stream) { - object()->PrintTo(stream); - stream->Add("["); - key()->PrintTo(stream); - stream->Add("] <- "); - value()->PrintTo(stream); -} - - void LTransitionElementsKind::PrintDataTo(StringStream* stream) { object()->PrintTo(stream); stream->Add(" %p -> %p", *original_map(), *transitioned_map()); @@ -907,7 +889,7 @@ LInstruction* LChunkBuilder::DoGoto(HGoto* instr) { LInstruction* LChunkBuilder::DoPrologue(HPrologue* instr) { LInstruction* result = new (zone()) LPrologue(); - if (info_->scope()->num_heap_slots() > 0) { + if (info_->scope()->NeedsContext()) { result = MarkAsCall(result, instr); } return result; @@ -1042,6 +1024,9 @@ LInstruction* LChunkBuilder::DoDeclareGlobals(HDeclareGlobals* instr) { LInstruction* LChunkBuilder::DoCallWithDescriptor( HCallWithDescriptor* instr) { CallInterfaceDescriptor descriptor = instr->descriptor(); + DCHECK_EQ(descriptor.GetParameterCount() + + LCallWithDescriptor::kImplicitRegisterParameterCount, + instr->OperandCount()); LOperand* target = UseRegisterOrConstantAtStart(instr->target()); ZoneList<LOperand*> ops(instr->OperandCount(), zone()); @@ -1050,15 +1035,20 @@ LInstruction* LChunkBuilder::DoCallWithDescriptor( // Context LOperand* op = UseFixed(instr->OperandAt(1), rsi); ops.Add(op, zone()); - // Other register parameters - for (int i = LCallWithDescriptor::kImplicitRegisterParameterCount; - i < instr->OperandCount(); i++) { - op = - UseFixed(instr->OperandAt(i), - descriptor.GetRegisterParameter( - i - LCallWithDescriptor::kImplicitRegisterParameterCount)); + // Load register parameters. + int i = 0; + for (; i < descriptor.GetRegisterParameterCount(); i++) { + op = UseFixed(instr->OperandAt( + i + LCallWithDescriptor::kImplicitRegisterParameterCount), + descriptor.GetRegisterParameter(i)); ops.Add(op, zone()); } + // Push stack parameters. + for (; i < descriptor.GetParameterCount(); i++) { + op = UseAny(instr->OperandAt( + i + LCallWithDescriptor::kImplicitRegisterParameterCount)); + AddInstruction(new (zone()) LPushArgument(op), instr); + } LCallWithDescriptor* result = new(zone()) LCallWithDescriptor( descriptor, ops, zone()); @@ -2223,26 +2213,6 @@ LInstruction* LChunkBuilder::DoStoreKeyed(HStoreKeyed* instr) { } -LInstruction* LChunkBuilder::DoStoreKeyedGeneric(HStoreKeyedGeneric* instr) { - LOperand* context = UseFixed(instr->context(), rsi); - LOperand* object = - UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); - LOperand* key = UseFixed(instr->key(), StoreDescriptor::NameRegister()); - LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); - - DCHECK(instr->object()->representation().IsTagged()); - DCHECK(instr->key()->representation().IsTagged()); - DCHECK(instr->value()->representation().IsTagged()); - - LOperand* slot = FixedTemp(StoreWithVectorDescriptor::SlotRegister()); - LOperand* vector = FixedTemp(StoreWithVectorDescriptor::VectorRegister()); - - LStoreKeyedGeneric* result = new (zone()) - LStoreKeyedGeneric(context, object, key, value, slot, vector); - return MarkAsCall(result, instr); -} - - LInstruction* LChunkBuilder::DoTransitionElementsKind( HTransitionElementsKind* instr) { if (IsSimpleMapChangeTransition(instr->from_kind(), instr->to_kind())) { @@ -2337,20 +2307,6 @@ LInstruction* LChunkBuilder::DoStoreNamedField(HStoreNamedField* instr) { } -LInstruction* LChunkBuilder::DoStoreNamedGeneric(HStoreNamedGeneric* instr) { - LOperand* context = UseFixed(instr->context(), rsi); - LOperand* object = - UseFixed(instr->object(), StoreDescriptor::ReceiverRegister()); - LOperand* value = UseFixed(instr->value(), StoreDescriptor::ValueRegister()); - LOperand* slot = FixedTemp(StoreWithVectorDescriptor::SlotRegister()); - LOperand* vector = FixedTemp(StoreWithVectorDescriptor::VectorRegister()); - - LStoreNamedGeneric* result = - new (zone()) LStoreNamedGeneric(context, object, value, slot, vector); - return MarkAsCall(result, instr); -} - - LInstruction* LChunkBuilder::DoStringAdd(HStringAdd* instr) { LOperand* context = UseFixed(instr->context(), rsi); LOperand* left = UseFixed(instr->left(), rdx); |