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/graph-inl.h" | 5 #include "src/compiler/graph-inl.h" |
6 #include "src/compiler/js-operator.h" | 6 #include "src/compiler/js-operator.h" |
7 #include "src/compiler/node.h" | 7 #include "src/compiler/node.h" |
8 #include "src/compiler/node-properties-inl.h" | 8 #include "src/compiler/node-properties-inl.h" |
9 #include "src/compiler/node-properties.h" | 9 #include "src/compiler/node-properties.h" |
10 #include "src/compiler/simplified-operator.h" | 10 #include "src/compiler/simplified-operator.h" |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 Type* context_type = outer.upper; | 550 Type* context_type = outer.upper; |
551 MaybeHandle<Context> context; | 551 MaybeHandle<Context> context; |
552 if (context_type->IsConstant()) { | 552 if (context_type->IsConstant()) { |
553 context = Handle<Context>::cast(context_type->AsConstant()->Value()); | 553 context = Handle<Context>::cast(context_type->AsConstant()->Value()); |
554 } | 554 } |
555 // Walk context chain (as far as known), mirroring dynamic lookup. | 555 // Walk context chain (as far as known), mirroring dynamic lookup. |
556 // Since contexts are mutable, the information is only useful as a lower | 556 // Since contexts are mutable, the information is only useful as a lower |
557 // bound. | 557 // bound. |
558 // TODO(rossberg): Could use scope info to fix upper bounds for constant | 558 // TODO(rossberg): Could use scope info to fix upper bounds for constant |
559 // bindings if we know that this code is never shared. | 559 // bindings if we know that this code is never shared. |
560 for (int i = access.depth(); i > 0; --i) { | 560 for (size_t i = access.depth(); i > 0; --i) { |
561 if (context_type->IsContext()) { | 561 if (context_type->IsContext()) { |
562 context_type = context_type->AsContext()->Outer(); | 562 context_type = context_type->AsContext()->Outer(); |
563 if (context_type->IsConstant()) { | 563 if (context_type->IsConstant()) { |
564 context = Handle<Context>::cast(context_type->AsConstant()->Value()); | 564 context = Handle<Context>::cast(context_type->AsConstant()->Value()); |
565 } | 565 } |
566 } else if (!context.is_null()) { | 566 } else if (!context.is_null()) { |
567 context = handle(context.ToHandleChecked()->previous(), isolate()); | 567 context = handle(context.ToHandleChecked()->previous(), isolate()); |
568 } | 568 } |
569 } | 569 } |
570 if (context.is_null()) { | 570 if (context.is_null()) { |
571 return Bounds::Unbounded(zone()); | 571 return Bounds::Unbounded(zone()); |
572 } else { | 572 } else { |
573 Handle<Object> value = | 573 Handle<Object> value = |
574 handle(context.ToHandleChecked()->get(access.index()), isolate()); | 574 handle(context.ToHandleChecked()->get(static_cast<int>(access.index())), |
| 575 isolate()); |
575 Type* lower = TypeConstant(value); | 576 Type* lower = TypeConstant(value); |
576 return Bounds(lower, Type::Any(zone())); | 577 return Bounds(lower, Type::Any(zone())); |
577 } | 578 } |
578 } | 579 } |
579 | 580 |
580 | 581 |
581 Bounds Typer::Visitor::TypeJSStoreContext(Node* node) { | 582 Bounds Typer::Visitor::TypeJSStoreContext(Node* node) { |
582 UNREACHABLE(); | 583 UNREACHABLE(); |
583 return Bounds(); | 584 return Bounds(); |
584 } | 585 } |
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
905 } | 906 } |
906 | 907 |
907 | 908 |
908 void Typer::DecorateGraph(Graph* graph) { | 909 void Typer::DecorateGraph(Graph* graph) { |
909 graph->AddDecorator(new (zone()) TyperDecorator(this)); | 910 graph->AddDecorator(new (zone()) TyperDecorator(this)); |
910 } | 911 } |
911 | 912 |
912 } | 913 } |
913 } | 914 } |
914 } // namespace v8::internal::compiler | 915 } // namespace v8::internal::compiler |
OLD | NEW |