OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 783 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
794 // ----------- S t a t e ------------- | 794 // ----------- S t a t e ------------- |
795 // -- eax : value | 795 // -- eax : value |
796 // -- ecx : key | 796 // -- ecx : key |
797 // -- edx : receiver | 797 // -- edx : receiver |
798 // -- esp[0] : return address | 798 // -- esp[0] : return address |
799 // ----------------------------------- | 799 // ----------------------------------- |
800 Label slow, notin; | 800 Label slow, notin; |
801 Operand mapped_location = | 801 Operand mapped_location = |
802 GenerateMappedArgumentsLookup(masm, edx, ecx, ebx, edi, ¬in, &slow); | 802 GenerateMappedArgumentsLookup(masm, edx, ecx, ebx, edi, ¬in, &slow); |
803 __ mov(mapped_location, eax); | 803 __ mov(mapped_location, eax); |
| 804 __ lea(ecx, mapped_location); |
| 805 __ mov(edx, eax); |
| 806 __ RecordWrite(ebx, ecx, edx); |
804 __ Ret(); | 807 __ Ret(); |
805 __ bind(¬in); | 808 __ bind(¬in); |
806 // The unmapped lookup expects that the parameter map is in ebx. | 809 // The unmapped lookup expects that the parameter map is in ebx. |
807 Operand unmapped_location = | 810 Operand unmapped_location = |
808 GenerateUnmappedArgumentsLookup(masm, ecx, ebx, edi, &slow); | 811 GenerateUnmappedArgumentsLookup(masm, ecx, ebx, edi, &slow); |
809 __ mov(unmapped_location, eax); | 812 __ mov(unmapped_location, eax); |
| 813 __ lea(edi, unmapped_location); |
| 814 __ mov(edx, eax); |
| 815 __ RecordWrite(ebx, edi, edx); |
810 __ Ret(); | 816 __ Ret(); |
811 __ bind(&slow); | 817 __ bind(&slow); |
812 GenerateMiss(masm, false); | 818 GenerateMiss(masm, false); |
813 } | 819 } |
814 | 820 |
815 | 821 |
816 void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, | 822 void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, |
817 StrictModeFlag strict_mode) { | 823 StrictModeFlag strict_mode) { |
818 // ----------- S t a t e ------------- | 824 // ----------- S t a t e ------------- |
819 // -- eax : value | 825 // -- eax : value |
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1724 Condition cc = *jmp_address == Assembler::kJncShortOpcode | 1730 Condition cc = *jmp_address == Assembler::kJncShortOpcode |
1725 ? not_zero | 1731 ? not_zero |
1726 : zero; | 1732 : zero; |
1727 *jmp_address = static_cast<byte>(Assembler::kJccShortPrefix | cc); | 1733 *jmp_address = static_cast<byte>(Assembler::kJccShortPrefix | cc); |
1728 } | 1734 } |
1729 | 1735 |
1730 | 1736 |
1731 } } // namespace v8::internal | 1737 } } // namespace v8::internal |
1732 | 1738 |
1733 #endif // V8_TARGET_ARCH_IA32 | 1739 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |