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

Side by Side Diff: test/unittests/compiler/instruction-selector-unittest.cc

Issue 2546113002: [turbofan] Improve memory consumption for state values descriptors. (Closed)
Patch Set: Do not store optimized-out into instructions. Created 4 years 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/compiler/instruction-selector.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 "test/unittests/compiler/instruction-selector-unittest.h" 5 #include "test/unittests/compiler/instruction-selector-unittest.h"
6 6
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/compiler/compiler-source-position-table.h" 8 #include "src/compiler/compiler-source-position-table.h"
9 #include "src/compiler/graph.h" 9 #include "src/compiler/graph.h"
10 #include "src/compiler/schedule.h" 10 #include "src/compiler/schedule.h"
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 EXPECT_EQ(OutputFrameStateCombine::kPushOutput, 470 EXPECT_EQ(OutputFrameStateCombine::kPushOutput,
471 desc_before->state_combine().kind()); 471 desc_before->state_combine().kind());
472 EXPECT_EQ(1u, desc_before->parameters_count()); 472 EXPECT_EQ(1u, desc_before->parameters_count());
473 EXPECT_EQ(1u, desc_before->locals_count()); 473 EXPECT_EQ(1u, desc_before->locals_count());
474 EXPECT_EQ(1u, desc_before->stack_count()); 474 EXPECT_EQ(1u, desc_before->stack_count());
475 EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(3))); 475 EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(3)));
476 EXPECT_EQ(0, s.ToInt32(call_instr->InputAt(4))); // This should be a context. 476 EXPECT_EQ(0, s.ToInt32(call_instr->InputAt(4))); // This should be a context.
477 // We inserted 0 here. 477 // We inserted 0 here.
478 EXPECT_EQ(0.5, s.ToFloat64(call_instr->InputAt(5))); 478 EXPECT_EQ(0.5, s.ToFloat64(call_instr->InputAt(5)));
479 EXPECT_TRUE(s.ToHeapObject(call_instr->InputAt(6))->IsUndefined(isolate())); 479 EXPECT_TRUE(s.ToHeapObject(call_instr->InputAt(6))->IsUndefined(isolate()));
480 EXPECT_EQ(MachineType::AnyTagged(),
481 desc_before->GetType(0)); // function is always
482 // tagged/any.
483 EXPECT_EQ(MachineType::Int32(), desc_before->GetType(1));
484 EXPECT_EQ(MachineType::AnyTagged(),
485 desc_before->GetType(2)); // context is always
486 // tagged/any.
487 EXPECT_EQ(MachineType::Float64(), desc_before->GetType(3));
488 EXPECT_EQ(MachineType::AnyTagged(), desc_before->GetType(4));
489 480
490 // Function. 481 // Function.
491 EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(7))); 482 EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(7)));
492 // Context. 483 // Context.
493 EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(8))); 484 EXPECT_EQ(s.ToVreg(context), s.ToVreg(call_instr->InputAt(8)));
494 485
495 EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); 486 EXPECT_EQ(kArchRet, s[index++]->arch_opcode());
496 487
497 EXPECT_EQ(index, s.size()); 488 EXPECT_EQ(index, s.size());
498 } 489 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 // Deoptimization id. 569 // Deoptimization id.
579 int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(1)); 570 int32_t deopt_id_before = s.ToInt32(call_instr->InputAt(1));
580 FrameStateDescriptor* desc_before = 571 FrameStateDescriptor* desc_before =
581 s.GetFrameStateDescriptor(deopt_id_before); 572 s.GetFrameStateDescriptor(deopt_id_before);
582 FrameStateDescriptor* desc_before_outer = desc_before->outer_state(); 573 FrameStateDescriptor* desc_before_outer = desc_before->outer_state();
583 EXPECT_EQ(bailout_id_before, desc_before->bailout_id()); 574 EXPECT_EQ(bailout_id_before, desc_before->bailout_id());
584 EXPECT_EQ(1u, desc_before_outer->parameters_count()); 575 EXPECT_EQ(1u, desc_before_outer->parameters_count());
585 EXPECT_EQ(1u, desc_before_outer->locals_count()); 576 EXPECT_EQ(1u, desc_before_outer->locals_count());
586 EXPECT_EQ(1u, desc_before_outer->stack_count()); 577 EXPECT_EQ(1u, desc_before_outer->stack_count());
587 // Values from parent environment. 578 // Values from parent environment.
588 EXPECT_EQ(MachineType::AnyTagged(), desc_before->GetType(0));
589 EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(3))); 579 EXPECT_EQ(63, s.ToInt32(call_instr->InputAt(3)));
590 EXPECT_EQ(MachineType::Int32(), desc_before_outer->GetType(1));
591 // Context: 580 // Context:
592 EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(4))); 581 EXPECT_EQ(66, s.ToInt32(call_instr->InputAt(4)));
593 EXPECT_EQ(MachineType::AnyTagged(), desc_before_outer->GetType(2));
594 EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(5))); 582 EXPECT_EQ(64, s.ToInt32(call_instr->InputAt(5)));
595 EXPECT_EQ(MachineType::Int32(), desc_before_outer->GetType(3));
596 EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(6))); 583 EXPECT_EQ(65, s.ToInt32(call_instr->InputAt(6)));
597 EXPECT_EQ(MachineType::Int32(), desc_before_outer->GetType(4));
598 // Values from the nested frame. 584 // Values from the nested frame.
599 EXPECT_EQ(1u, desc_before->parameters_count()); 585 EXPECT_EQ(1u, desc_before->parameters_count());
600 EXPECT_EQ(1u, desc_before->locals_count()); 586 EXPECT_EQ(1u, desc_before->locals_count());
601 EXPECT_EQ(2u, desc_before->stack_count()); 587 EXPECT_EQ(2u, desc_before->stack_count());
602 EXPECT_EQ(MachineType::AnyTagged(), desc_before->GetType(0));
603 EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(8))); 588 EXPECT_EQ(43, s.ToInt32(call_instr->InputAt(8)));
604 EXPECT_EQ(MachineType::Int32(), desc_before->GetType(1));
605 EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(9))); 589 EXPECT_EQ(46, s.ToInt32(call_instr->InputAt(9)));
606 EXPECT_EQ(MachineType::AnyTagged(), desc_before->GetType(2));
607 EXPECT_EQ(0.25, s.ToFloat64(call_instr->InputAt(10))); 590 EXPECT_EQ(0.25, s.ToFloat64(call_instr->InputAt(10)));
608 EXPECT_EQ(MachineType::Float64(), desc_before->GetType(3));
609 EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(11))); 591 EXPECT_EQ(44, s.ToInt32(call_instr->InputAt(11)));
610 EXPECT_EQ(MachineType::Int32(), desc_before->GetType(4));
611 EXPECT_EQ(45, s.ToInt32(call_instr->InputAt(12))); 592 EXPECT_EQ(45, s.ToInt32(call_instr->InputAt(12)));
612 EXPECT_EQ(MachineType::Int32(), desc_before->GetType(5));
613 593
614 // Function. 594 // Function.
615 EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(13))); 595 EXPECT_EQ(s.ToVreg(function_node), s.ToVreg(call_instr->InputAt(13)));
616 // Context. 596 // Context.
617 EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(14))); 597 EXPECT_EQ(s.ToVreg(context2), s.ToVreg(call_instr->InputAt(14)));
618 // Continuation. 598 // Continuation.
619 599
620 EXPECT_EQ(kArchRet, s[index++]->arch_opcode()); 600 EXPECT_EQ(kArchRet, s[index++]->arch_opcode());
621 EXPECT_EQ(index, s.size()); 601 EXPECT_EQ(index, s.size());
622 } 602 }
623 603
624 } // namespace compiler 604 } // namespace compiler
625 } // namespace internal 605 } // namespace internal
626 } // namespace v8 606 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698