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

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

Issue 6441: - Added fast case for extending the JSObject properties storage.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 12 years, 2 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
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 __ pop(ebx); 662 __ pop(ebx);
663 __ push(ecx); 663 __ push(ecx);
664 __ push(eax); 664 __ push(eax);
665 __ push(ebx); 665 __ push(ebx);
666 666
667 // Perform tail call to the entry. 667 // Perform tail call to the entry.
668 __ TailCallRuntime(f, 2); 668 __ TailCallRuntime(f, 2);
669 } 669 }
670 670
671 671
672 // Defined in ic.cc.
673 Object* StoreIC_Miss(Arguments args);
674
675 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { 672 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
676 // ----------- S t a t e ------------- 673 // ----------- S t a t e -------------
677 // -- eax : value 674 // -- eax : value
678 // -- ecx : name 675 // -- ecx : name
679 // -- esp[0] : return address 676 // -- esp[0] : return address
680 // -- esp[4] : receiver 677 // -- esp[4] : receiver
681 // ----------------------------------- 678 // -----------------------------------
682 679
683 // Get the receiver from the stack and probe the stub cache. 680 // Get the receiver from the stack and probe the stub cache.
684 __ mov(edx, Operand(esp, 4)); 681 __ mov(edx, Operand(esp, 4));
685 Code::Flags flags = Code::ComputeFlags(Code::STORE_IC, MONOMORPHIC); 682 Code::Flags flags = Code::ComputeFlags(Code::STORE_IC, MONOMORPHIC);
686 StubCache::GenerateProbe(masm, flags, edx, ecx, ebx); 683 StubCache::GenerateProbe(masm, flags, edx, ecx, ebx);
687 684
688 // Cache miss: Jump to runtime. 685 // Cache miss: Jump to runtime.
689 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss))); 686 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss)));
690 } 687 }
691 688
692 689
690 void StoreIC::GenerateExtendStorage(MacroAssembler* masm) {
691 // ----------- S t a t e -------------
692 // -- eax : value
693 // -- ecx : transition map
694 // -- esp[0] : return address
695 // -- esp[4] : receiver
696 // -----------------------------------
697
698 // Move the return address below the arguments.
699 __ pop(ebx);
700 __ push(Operand(esp, 0));
701 __ push(ecx);
702 __ push(eax);
703 __ push(ebx);
704 // Perform tail call to the entry.
705 __ TailCallRuntime(ExternalReference(IC_Utility(kStoreIC_ExtendStorage)), 3);
706 }
707
708
693 void StoreIC::Generate(MacroAssembler* masm, const ExternalReference& f) { 709 void StoreIC::Generate(MacroAssembler* masm, const ExternalReference& f) {
694 // ----------- S t a t e ------------- 710 // ----------- S t a t e -------------
695 // -- eax : value 711 // -- eax : value
696 // -- ecx : name 712 // -- ecx : name
697 // -- esp[0] : return address 713 // -- esp[0] : return address
698 // -- esp[4] : receiver 714 // -- esp[4] : receiver
699 // ----------------------------------- 715 // -----------------------------------
700 716
701 // Move the return address below the arguments. 717 // Move the return address below the arguments.
702 __ pop(ebx); 718 __ pop(ebx);
(...skipping 27 matching lines...) Expand all
730 746
731 // Do tail-call to runtime routine. 747 // Do tail-call to runtime routine.
732 __ TailCallRuntime(f, 3); 748 __ TailCallRuntime(f, 3);
733 } 749 }
734 750
735 751
736 #undef __ 752 #undef __
737 753
738 754
739 } } // namespace v8::internal 755 } } // namespace v8::internal
OLDNEW
« src/ic.cc ('K') | « src/ic-arm.cc ('k') | src/stub-cache-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698