Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: src/x64/code-stubs-x64.cc

Issue 418023002: CallIC customization stubs must accept that a vector slot is cleared. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« src/ia32/code-stubs-ia32.cc ('K') | « src/ia32/code-stubs-ia32.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 2237 matching lines...) Expand 10 before | Expand all | Expand 10 after
2248 ParameterCount actual(argc); 2248 ParameterCount actual(argc);
2249 2249
2250 EmitLoadTypeFeedbackVector(masm, rbx); 2250 EmitLoadTypeFeedbackVector(masm, rbx);
2251 __ SmiToInteger32(rdx, rdx); 2251 __ SmiToInteger32(rdx, rdx);
2252 2252
2253 __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, rcx); 2253 __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, rcx);
2254 __ cmpp(rdi, rcx); 2254 __ cmpp(rdi, rcx);
2255 __ j(not_equal, &miss); 2255 __ j(not_equal, &miss);
2256 2256
2257 __ movp(rax, Immediate(arg_count())); 2257 __ movp(rax, Immediate(arg_count()));
2258 __ movp(rbx, FieldOperand(rbx, rdx, times_pointer_size, 2258 __ movp(rcx, FieldOperand(rbx, rdx, times_pointer_size,
2259 FixedArray::kHeaderSize)); 2259 FixedArray::kHeaderSize));
2260 // Verify that ecx contains an AllocationSite
2261 Factory* factory = masm->isolate()->factory();
2262 __ Cmp(FieldOperand(rcx, 0), factory->allocation_site_map());
Toon Verwaest 2014/07/28 14:11:38 HeapObject::kMapOffset?
mvstanton 2014/07/28 16:02:50 Done.
2263 __ j(not_equal, &miss);
2260 2264
2261 // Verify that ecx contains an AllocationSite 2265 __ movp(rbx, rcx);
2262 __ AssertUndefinedOrAllocationSite(rbx);
2263 ArrayConstructorStub stub(masm->isolate(), arg_count()); 2266 ArrayConstructorStub stub(masm->isolate(), arg_count());
2264 __ TailCallStub(&stub); 2267 __ TailCallStub(&stub);
2265 2268
2266 __ bind(&miss); 2269 __ bind(&miss);
2267 GenerateMiss(masm, IC::kCallIC_Customization_Miss); 2270 GenerateMiss(masm, IC::kCallIC_Customization_Miss);
2268 2271
2269 // The slow case, we need this no matter what to complete a call after a miss. 2272 // The slow case, we need this no matter what to complete a call after a miss.
2270 CallFunctionNoFeedback(masm, 2273 CallFunctionNoFeedback(masm,
2271 arg_count(), 2274 arg_count(),
2272 true, 2275 true,
(...skipping 2649 matching lines...) Expand 10 before | Expand all | Expand 10 after
4922 return_value_operand, 4925 return_value_operand,
4923 NULL); 4926 NULL);
4924 } 4927 }
4925 4928
4926 4929
4927 #undef __ 4930 #undef __
4928 4931
4929 } } // namespace v8::internal 4932 } } // namespace v8::internal
4930 4933
4931 #endif // V8_TARGET_ARCH_X64 4934 #endif // V8_TARGET_ARCH_X64
OLDNEW
« src/ia32/code-stubs-ia32.cc ('K') | « src/ia32/code-stubs-ia32.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698