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/compiler.h" | 10 #include "vm/compiler.h" |
(...skipping 3481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3492 case MethodRecognizer::kGrowableArrayLength: | 3492 case MethodRecognizer::kGrowableArrayLength: |
3493 case MethodRecognizer::kObjectArrayLength: | 3493 case MethodRecognizer::kObjectArrayLength: |
3494 case MethodRecognizer::kImmutableArrayLength: | 3494 case MethodRecognizer::kImmutableArrayLength: |
3495 case MethodRecognizer::kTypedDataLength: { | 3495 case MethodRecognizer::kTypedDataLength: { |
3496 LoadFieldInstr* load = BuildNativeGetter( | 3496 LoadFieldInstr* load = BuildNativeGetter( |
3497 node, kind, OffsetForLengthGetter(kind), | 3497 node, kind, OffsetForLengthGetter(kind), |
3498 Type::ZoneHandle(Z, Type::SmiType()), kSmiCid); | 3498 Type::ZoneHandle(Z, Type::SmiType()), kSmiCid); |
3499 load->set_is_immutable(kind != MethodRecognizer::kGrowableArrayLength); | 3499 load->set_is_immutable(kind != MethodRecognizer::kGrowableArrayLength); |
3500 return ReturnDefinition(load); | 3500 return ReturnDefinition(load); |
3501 } | 3501 } |
| 3502 #if !defined(TARGET_ARCH_DBC) |
| 3503 // TODO(vegorov) add bytecode to support this method. |
3502 case MethodRecognizer::kClassIDgetID: { | 3504 case MethodRecognizer::kClassIDgetID: { |
3503 LocalVariable* value_var = | 3505 LocalVariable* value_var = |
3504 node->scope()->LookupVariable(Symbols::Value(), true); | 3506 node->scope()->LookupVariable(Symbols::Value(), true); |
3505 Value* value = Bind(new(Z) LoadLocalInstr(*value_var, token_pos)); | 3507 Value* value = Bind(new(Z) LoadLocalInstr(*value_var, token_pos)); |
3506 LoadClassIdInstr* load = new(Z) LoadClassIdInstr(value); | 3508 LoadClassIdInstr* load = new(Z) LoadClassIdInstr(value); |
3507 return ReturnDefinition(load); | 3509 return ReturnDefinition(load); |
3508 } | 3510 } |
| 3511 #endif |
3509 case MethodRecognizer::kGrowableArrayCapacity: { | 3512 case MethodRecognizer::kGrowableArrayCapacity: { |
3510 Value* receiver = Bind(BuildLoadThisVar(node->scope(), token_pos)); | 3513 Value* receiver = Bind(BuildLoadThisVar(node->scope(), token_pos)); |
3511 LoadFieldInstr* data_load = new(Z) LoadFieldInstr( | 3514 LoadFieldInstr* data_load = new(Z) LoadFieldInstr( |
3512 receiver, | 3515 receiver, |
3513 Array::data_offset(), | 3516 Array::data_offset(), |
3514 Object::dynamic_type(), | 3517 Object::dynamic_type(), |
3515 node->token_pos()); | 3518 node->token_pos()); |
3516 data_load->set_result_cid(kArrayCid); | 3519 data_load->set_result_cid(kArrayCid); |
3517 Value* data = Bind(data_load); | 3520 Value* data = Bind(data_load); |
3518 LoadFieldInstr* length_load = new(Z) LoadFieldInstr( | 3521 LoadFieldInstr* length_load = new(Z) LoadFieldInstr( |
(...skipping 1145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4664 Script::Handle(function.script()), | 4667 Script::Handle(function.script()), |
4665 function.token_pos(), | 4668 function.token_pos(), |
4666 Report::AtLocation, | 4669 Report::AtLocation, |
4667 "FlowGraphBuilder Bailout: %s %s", | 4670 "FlowGraphBuilder Bailout: %s %s", |
4668 String::Handle(function.name()).ToCString(), | 4671 String::Handle(function.name()).ToCString(), |
4669 reason); | 4672 reason); |
4670 UNREACHABLE(); | 4673 UNREACHABLE(); |
4671 } | 4674 } |
4672 | 4675 |
4673 } // namespace dart | 4676 } // namespace dart |
OLD | NEW |