Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: src/crankshaft/ia32/lithium-ia32.cc

Issue 1731273003: [crankshaft] [ia32] Remove dynamic frame alignment optimization. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/crankshaft/ia32/lithium-codegen-ia32.cc ('k') | src/frames.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/crankshaft/ia32/lithium-ia32.h" 5 #include "src/crankshaft/ia32/lithium-ia32.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #if V8_TARGET_ARCH_IA32 9 #if V8_TARGET_ARCH_IA32
10 10
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 stream->Add(" %p -> %p", *original_map(), *transitioned_map()); 413 stream->Add(" %p -> %p", *original_map(), *transitioned_map());
414 } 414 }
415 415
416 416
417 LPlatformChunk* LChunkBuilder::Build() { 417 LPlatformChunk* LChunkBuilder::Build() {
418 DCHECK(is_unused()); 418 DCHECK(is_unused());
419 chunk_ = new(zone()) LPlatformChunk(info(), graph()); 419 chunk_ = new(zone()) LPlatformChunk(info(), graph());
420 LPhase phase("L_Building chunk", chunk_); 420 LPhase phase("L_Building chunk", chunk_);
421 status_ = BUILDING; 421 status_ = BUILDING;
422 422
423 // Reserve the first spill slot for the state of dynamic alignment.
424 if (info()->IsOptimizing()) {
425 int alignment_state_index = chunk_->GetNextSpillIndex(GENERAL_REGISTERS);
426 DCHECK_EQ(alignment_state_index, 4);
427 USE(alignment_state_index);
428 }
429
430 // If compiling for OSR, reserve space for the unoptimized frame, 423 // If compiling for OSR, reserve space for the unoptimized frame,
431 // which will be subsumed into this frame. 424 // which will be subsumed into this frame.
432 if (graph()->has_osr()) { 425 if (graph()->has_osr()) {
433 for (int i = graph()->osr()->UnoptimizedFrameSlots(); i > 0; i--) { 426 for (int i = graph()->osr()->UnoptimizedFrameSlots(); i > 0; i--) {
434 chunk_->GetNextSpillIndex(GENERAL_REGISTERS); 427 chunk_->GetNextSpillIndex(GENERAL_REGISTERS);
435 } 428 }
436 } 429 }
437 430
438 const ZoneList<HBasicBlock*>* blocks = graph()->blocks(); 431 const ZoneList<HBasicBlock*>* blocks = graph()->blocks();
439 for (int i = 0; i < blocks->length(); i++) { 432 for (int i = 0; i < blocks->length(); i++) {
(...skipping 2030 matching lines...) Expand 10 before | Expand all | Expand 10 after
2470 int env_index = instr->index(); 2463 int env_index = instr->index();
2471 int spill_index = 0; 2464 int spill_index = 0;
2472 if (instr->environment()->is_parameter_index(env_index)) { 2465 if (instr->environment()->is_parameter_index(env_index)) {
2473 spill_index = chunk()->GetParameterStackSlot(env_index); 2466 spill_index = chunk()->GetParameterStackSlot(env_index);
2474 } else { 2467 } else {
2475 spill_index = env_index - instr->environment()->first_local_index(); 2468 spill_index = env_index - instr->environment()->first_local_index();
2476 if (spill_index > LUnallocated::kMaxFixedSlotIndex) { 2469 if (spill_index > LUnallocated::kMaxFixedSlotIndex) {
2477 Retry(kNotEnoughSpillSlotsForOsr); 2470 Retry(kNotEnoughSpillSlotsForOsr);
2478 spill_index = 0; 2471 spill_index = 0;
2479 } 2472 }
2480 if (spill_index == 0) {
2481 // The dynamic frame alignment state overwrites the first local.
2482 // The first local is saved at the end of the unoptimized frame.
2483 spill_index = graph()->osr()->UnoptimizedFrameSlots();
2484 }
2485 spill_index += StandardFrameConstants::kFixedSlotCount; 2473 spill_index += StandardFrameConstants::kFixedSlotCount;
2486 } 2474 }
2487 return DefineAsSpilled(new(zone()) LUnknownOSRValue, spill_index); 2475 return DefineAsSpilled(new(zone()) LUnknownOSRValue, spill_index);
2488 } 2476 }
2489 2477
2490 2478
2491 LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) { 2479 LInstruction* LChunkBuilder::DoArgumentsObject(HArgumentsObject* instr) {
2492 // There are no real uses of the arguments object. 2480 // There are no real uses of the arguments object.
2493 // arguments.length and element access are supported directly on 2481 // arguments.length and element access are supported directly on
2494 // stack arguments, and any real arguments object use causes a bailout. 2482 // stack arguments, and any real arguments object use causes a bailout.
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
2634 LInstruction* LChunkBuilder::DoStoreFrameContext(HStoreFrameContext* instr) { 2622 LInstruction* LChunkBuilder::DoStoreFrameContext(HStoreFrameContext* instr) {
2635 LOperand* context = UseRegisterAtStart(instr->context()); 2623 LOperand* context = UseRegisterAtStart(instr->context());
2636 return new(zone()) LStoreFrameContext(context); 2624 return new(zone()) LStoreFrameContext(context);
2637 } 2625 }
2638 2626
2639 2627
2640 } // namespace internal 2628 } // namespace internal
2641 } // namespace v8 2629 } // namespace v8
2642 2630
2643 #endif // V8_TARGET_ARCH_IA32 2631 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/crankshaft/ia32/lithium-codegen-ia32.cc ('k') | src/frames.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698