| 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/object.h" | 5 #include "vm/object.h" |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
| 10 #include "vm/cpu.h" | 10 #include "vm/cpu.h" |
| (...skipping 2651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2662 invocation.SetParameterNameAt(i, String::Handle(Symbols::New(name))); | 2662 invocation.SetParameterNameAt(i, String::Handle(Symbols::New(name))); |
| 2663 } | 2663 } |
| 2664 | 2664 |
| 2665 // Named parameters. | 2665 // Named parameters. |
| 2666 for (; i < desc.Count(); i++) { | 2666 for (; i < desc.Count(); i++) { |
| 2667 invocation.SetParameterTypeAt(i, Type::Handle(Type::DynamicType())); | 2667 invocation.SetParameterTypeAt(i, Type::Handle(Type::DynamicType())); |
| 2668 intptr_t index = i - desc.PositionalCount(); | 2668 intptr_t index = i - desc.PositionalCount(); |
| 2669 invocation.SetParameterNameAt(i, String::Handle(desc.NameAt(index))); | 2669 invocation.SetParameterNameAt(i, String::Handle(desc.NameAt(index))); |
| 2670 } | 2670 } |
| 2671 invocation.set_result_type(Type::Handle(Type::DynamicType())); | 2671 invocation.set_result_type(Type::Handle(Type::DynamicType())); |
| 2672 invocation.set_is_debuggable(false); |
| 2672 invocation.set_is_visible(false); // Not visible in stack trace. | 2673 invocation.set_is_visible(false); // Not visible in stack trace. |
| 2673 invocation.set_saved_args_desc(args_desc); | 2674 invocation.set_saved_args_desc(args_desc); |
| 2674 | 2675 |
| 2675 return invocation.raw(); | 2676 return invocation.raw(); |
| 2676 } | 2677 } |
| 2677 | 2678 |
| 2678 | 2679 |
| 2679 RawArray* Class::invocation_dispatcher_cache() const { | 2680 RawArray* Class::invocation_dispatcher_cache() const { |
| 2680 return raw_ptr()->invocation_dispatcher_cache_; | 2681 return raw_ptr()->invocation_dispatcher_cache_; |
| 2681 } | 2682 } |
| (...skipping 3508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6190 result.set_name(name); | 6191 result.set_name(name); |
| 6191 result.set_kind(kind); | 6192 result.set_kind(kind); |
| 6192 result.set_recognized_kind(MethodRecognizer::kUnknown); | 6193 result.set_recognized_kind(MethodRecognizer::kUnknown); |
| 6193 result.set_modifier(RawFunction::kNoModifier); | 6194 result.set_modifier(RawFunction::kNoModifier); |
| 6194 result.set_is_static(is_static); | 6195 result.set_is_static(is_static); |
| 6195 result.set_is_const(is_const); | 6196 result.set_is_const(is_const); |
| 6196 result.set_is_abstract(is_abstract); | 6197 result.set_is_abstract(is_abstract); |
| 6197 result.set_is_external(is_external); | 6198 result.set_is_external(is_external); |
| 6198 result.set_is_native(is_native); | 6199 result.set_is_native(is_native); |
| 6199 result.set_is_visible(true); // Will be computed later. | 6200 result.set_is_visible(true); // Will be computed later. |
| 6201 result.set_is_debuggable(true); // Will be computed later. |
| 6200 result.set_is_intrinsic(false); | 6202 result.set_is_intrinsic(false); |
| 6201 result.set_is_redirecting(false); | 6203 result.set_is_redirecting(false); |
| 6202 result.set_is_async_closure(false); | 6204 result.set_is_async_closure(false); |
| 6203 result.set_always_inline(false); | 6205 result.set_always_inline(false); |
| 6204 result.set_is_polymorphic_target(false); | 6206 result.set_is_polymorphic_target(false); |
| 6205 result.set_owner(owner); | 6207 result.set_owner(owner); |
| 6206 result.set_token_pos(token_pos); | 6208 result.set_token_pos(token_pos); |
| 6207 result.set_end_token_pos(token_pos); | 6209 result.set_end_token_pos(token_pos); |
| 6208 result.set_num_fixed_parameters(0); | 6210 result.set_num_fixed_parameters(0); |
| 6209 result.set_num_optional_parameters(0); | 6211 result.set_num_optional_parameters(0); |
| 6210 result.set_usage_counter(0); | 6212 result.set_usage_counter(0); |
| 6211 result.set_deoptimization_counter(0); | 6213 result.set_deoptimization_counter(0); |
| 6212 result.set_regexp_cid(kIllegalCid); | 6214 result.set_regexp_cid(kIllegalCid); |
| 6213 result.set_optimized_instruction_count(0); | 6215 result.set_optimized_instruction_count(0); |
| 6214 result.set_optimized_call_site_count(0); | 6216 result.set_optimized_call_site_count(0); |
| 6215 result.set_is_optimizable(is_native ? false : true); | 6217 result.set_is_optimizable(is_native ? false : true); |
| 6216 result.set_is_inlinable(true); | 6218 result.set_is_inlinable(true); |
| 6217 result.set_allows_hoisting_check_class(true); | 6219 result.set_allows_hoisting_check_class(true); |
| 6218 result.set_allows_bounds_check_generalization(true); | 6220 result.set_allows_bounds_check_generalization(true); |
| 6219 StubCode* stub_code = Isolate::Current()->stub_code(); | 6221 StubCode* stub_code = Isolate::Current()->stub_code(); |
| 6220 result.SetInstructions(Code::Handle(stub_code->LazyCompile_entry()->code())); | 6222 result.SetInstructions(Code::Handle(stub_code->LazyCompile_entry()->code())); |
| 6221 if (kind == RawFunction::kClosureFunction) { | 6223 if (kind == RawFunction::kClosureFunction) { |
| 6222 const ClosureData& data = ClosureData::Handle(ClosureData::New()); | 6224 const ClosureData& data = ClosureData::Handle(ClosureData::New()); |
| 6223 result.set_data(data); | 6225 result.set_data(data); |
| 6224 } | 6226 } |
| 6225 | |
| 6226 return result.raw(); | 6227 return result.raw(); |
| 6227 } | 6228 } |
| 6228 | 6229 |
| 6229 | 6230 |
| 6230 RawFunction* Function::Clone(const Class& new_owner) const { | 6231 RawFunction* Function::Clone(const Class& new_owner) const { |
| 6231 ASSERT(!IsConstructor()); | 6232 ASSERT(!IsConstructor()); |
| 6232 Function& clone = Function::Handle(); | 6233 Function& clone = Function::Handle(); |
| 6233 clone ^= Object::Clone(*this, Heap::kOld); | 6234 clone ^= Object::Clone(*this, Heap::kOld); |
| 6234 const Class& origin = Class::Handle(this->origin()); | 6235 const Class& origin = Class::Handle(this->origin()); |
| 6235 const PatchClass& clone_owner = | 6236 const PatchClass& clone_owner = |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6290 Function::New(String::Handle(Symbols::New(":Eval")), | 6291 Function::New(String::Handle(Symbols::New(":Eval")), |
| 6291 RawFunction::kRegularFunction, | 6292 RawFunction::kRegularFunction, |
| 6292 is_static, | 6293 is_static, |
| 6293 /* is_const = */ false, | 6294 /* is_const = */ false, |
| 6294 /* is_abstract = */ false, | 6295 /* is_abstract = */ false, |
| 6295 /* is_external = */ false, | 6296 /* is_external = */ false, |
| 6296 /* is_native = */ false, | 6297 /* is_native = */ false, |
| 6297 owner, | 6298 owner, |
| 6298 0)); | 6299 0)); |
| 6299 ASSERT(!script.IsNull()); | 6300 ASSERT(!script.IsNull()); |
| 6301 result.set_is_debuggable(false); |
| 6300 result.set_eval_script(script); | 6302 result.set_eval_script(script); |
| 6301 return result.raw(); | 6303 return result.raw(); |
| 6302 } | 6304 } |
| 6303 | 6305 |
| 6304 RawFunction* Function::ImplicitClosureFunction() const { | 6306 RawFunction* Function::ImplicitClosureFunction() const { |
| 6305 // Return the existing implicit closure function if any. | 6307 // Return the existing implicit closure function if any. |
| 6306 if (implicit_closure_function() != Function::null()) { | 6308 if (implicit_closure_function() != Function::null()) { |
| 6307 return implicit_closure_function(); | 6309 return implicit_closure_function(); |
| 6308 } | 6310 } |
| 6309 ASSERT(!IsSignatureFunction() && !IsClosureFunction()); | 6311 ASSERT(!IsSignatureFunction() && !IsClosureFunction()); |
| (...skipping 14320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 20630 return tag_label.ToCString(); | 20632 return tag_label.ToCString(); |
| 20631 } | 20633 } |
| 20632 | 20634 |
| 20633 | 20635 |
| 20634 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 20636 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
| 20635 Instance::PrintJSONImpl(stream, ref); | 20637 Instance::PrintJSONImpl(stream, ref); |
| 20636 } | 20638 } |
| 20637 | 20639 |
| 20638 | 20640 |
| 20639 } // namespace dart | 20641 } // namespace dart |
| OLD | NEW |