| OLD | NEW | 
|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/v8.h" | 5 #include "src/v8.h" | 
| 6 | 6 | 
| 7 #if V8_TARGET_ARCH_X64 | 7 #if V8_TARGET_ARCH_X64 | 
| 8 | 8 | 
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" | 
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" | 
| (...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 881   STATIC_ASSERT(kSmiValueSize <= 32); | 881   STATIC_ASSERT(kSmiValueSize <= 32); | 
| 882   __ JumpUnlessNonNegativeSmi(key, &slow); | 882   __ JumpUnlessNonNegativeSmi(key, &slow); | 
| 883 | 883 | 
| 884   // Everything is fine, call runtime. | 884   // Everything is fine, call runtime. | 
| 885   __ PopReturnAddressTo(scratch); | 885   __ PopReturnAddressTo(scratch); | 
| 886   __ Push(receiver);  // receiver | 886   __ Push(receiver);  // receiver | 
| 887   __ Push(key);       // key | 887   __ Push(key);       // key | 
| 888   __ PushReturnAddressFrom(scratch); | 888   __ PushReturnAddressFrom(scratch); | 
| 889 | 889 | 
| 890   // Perform tail call to the entry. | 890   // Perform tail call to the entry. | 
| 891   __ TailCallExternalReference( | 891   __ TailCallRuntime(Runtime::kLoadElementWithInterceptor, 2, 1); | 
| 892       ExternalReference(IC_Utility(IC::kLoadElementWithInterceptor), |  | 
| 893                         masm->isolate()), |  | 
| 894       2, 1); |  | 
| 895 | 892 | 
| 896   __ bind(&slow); | 893   __ bind(&slow); | 
| 897   PropertyAccessCompiler::TailCallBuiltin( | 894   PropertyAccessCompiler::TailCallBuiltin( | 
| 898       masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC)); | 895       masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC)); | 
| 899 } | 896 } | 
| 900 | 897 | 
| 901 | 898 | 
| 902 void LoadIndexedStringStub::Generate(MacroAssembler* masm) { | 899 void LoadIndexedStringStub::Generate(MacroAssembler* masm) { | 
| 903   // Return address is on the stack. | 900   // Return address is on the stack. | 
| 904   Label miss; | 901   Label miss; | 
| (...skipping 1418 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2323 void CallICStub::GenerateMiss(MacroAssembler* masm) { | 2320 void CallICStub::GenerateMiss(MacroAssembler* masm) { | 
| 2324   FrameScope scope(masm, StackFrame::INTERNAL); | 2321   FrameScope scope(masm, StackFrame::INTERNAL); | 
| 2325 | 2322 | 
| 2326   // Push the receiver and the function and feedback info. | 2323   // Push the receiver and the function and feedback info. | 
| 2327   __ Push(rdi); | 2324   __ Push(rdi); | 
| 2328   __ Push(rbx); | 2325   __ Push(rbx); | 
| 2329   __ Integer32ToSmi(rdx, rdx); | 2326   __ Integer32ToSmi(rdx, rdx); | 
| 2330   __ Push(rdx); | 2327   __ Push(rdx); | 
| 2331 | 2328 | 
| 2332   // Call the entry. | 2329   // Call the entry. | 
| 2333   IC::UtilityId id = GetICState() == DEFAULT ? IC::kCallIC_Miss | 2330   Runtime::FunctionId id = GetICState() == DEFAULT | 
| 2334                                              : IC::kCallIC_Customization_Miss; | 2331                                ? Runtime::kCallIC_Miss | 
| 2335 | 2332                                : Runtime::kCallIC_Customization_Miss; | 
| 2336   ExternalReference miss = ExternalReference(IC_Utility(id), masm->isolate()); | 2333   __ CallRuntime(id, 3); | 
| 2337   __ CallExternalReference(miss, 3); |  | 
| 2338 | 2334 | 
| 2339   // Move result to edi and exit the internal frame. | 2335   // Move result to edi and exit the internal frame. | 
| 2340   __ movp(rdi, rax); | 2336   __ movp(rdi, rax); | 
| 2341 } | 2337 } | 
| 2342 | 2338 | 
| 2343 | 2339 | 
| 2344 bool CEntryStub::NeedsImmovableCode() { | 2340 bool CEntryStub::NeedsImmovableCode() { | 
| 2345   return false; | 2341   return false; | 
| 2346 } | 2342 } | 
| 2347 | 2343 | 
| (...skipping 1505 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3853   __ ret(0); | 3849   __ ret(0); | 
| 3854 | 3850 | 
| 3855   __ bind(&miss); | 3851   __ bind(&miss); | 
| 3856   GenerateMiss(masm); | 3852   GenerateMiss(masm); | 
| 3857 } | 3853 } | 
| 3858 | 3854 | 
| 3859 | 3855 | 
| 3860 void CompareICStub::GenerateMiss(MacroAssembler* masm) { | 3856 void CompareICStub::GenerateMiss(MacroAssembler* masm) { | 
| 3861   { | 3857   { | 
| 3862     // Call the runtime system in a fresh internal frame. | 3858     // Call the runtime system in a fresh internal frame. | 
| 3863     ExternalReference miss = |  | 
| 3864         ExternalReference(IC_Utility(IC::kCompareIC_Miss), isolate()); |  | 
| 3865 |  | 
| 3866     FrameScope scope(masm, StackFrame::INTERNAL); | 3859     FrameScope scope(masm, StackFrame::INTERNAL); | 
| 3867     __ Push(rdx); | 3860     __ Push(rdx); | 
| 3868     __ Push(rax); | 3861     __ Push(rax); | 
| 3869     __ Push(rdx); | 3862     __ Push(rdx); | 
| 3870     __ Push(rax); | 3863     __ Push(rax); | 
| 3871     __ Push(Smi::FromInt(op())); | 3864     __ Push(Smi::FromInt(op())); | 
| 3872     __ CallExternalReference(miss, 3); | 3865     __ CallRuntime(Runtime::kCompareIC_Miss, 3); | 
| 3873 | 3866 | 
| 3874     // Compute the entry point of the rewritten stub. | 3867     // Compute the entry point of the rewritten stub. | 
| 3875     __ leap(rdi, FieldOperand(rax, Code::kHeaderSize)); | 3868     __ leap(rdi, FieldOperand(rax, Code::kHeaderSize)); | 
| 3876     __ Pop(rax); | 3869     __ Pop(rax); | 
| 3877     __ Pop(rdx); | 3870     __ Pop(rdx); | 
| 3878   } | 3871   } | 
| 3879 | 3872 | 
| 3880   // Do a tail call to the rewritten stub. | 3873   // Do a tail call to the rewritten stub. | 
| 3881   __ jmp(rdi); | 3874   __ jmp(rdi); | 
| 3882 } | 3875 } | 
| (...skipping 1549 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5432                            kStackSpace, nullptr, return_value_operand, NULL); | 5425                            kStackSpace, nullptr, return_value_operand, NULL); | 
| 5433 } | 5426 } | 
| 5434 | 5427 | 
| 5435 | 5428 | 
| 5436 #undef __ | 5429 #undef __ | 
| 5437 | 5430 | 
| 5438 }  // namespace internal | 5431 }  // namespace internal | 
| 5439 }  // namespace v8 | 5432 }  // namespace v8 | 
| 5440 | 5433 | 
| 5441 #endif  // V8_TARGET_ARCH_X64 | 5434 #endif  // V8_TARGET_ARCH_X64 | 
| OLD | NEW | 
|---|