OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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/compiler/memory-optimizer.h" | 5 #include "src/compiler/memory-optimizer.h" |
6 | 6 |
7 #include "src/compiler/js-graph.h" | 7 #include "src/compiler/js-graph.h" |
8 #include "src/compiler/linkage.h" | 8 #include "src/compiler/linkage.h" |
9 #include "src/compiler/node-matchers.h" | 9 #include "src/compiler/node-matchers.h" |
10 #include "src/compiler/node-properties.h" | 10 #include "src/compiler/node-properties.h" |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 ? ExternalReference::new_space_allocation_top_address(isolate()) | 115 ? ExternalReference::new_space_allocation_top_address(isolate()) |
116 : ExternalReference::old_space_allocation_top_address(isolate())); | 116 : ExternalReference::old_space_allocation_top_address(isolate())); |
117 Node* limit_address = jsgraph()->ExternalConstant( | 117 Node* limit_address = jsgraph()->ExternalConstant( |
118 pretenure == NOT_TENURED | 118 pretenure == NOT_TENURED |
119 ? ExternalReference::new_space_allocation_limit_address(isolate()) | 119 ? ExternalReference::new_space_allocation_limit_address(isolate()) |
120 : ExternalReference::old_space_allocation_limit_address(isolate())); | 120 : ExternalReference::old_space_allocation_limit_address(isolate())); |
121 | 121 |
122 // Check if we can fold this allocation into a previous allocation represented | 122 // Check if we can fold this allocation into a previous allocation represented |
123 // by the incoming {state}. | 123 // by the incoming {state}. |
124 Int32Matcher m(size); | 124 Int32Matcher m(size); |
125 if (m.HasValue() && m.Value() < Page::kMaxRegularHeapObjectSize) { | 125 if (m.HasValue() && m.Value() < kMaxRegularHeapObjectSize) { |
126 int32_t const object_size = m.Value(); | 126 int32_t const object_size = m.Value(); |
127 if (state->size() <= Page::kMaxRegularHeapObjectSize - object_size && | 127 if (state->size() <= kMaxRegularHeapObjectSize - object_size && |
128 state->group()->pretenure() == pretenure) { | 128 state->group()->pretenure() == pretenure) { |
129 // We can fold this Allocate {node} into the allocation {group} | 129 // We can fold this Allocate {node} into the allocation {group} |
130 // represented by the given {state}. Compute the upper bound for | 130 // represented by the given {state}. Compute the upper bound for |
131 // the new {state}. | 131 // the new {state}. |
132 int32_t const state_size = state->size() + object_size; | 132 int32_t const state_size = state->size() + object_size; |
133 | 133 |
134 // Update the reservation check to the actual maximum upper bound. | 134 // Update the reservation check to the actual maximum upper bound. |
135 AllocationGroup* const group = state->group(); | 135 AllocationGroup* const group = state->group(); |
136 if (OpParameter<int32_t>(group->size()) < state_size) { | 136 if (OpParameter<int32_t>(group->size()) < state_size) { |
137 NodeProperties::ChangeOp(group->size(), | 137 NodeProperties::ChangeOp(group->size(), |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 return jsgraph()->common(); | 494 return jsgraph()->common(); |
495 } | 495 } |
496 | 496 |
497 MachineOperatorBuilder* MemoryOptimizer::machine() const { | 497 MachineOperatorBuilder* MemoryOptimizer::machine() const { |
498 return jsgraph()->machine(); | 498 return jsgraph()->machine(); |
499 } | 499 } |
500 | 500 |
501 } // namespace compiler | 501 } // namespace compiler |
502 } // namespace internal | 502 } // namespace internal |
503 } // namespace v8 | 503 } // namespace v8 |
OLD | NEW |