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

Side by Side Diff: src/x64/ic-x64.cc

Issue 159404: X64: Fixed bug de-tagging of smis in multiplication code. (Closed)
Patch Set: Created 11 years, 4 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
« no previous file with comments | « src/x64/codegen-x64.cc ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 __ movq(rax, Operand(rcx, rax, times_pointer_size, 295 __ movq(rax, Operand(rcx, rax, times_pointer_size,
296 FixedArray::kHeaderSize - kHeapObjectTag)); 296 FixedArray::kHeaderSize - kHeapObjectTag));
297 __ Cmp(rax, Factory::the_hole_value()); 297 __ Cmp(rax, Factory::the_hole_value());
298 // In case the loaded value is the_hole we have to consult GetProperty 298 // In case the loaded value is the_hole we have to consult GetProperty
299 // to ensure the prototype chain is searched. 299 // to ensure the prototype chain is searched.
300 __ j(equal, &slow); 300 __ j(equal, &slow);
301 __ IncrementCounter(&Counters::keyed_load_generic_smi, 1); 301 __ IncrementCounter(&Counters::keyed_load_generic_smi, 1);
302 __ ret(0); 302 __ ret(0);
303 } 303 }
304 304
305
305 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { 306 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
306 // ----------- S t a t e ------------- 307 // ----------- S t a t e -------------
307 // -- rsp[0] : return address 308 // -- rsp[0] : return address
308 // -- rsp[8] : name 309 // -- rsp[8] : name
309 // -- rsp[16] : receiver 310 // -- rsp[16] : receiver
310 // ----------------------------------- 311 // -----------------------------------
311 312
312 Generate(masm, ExternalReference(Runtime::kKeyedGetProperty)); 313 Generate(masm, ExternalReference(Runtime::kKeyedGetProperty));
313 } 314 }
314 315
316
315 bool KeyedLoadIC::PatchInlinedLoad(Address address, Object* map) { 317 bool KeyedLoadIC::PatchInlinedLoad(Address address, Object* map) {
316 // Never patch the map in the map check, so the check always fails. 318 // Never patch the map in the map check, so the check always fails.
317 return false; 319 return false;
318 } 320 }
319 321
322
320 bool KeyedStoreIC::PatchInlinedStore(Address address, Object* map) { 323 bool KeyedStoreIC::PatchInlinedStore(Address address, Object* map) {
321 // Never patch the map in the map check, so the check always fails. 324 // Never patch the map in the map check, so the check always fails.
322 return false; 325 return false;
323 } 326 }
324 327
325 Object* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) {
326 UNIMPLEMENTED();
327 return NULL;
328 }
329
330 Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
331 JSObject* object,
332 JSObject* holder,
333 AccessorInfo* callback) {
334 UNIMPLEMENTED();
335 return NULL;
336 }
337
338 Object* KeyedLoadStubCompiler::CompileLoadConstant(String* name,
339 JSObject* object,
340 JSObject* holder,
341 Object* callback) {
342 UNIMPLEMENTED();
343 return NULL;
344 }
345
346
347 Object* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) {
348 UNIMPLEMENTED();
349 return NULL;
350 }
351
352 Object* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* object,
353 JSObject* holder,
354 String* name) {
355 UNIMPLEMENTED();
356 return NULL;
357 }
358
359 Object* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) {
360 UNIMPLEMENTED();
361 return NULL;
362 }
363 328
364 void KeyedStoreIC::Generate(MacroAssembler* masm, ExternalReference const& f) { 329 void KeyedStoreIC::Generate(MacroAssembler* masm, ExternalReference const& f) {
365 // ----------- S t a t e ------------- 330 // ----------- S t a t e -------------
366 // -- rax : value 331 // -- rax : value
367 // -- rsp[0] : return address 332 // -- rsp[0] : return address
368 // -- rsp[8] : key 333 // -- rsp[8] : key
369 // -- rsp[16] : receiver 334 // -- rsp[16] : receiver
370 // ----------------------------------- 335 // -----------------------------------
371 336
372 // Move the return address below the arguments. 337 // Move the return address below the arguments.
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 636
672 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { 637 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
673 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss))); 638 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss)));
674 } 639 }
675 640
676 641
677 #undef __ 642 #undef __
678 643
679 644
680 } } // namespace v8::internal 645 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/x64/codegen-x64.cc ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698