OLD | NEW |
1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 FrameElement source = elements_[i]; | 301 FrameElement source = elements_[i]; |
302 FrameElement target = expected->elements_[i]; | 302 FrameElement target = expected->elements_[i]; |
303 if (source.is_register() && target.is_register()) { | 303 if (source.is_register() && target.is_register()) { |
304 if (target.reg().is(source.reg())) { | 304 if (target.reg().is(source.reg())) { |
305 if (target.is_synced() && !source.is_synced()) { | 305 if (target.is_synced() && !source.is_synced()) { |
306 __ mov(Operand(ebp, fp_relative(i)), source.reg()); | 306 __ mov(Operand(ebp, fp_relative(i)), source.reg()); |
307 } | 307 } |
308 elements_[i] = target; | 308 elements_[i] = target; |
309 } else { | 309 } else { |
310 // We need to move source to target. | 310 // We need to move source to target. |
311 if (frame_registers_.is_used(target.reg())) { | 311 if (is_used(target.reg())) { |
312 // The move is blocked because the target contains valid data. | 312 // The move is blocked because the target contains valid data. |
313 // If we are stuck with only cycles remaining, then we spill source. | 313 // If we are stuck with only cycles remaining, then we spill source. |
314 // Otherwise, we just need more iterations. | 314 // Otherwise, we just need more iterations. |
315 if (should_break_cycles) { | 315 if (should_break_cycles) { |
316 SpillElementAt(i); | 316 SpillElementAt(i); |
317 should_break_cycles = false; | 317 should_break_cycles = false; |
318 } else { // Record a blocked move. | 318 } else { // Record a blocked move. |
319 if (!any_moves_blocked) { | 319 if (!any_moves_blocked) { |
320 first_move_blocked = i; | 320 first_move_blocked = i; |
321 } | 321 } |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 ASSERT(stack_pointer_ == elements_.length() - 1); | 951 ASSERT(stack_pointer_ == elements_.length() - 1); |
952 elements_.Add(FrameElement::MemoryElement()); | 952 elements_.Add(FrameElement::MemoryElement()); |
953 stack_pointer_++; | 953 stack_pointer_++; |
954 __ push(immediate); | 954 __ push(immediate); |
955 } | 955 } |
956 | 956 |
957 | 957 |
958 #undef __ | 958 #undef __ |
959 | 959 |
960 } } // namespace v8::internal | 960 } } // namespace v8::internal |
OLD | NEW |