| 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 4592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4603 __ cmp(ecx, Operand(edx)); | 4603 __ cmp(ecx, Operand(edx)); |
| 4604 end_del_check.Branch(equal); | 4604 end_del_check.Branch(equal); |
| 4605 | 4605 |
| 4606 // Convert the entry to a string (or null if it isn't a property anymore). | 4606 // Convert the entry to a string (or null if it isn't a property anymore). |
| 4607 frame_->EmitPush(frame_->ElementAt(4)); // push enumerable | 4607 frame_->EmitPush(frame_->ElementAt(4)); // push enumerable |
| 4608 frame_->EmitPush(ebx); // push entry | 4608 frame_->EmitPush(ebx); // push entry |
| 4609 frame_->InvokeBuiltin(Builtins::FILTER_KEY, CALL_FUNCTION, 2); | 4609 frame_->InvokeBuiltin(Builtins::FILTER_KEY, CALL_FUNCTION, 2); |
| 4610 __ mov(ebx, Operand(eax)); | 4610 __ mov(ebx, Operand(eax)); |
| 4611 | 4611 |
| 4612 // If the property has been removed while iterating, we just skip it. | 4612 // If the property has been removed while iterating, we just skip it. |
| 4613 __ cmp(ebx, Factory::null_value()); | 4613 __ test(ebx, Operand(ebx)); |
| 4614 node->continue_target()->Branch(equal); | 4614 node->continue_target()->Branch(equal); |
| 4615 | 4615 |
| 4616 end_del_check.Bind(); | 4616 end_del_check.Bind(); |
| 4617 // Store the entry in the 'each' expression and take another spin in the | 4617 // Store the entry in the 'each' expression and take another spin in the |
| 4618 // loop. edx: i'th entry of the enum cache (or string there of) | 4618 // loop. edx: i'th entry of the enum cache (or string there of) |
| 4619 frame_->EmitPush(ebx); | 4619 frame_->EmitPush(ebx); |
| 4620 { Reference each(this, node->each()); | 4620 { Reference each(this, node->each()); |
| 4621 // Loading a reference may leave the frame in an unspilled state. | 4621 // Loading a reference may leave the frame in an unspilled state. |
| 4622 frame_->SpillAll(); | 4622 frame_->SpillAll(); |
| 4623 if (!each.is_illegal()) { | 4623 if (!each.is_illegal()) { |
| (...skipping 9640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14264 masm.GetCode(&desc); | 14264 masm.GetCode(&desc); |
| 14265 // Call the function from C++. | 14265 // Call the function from C++. |
| 14266 return FUNCTION_CAST<MemCopyFunction>(buffer); | 14266 return FUNCTION_CAST<MemCopyFunction>(buffer); |
| 14267 } | 14267 } |
| 14268 | 14268 |
| 14269 #undef __ | 14269 #undef __ |
| 14270 | 14270 |
| 14271 } } // namespace v8::internal | 14271 } } // namespace v8::internal |
| 14272 | 14272 |
| 14273 #endif // V8_TARGET_ARCH_IA32 | 14273 #endif // V8_TARGET_ARCH_IA32 |
| OLD | NEW |