| 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 |