| Index: src/compiler/register-allocator.cc
|
| diff --git a/src/compiler/register-allocator.cc b/src/compiler/register-allocator.cc
|
| index 23a7df6e9c0b839654a85aab18e455466e555c85..0069df8834b1096ee9ab980693298efd97fc4ea2 100644
|
| --- a/src/compiler/register-allocator.cc
|
| +++ b/src/compiler/register-allocator.cc
|
| @@ -5,6 +5,7 @@
|
| #include "src/compiler/linkage.h"
|
| #include "src/compiler/pipeline-statistics.h"
|
| #include "src/compiler/register-allocator.h"
|
| +#include "src/compiler/register-allocator-verifier.h"
|
| #include "src/string-stream.h"
|
|
|
| namespace v8 {
|
| @@ -1116,7 +1117,16 @@ void RegisterAllocator::ResolvePhis(const InstructionBlock* block) {
|
| }
|
|
|
|
|
| -bool RegisterAllocator::Allocate(PipelineStatistics* stats) {
|
| +bool RegisterAllocator::Allocate(PipelineStatistics* stats,
|
| + VerificationType verification_type) {
|
| + SmartPointer<Zone> verifier_zone;
|
| + RegisterAllocatorVerifier* verifier = NULL;
|
| + if (verification_type == kVerifyAssignment) {
|
| + // Don't track usage for this zone in compiler stats.
|
| + verifier_zone.Reset(new Zone(local_zone()->isolate()));
|
| + verifier = new (verifier_zone.get())
|
| + RegisterAllocatorVerifier(verifier_zone.get(), code());
|
| + }
|
| assigned_registers_ = new (code_zone())
|
| BitVector(config()->num_general_registers(), code_zone());
|
| assigned_double_registers_ = new (code_zone())
|
| @@ -1158,6 +1168,9 @@ bool RegisterAllocator::Allocate(PipelineStatistics* stats) {
|
| }
|
| frame()->SetAllocatedRegisters(assigned_registers_);
|
| frame()->SetAllocatedDoubleRegisters(assigned_double_registers_);
|
| + if (verifier != NULL) {
|
| + verifier->VerifyAssignment();
|
| + }
|
| return true;
|
| }
|
|
|
|
|