OLD | NEW |
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 900 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
911 __ push(rcx); // transition map | 911 __ push(rcx); // transition map |
912 __ push(rax); // value | 912 __ push(rax); // value |
913 __ push(rbx); // return address | 913 __ push(rbx); // return address |
914 | 914 |
915 // Perform tail call to the entry. | 915 // Perform tail call to the entry. |
916 __ TailCallRuntime( | 916 __ TailCallRuntime( |
917 ExternalReference(IC_Utility(kSharedStoreIC_ExtendStorage)), 3); | 917 ExternalReference(IC_Utility(kSharedStoreIC_ExtendStorage)), 3); |
918 } | 918 } |
919 | 919 |
920 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { | 920 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { |
| 921 // ----------- S t a t e ------------- |
| 922 // -- rax : value |
| 923 // -- rcx : name |
| 924 // -- rsp[0] : return address |
| 925 // -- rsp[8] : receiver |
| 926 // ----------------------------------- |
| 927 |
| 928 // Get the receiver from the stack and probe the stub cache. |
| 929 __ movq(rdx, Operand(rsp, kPointerSize)); |
| 930 Code::Flags flags = Code::ComputeFlags(Code::STORE_IC, |
| 931 NOT_IN_LOOP, |
| 932 MONOMORPHIC); |
| 933 StubCache::GenerateProbe(masm, flags, rdx, rcx, rbx, no_reg); |
| 934 |
| 935 // Cache miss: Jump to runtime. |
921 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss))); | 936 Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss))); |
922 } | 937 } |
923 | 938 |
924 | 939 |
925 #undef __ | 940 #undef __ |
926 | 941 |
927 | 942 |
928 } } // namespace v8::internal | 943 } } // namespace v8::internal |
OLD | NEW |