OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/flow_graph_builder.h" | 5 #include "vm/flow_graph_builder.h" |
6 | 6 |
7 #include "lib/invocation_mirror.h" | 7 #include "lib/invocation_mirror.h" |
8 #include "vm/ast_printer.h" | 8 #include "vm/ast_printer.h" |
9 #include "vm/bit_vector.h" | 9 #include "vm/bit_vector.h" |
10 #include "vm/class_finalizer.h" | 10 #include "vm/class_finalizer.h" |
(...skipping 3029 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3040 LoadFieldInstr* load = new LoadFieldInstr( | 3040 LoadFieldInstr* load = new LoadFieldInstr( |
3041 receiver, | 3041 receiver, |
3042 OffsetForLengthGetter(kind), | 3042 OffsetForLengthGetter(kind), |
3043 Type::ZoneHandle(I, Type::SmiType()), | 3043 Type::ZoneHandle(I, Type::SmiType()), |
3044 node->token_pos()); | 3044 node->token_pos()); |
3045 load->set_is_immutable(kind != MethodRecognizer::kGrowableArrayLength); | 3045 load->set_is_immutable(kind != MethodRecognizer::kGrowableArrayLength); |
3046 load->set_result_cid(kSmiCid); | 3046 load->set_result_cid(kSmiCid); |
3047 load->set_recognized_kind(kind); | 3047 load->set_recognized_kind(kind); |
3048 return ReturnDefinition(load); | 3048 return ReturnDefinition(load); |
3049 } | 3049 } |
3050 case MethodRecognizer::kObjectCid: | 3050 case MethodRecognizer::kClassIDgetID: { |
3051 case MethodRecognizer::kTypedListBaseCid: { | 3051 LocalVariable* value_var = |
3052 Value* receiver = Bind(BuildLoadThisVar(node->scope())); | 3052 node->scope()->LookupVariable(Symbols::Value(), true); |
3053 LoadClassIdInstr* load = new LoadClassIdInstr(receiver); | 3053 Value* value = Bind(new LoadLocalInstr(*value_var)); |
| 3054 LoadClassIdInstr* load = new LoadClassIdInstr(value); |
3054 return ReturnDefinition(load); | 3055 return ReturnDefinition(load); |
3055 } | 3056 } |
3056 case MethodRecognizer::kGrowableArrayCapacity: { | 3057 case MethodRecognizer::kGrowableArrayCapacity: { |
3057 Value* receiver = Bind(BuildLoadThisVar(node->scope())); | 3058 Value* receiver = Bind(BuildLoadThisVar(node->scope())); |
3058 LoadFieldInstr* data_load = new LoadFieldInstr( | 3059 LoadFieldInstr* data_load = new LoadFieldInstr( |
3059 receiver, | 3060 receiver, |
3060 Array::data_offset(), | 3061 Array::data_offset(), |
3061 Type::ZoneHandle(I, Type::DynamicType()), | 3062 Type::ZoneHandle(I, Type::DynamicType()), |
3062 node->token_pos()); | 3063 node->token_pos()); |
3063 data_load->set_result_cid(kArrayCid); | 3064 data_load->set_result_cid(kArrayCid); |
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3948 Report::MessageF(Report::kBailout, | 3949 Report::MessageF(Report::kBailout, |
3949 Script::Handle(function.script()), | 3950 Script::Handle(function.script()), |
3950 function.token_pos(), | 3951 function.token_pos(), |
3951 "FlowGraphBuilder Bailout: %s %s", | 3952 "FlowGraphBuilder Bailout: %s %s", |
3952 String::Handle(function.name()).ToCString(), | 3953 String::Handle(function.name()).ToCString(), |
3953 reason); | 3954 reason); |
3954 UNREACHABLE(); | 3955 UNREACHABLE(); |
3955 } | 3956 } |
3956 | 3957 |
3957 } // namespace dart | 3958 } // namespace dart |
OLD | NEW |