OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 3907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3918 __ cmpq(rcx, rdx); | 3918 __ cmpq(rcx, rdx); |
3919 end_del_check.Branch(equal); | 3919 end_del_check.Branch(equal); |
3920 | 3920 |
3921 // Convert the entry to a string (or null if it isn't a property anymore). | 3921 // Convert the entry to a string (or null if it isn't a property anymore). |
3922 frame_->EmitPush(frame_->ElementAt(4)); // push enumerable | 3922 frame_->EmitPush(frame_->ElementAt(4)); // push enumerable |
3923 frame_->EmitPush(rbx); // push entry | 3923 frame_->EmitPush(rbx); // push entry |
3924 frame_->InvokeBuiltin(Builtins::FILTER_KEY, CALL_FUNCTION, 2); | 3924 frame_->InvokeBuiltin(Builtins::FILTER_KEY, CALL_FUNCTION, 2); |
3925 __ movq(rbx, rax); | 3925 __ movq(rbx, rax); |
3926 | 3926 |
3927 // If the property has been removed while iterating, we just skip it. | 3927 // If the property has been removed while iterating, we just skip it. |
3928 __ CompareRoot(rbx, Heap::kNullValueRootIndex); | 3928 __ SmiCompare(rbx, Smi::FromInt(0)); |
3929 node->continue_target()->Branch(equal); | 3929 node->continue_target()->Branch(equal); |
3930 | 3930 |
3931 end_del_check.Bind(); | 3931 end_del_check.Bind(); |
3932 // Store the entry in the 'each' expression and take another spin in the | 3932 // Store the entry in the 'each' expression and take another spin in the |
3933 // loop. rdx: i'th entry of the enum cache (or string there of) | 3933 // loop. rdx: i'th entry of the enum cache (or string there of) |
3934 frame_->EmitPush(rbx); | 3934 frame_->EmitPush(rbx); |
3935 { Reference each(this, node->each()); | 3935 { Reference each(this, node->each()); |
3936 // Loading a reference may leave the frame in an unspilled state. | 3936 // Loading a reference may leave the frame in an unspilled state. |
3937 frame_->SpillAll(); | 3937 frame_->SpillAll(); |
3938 if (!each.is_illegal()) { | 3938 if (!each.is_illegal()) { |
(...skipping 8682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12621 #undef __ | 12621 #undef __ |
12622 | 12622 |
12623 void RecordWriteStub::Generate(MacroAssembler* masm) { | 12623 void RecordWriteStub::Generate(MacroAssembler* masm) { |
12624 masm->RecordWriteHelper(object_, addr_, scratch_); | 12624 masm->RecordWriteHelper(object_, addr_, scratch_); |
12625 masm->ret(0); | 12625 masm->ret(0); |
12626 } | 12626 } |
12627 | 12627 |
12628 } } // namespace v8::internal | 12628 } } // namespace v8::internal |
12629 | 12629 |
12630 #endif // V8_TARGET_ARCH_X64 | 12630 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |