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 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 stream->Add(" length "); | 345 stream->Add(" length "); |
346 length()->PrintTo(stream); | 346 length()->PrintTo(stream); |
347 | 347 |
348 stream->Add(" index "); | 348 stream->Add(" index "); |
349 index()->PrintTo(stream); | 349 index()->PrintTo(stream); |
350 } | 350 } |
351 | 351 |
352 | 352 |
353 int LChunk::GetNextSpillIndex(bool is_double) { | 353 int LChunk::GetNextSpillIndex(bool is_double) { |
354 // Skip a slot if for a double-width slot. | 354 // Skip a slot if for a double-width slot. |
355 if (is_double) spill_slot_count_++; | 355 if (is_double) { |
| 356 spill_slot_count_ |= 1; // Make it odd, so incrementing makes it even. |
| 357 spill_slot_count_++; |
| 358 num_double_slots_++; |
| 359 } |
356 return spill_slot_count_++; | 360 return spill_slot_count_++; |
357 } | 361 } |
358 | 362 |
359 | 363 |
360 LOperand* LChunk::GetNextSpillSlot(bool is_double) { | 364 LOperand* LChunk::GetNextSpillSlot(bool is_double) { |
361 int index = GetNextSpillIndex(is_double); | 365 int index = GetNextSpillIndex(is_double); |
362 if (is_double) { | 366 if (is_double) { |
363 return LDoubleStackSlot::Create(index); | 367 return LDoubleStackSlot::Create(index); |
364 } else { | 368 } else { |
365 return LStackSlot::Create(index); | 369 return LStackSlot::Create(index); |
(...skipping 1902 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2268 LOperand* key = UseOrConstantAtStart(instr->key()); | 2272 LOperand* key = UseOrConstantAtStart(instr->key()); |
2269 LOperand* object = UseOrConstantAtStart(instr->object()); | 2273 LOperand* object = UseOrConstantAtStart(instr->object()); |
2270 LIn* result = new LIn(context, key, object); | 2274 LIn* result = new LIn(context, key, object); |
2271 return MarkAsCall(DefineFixed(result, eax), instr); | 2275 return MarkAsCall(DefineFixed(result, eax), instr); |
2272 } | 2276 } |
2273 | 2277 |
2274 | 2278 |
2275 } } // namespace v8::internal | 2279 } } // namespace v8::internal |
2276 | 2280 |
2277 #endif // V8_TARGET_ARCH_IA32 | 2281 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |