OLD | NEW |
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 "src/compiler/js-builtin-reducer.h" | 5 #include "src/compiler/js-builtin-reducer.h" |
6 | 6 |
7 #include "src/compilation-dependencies.h" | 7 #include "src/compilation-dependencies.h" |
8 #include "src/compiler/access-builder.h" | 8 #include "src/compiler/access-builder.h" |
9 #include "src/compiler/js-graph.h" | 9 #include "src/compiler/js-graph.h" |
10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 | 323 |
324 bool HasInstanceTypeWitness(Node* receiver, Node* effect, | 324 bool HasInstanceTypeWitness(Node* receiver, Node* effect, |
325 InstanceType instance_type) { | 325 InstanceType instance_type) { |
326 for (Node* dominator = effect;;) { | 326 for (Node* dominator = effect;;) { |
327 if (dominator->opcode() == IrOpcode::kCheckMaps && | 327 if (dominator->opcode() == IrOpcode::kCheckMaps && |
328 dominator->InputAt(0) == receiver) { | 328 dominator->InputAt(0) == receiver) { |
329 // Check if all maps have the given {instance_type}. | 329 // Check if all maps have the given {instance_type}. |
330 for (int i = 1; i < dominator->op()->ValueInputCount(); ++i) { | 330 for (int i = 1; i < dominator->op()->ValueInputCount(); ++i) { |
331 Node* const map = NodeProperties::GetValueInput(dominator, i); | 331 Node* const map = NodeProperties::GetValueInput(dominator, i); |
332 Type* const map_type = NodeProperties::GetType(map); | 332 Type* const map_type = NodeProperties::GetType(map); |
333 if (!map_type->IsConstant()) return false; | 333 if (!map_type->IsHeapConstant()) return false; |
334 Handle<Map> const map_value = | 334 Handle<Map> const map_value = |
335 Handle<Map>::cast(map_type->AsConstant()->Value()); | 335 Handle<Map>::cast(map_type->AsHeapConstant()->Value()); |
336 if (map_value->instance_type() != instance_type) return false; | 336 if (map_value->instance_type() != instance_type) return false; |
337 } | 337 } |
338 return true; | 338 return true; |
339 } | 339 } |
340 switch (dominator->opcode()) { | 340 switch (dominator->opcode()) { |
341 case IrOpcode::kStoreField: { | 341 case IrOpcode::kStoreField: { |
342 FieldAccess const& access = FieldAccessOf(dominator->op()); | 342 FieldAccess const& access = FieldAccessOf(dominator->op()); |
343 if (access.base_is_tagged == kTaggedBase && | 343 if (access.base_is_tagged == kTaggedBase && |
344 access.offset == HeapObject::kMapOffset) { | 344 access.offset == HeapObject::kMapOffset) { |
345 return false; | 345 return false; |
(...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1389 return jsgraph()->simplified(); | 1389 return jsgraph()->simplified(); |
1390 } | 1390 } |
1391 | 1391 |
1392 JSOperatorBuilder* JSBuiltinReducer::javascript() const { | 1392 JSOperatorBuilder* JSBuiltinReducer::javascript() const { |
1393 return jsgraph()->javascript(); | 1393 return jsgraph()->javascript(); |
1394 } | 1394 } |
1395 | 1395 |
1396 } // namespace compiler | 1396 } // namespace compiler |
1397 } // namespace internal | 1397 } // namespace internal |
1398 } // namespace v8 | 1398 } // namespace v8 |
OLD | NEW |