| OLD | NEW |
| 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/full-codegen/full-codegen.h" | 5 #include "src/full-codegen/full-codegen.h" |
| 6 | 6 |
| 7 #include "src/ast.h" | 7 #include "src/ast.h" |
| 8 #include "src/ast-numbering.h" | 8 #include "src/ast-numbering.h" |
| 9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 __ dd(length); | 84 __ dd(length); |
| 85 for (unsigned i = 0; i < length; ++i) { | 85 for (unsigned i = 0; i < length; ++i) { |
| 86 __ dd(back_edges_[i].id.ToInt()); | 86 __ dd(back_edges_[i].id.ToInt()); |
| 87 __ dd(back_edges_[i].pc); | 87 __ dd(back_edges_[i].pc); |
| 88 __ dd(back_edges_[i].loop_depth); | 88 __ dd(back_edges_[i].loop_depth); |
| 89 } | 89 } |
| 90 return offset; | 90 return offset; |
| 91 } | 91 } |
| 92 | 92 |
| 93 | 93 |
| 94 void FullCodeGenerator::EnsureSlotContainsAllocationSite( | |
| 95 FeedbackVectorSlot slot) { | |
| 96 Handle<TypeFeedbackVector> vector = FeedbackVector(); | |
| 97 if (!vector->Get(slot)->IsAllocationSite()) { | |
| 98 Handle<AllocationSite> allocation_site = | |
| 99 isolate()->factory()->NewAllocationSite(); | |
| 100 vector->Set(slot, *allocation_site); | |
| 101 } | |
| 102 } | |
| 103 | |
| 104 | |
| 105 void FullCodeGenerator::EnsureSlotContainsAllocationSite( | |
| 106 FeedbackVectorICSlot slot) { | |
| 107 Handle<TypeFeedbackVector> vector = FeedbackVector(); | |
| 108 if (!vector->Get(slot)->IsAllocationSite()) { | |
| 109 Handle<AllocationSite> allocation_site = | |
| 110 isolate()->factory()->NewAllocationSite(); | |
| 111 vector->Set(slot, *allocation_site); | |
| 112 } | |
| 113 } | |
| 114 | |
| 115 | |
| 116 void FullCodeGenerator::PopulateDeoptimizationData(Handle<Code> code) { | 94 void FullCodeGenerator::PopulateDeoptimizationData(Handle<Code> code) { |
| 117 // Fill in the deoptimization information. | 95 // Fill in the deoptimization information. |
| 118 DCHECK(info_->HasDeoptimizationSupport() || bailout_entries_.is_empty()); | 96 DCHECK(info_->HasDeoptimizationSupport() || bailout_entries_.is_empty()); |
| 119 if (!info_->HasDeoptimizationSupport()) return; | 97 if (!info_->HasDeoptimizationSupport()) return; |
| 120 int length = bailout_entries_.length(); | 98 int length = bailout_entries_.length(); |
| 121 Handle<DeoptimizationOutputData> data = | 99 Handle<DeoptimizationOutputData> data = |
| 122 DeoptimizationOutputData::New(isolate(), length, TENURED); | 100 DeoptimizationOutputData::New(isolate(), length, TENURED); |
| 123 for (int i = 0; i < length; i++) { | 101 for (int i = 0; i < length; i++) { |
| 124 data->SetAstId(i, bailout_entries_[i].id); | 102 data->SetAstId(i, bailout_entries_[i].id); |
| 125 data->SetPcAndState(i, Smi::FromInt(bailout_entries_[i].pc_and_state)); | 103 data->SetPcAndState(i, Smi::FromInt(bailout_entries_[i].pc_and_state)); |
| (...skipping 1504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1630 return var->mode() == CONST_LEGACY || var->scope()->is_nonlinear() || | 1608 return var->mode() == CONST_LEGACY || var->scope()->is_nonlinear() || |
| 1631 var->initializer_position() >= proxy->position(); | 1609 var->initializer_position() >= proxy->position(); |
| 1632 } | 1610 } |
| 1633 | 1611 |
| 1634 | 1612 |
| 1635 #undef __ | 1613 #undef __ |
| 1636 | 1614 |
| 1637 | 1615 |
| 1638 } // namespace internal | 1616 } // namespace internal |
| 1639 } // namespace v8 | 1617 } // namespace v8 |
| OLD | NEW |