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

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

Issue 115744: This patch much improves our tracking of whether function is... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 7 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 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 // ----------------------------------- 204 // -----------------------------------
205 Label number, non_number, non_string, boolean, probe, miss; 205 Label number, non_number, non_string, boolean, probe, miss;
206 206
207 // Get the receiver of the function from the stack into r1. 207 // Get the receiver of the function from the stack into r1.
208 __ ldr(r1, MemOperand(sp, argc * kPointerSize)); 208 __ ldr(r1, MemOperand(sp, argc * kPointerSize));
209 // Get the name of the function from the stack; 1 ~ receiver. 209 // Get the name of the function from the stack; 1 ~ receiver.
210 __ ldr(r2, MemOperand(sp, (argc + 1) * kPointerSize)); 210 __ ldr(r2, MemOperand(sp, (argc + 1) * kPointerSize));
211 211
212 // Probe the stub cache. 212 // Probe the stub cache.
213 Code::Flags flags = 213 Code::Flags flags =
214 Code::ComputeFlags(Code::CALL_IC, MONOMORPHIC, NORMAL, argc); 214 Code::ComputeFlags(Code::CALL_IC, NOT_IN_LOOP, MONOMORPHIC, NORMAL, argc);
215 StubCache::GenerateProbe(masm, flags, r1, r2, r3); 215 StubCache::GenerateProbe(masm, flags, r1, r2, r3);
216 216
217 // If the stub cache probing failed, the receiver might be a value. 217 // If the stub cache probing failed, the receiver might be a value.
218 // For value objects, we use the map of the prototype objects for 218 // For value objects, we use the map of the prototype objects for
219 // the corresponding JSValue for the cache and that is what we need 219 // the corresponding JSValue for the cache and that is what we need
220 // to probe. 220 // to probe.
221 // 221 //
222 // Check for number. 222 // Check for number.
223 __ tst(r1, Operand(kSmiTagMask)); 223 __ tst(r1, Operand(kSmiTagMask));
224 __ b(eq, &number); 224 __ b(eq, &number);
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 415
416 void LoadIC::GenerateMegamorphic(MacroAssembler* masm) { 416 void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
417 // ----------- S t a t e ------------- 417 // ----------- S t a t e -------------
418 // -- r2 : name 418 // -- r2 : name
419 // -- lr : return address 419 // -- lr : return address
420 // -- [sp] : receiver 420 // -- [sp] : receiver
421 // ----------------------------------- 421 // -----------------------------------
422 422
423 __ ldr(r0, MemOperand(sp, 0)); 423 __ ldr(r0, MemOperand(sp, 0));
424 // Probe the stub cache. 424 // Probe the stub cache.
425 Code::Flags flags = Code::ComputeFlags(Code::LOAD_IC, MONOMORPHIC); 425 Code::Flags flags = Code::ComputeFlags(Code::LOAD_IC, NOT_IN_LOOP, MONOMORPHIC );
Kevin Millikin (Chromium) 2009/05/25 11:00:42 Long line?
426 StubCache::GenerateProbe(masm, flags, r0, r2, r3); 426 StubCache::GenerateProbe(masm, flags, r0, r2, r3);
427 427
428 // Cache miss: Jump to runtime. 428 // Cache miss: Jump to runtime.
429 Generate(masm, ExternalReference(IC_Utility(kLoadIC_Miss))); 429 Generate(masm, ExternalReference(IC_Utility(kLoadIC_Miss)));
430 } 430 }
431 431
432 432
433 void LoadIC::GenerateNormal(MacroAssembler* masm) { 433 void LoadIC::GenerateNormal(MacroAssembler* masm) {
434 // ----------- S t a t e ------------- 434 // ----------- S t a t e -------------
435 // -- r2 : name 435 // -- r2 : name
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { 748 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
749 // ----------- S t a t e ------------- 749 // ----------- S t a t e -------------
750 // -- r0 : value 750 // -- r0 : value
751 // -- r2 : name 751 // -- r2 : name
752 // -- lr : return address 752 // -- lr : return address
753 // -- [sp] : receiver 753 // -- [sp] : receiver
754 // ----------------------------------- 754 // -----------------------------------
755 755
756 // Get the receiver from the stack and probe the stub cache. 756 // Get the receiver from the stack and probe the stub cache.
757 __ ldr(r1, MemOperand(sp)); 757 __ ldr(r1, MemOperand(sp));
758 Code::Flags flags = Code::ComputeFlags(Code::STORE_IC, MONOMORPHIC); 758 Code::Flags flags = Code::ComputeFlags(Code::STORE_IC, NOT_IN_LOOP, MONOMORPHI C);
Kevin Millikin (Chromium) 2009/05/25 11:00:42 Long line?
759 StubCache::GenerateProbe(masm, flags, r1, r2, r3); 759 StubCache::GenerateProbe(masm, flags, r1, r2, r3);
760 760
761 // Cache miss: Jump to runtime. 761 // Cache miss: Jump to runtime.
762 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss))); 762 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss)));
763 } 763 }
764 764
765 765
766 void StoreIC::GenerateExtendStorage(MacroAssembler* masm) { 766 void StoreIC::GenerateExtendStorage(MacroAssembler* masm) {
767 // ----------- S t a t e ------------- 767 // ----------- S t a t e -------------
768 // -- r0 : value 768 // -- r0 : value
(...skipping 24 matching lines...) Expand all
793 793
794 // Perform tail call to the entry. 794 // Perform tail call to the entry.
795 __ TailCallRuntime(f, 3); 795 __ TailCallRuntime(f, 3);
796 } 796 }
797 797
798 798
799 #undef __ 799 #undef __
800 800
801 801
802 } } // namespace v8::internal 802 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698