| 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/become.h" | 10 #include "vm/become.h" |
| (...skipping 2715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2726 owner, TokenPosition::kMethodExtractor)); | 2726 owner, TokenPosition::kMethodExtractor)); |
| 2727 | 2727 |
| 2728 // Initialize signature: receiver is a single fixed parameter. | 2728 // Initialize signature: receiver is a single fixed parameter. |
| 2729 const intptr_t kNumParameters = 1; | 2729 const intptr_t kNumParameters = 1; |
| 2730 extractor.set_num_fixed_parameters(kNumParameters); | 2730 extractor.set_num_fixed_parameters(kNumParameters); |
| 2731 extractor.SetNumOptionalParameters(0, 0); | 2731 extractor.SetNumOptionalParameters(0, 0); |
| 2732 extractor.set_parameter_types(Object::extractor_parameter_types()); | 2732 extractor.set_parameter_types(Object::extractor_parameter_types()); |
| 2733 extractor.set_parameter_names(Object::extractor_parameter_names()); | 2733 extractor.set_parameter_names(Object::extractor_parameter_names()); |
| 2734 extractor.set_result_type(Object::dynamic_type()); | 2734 extractor.set_result_type(Object::dynamic_type()); |
| 2735 extractor.set_kernel_offset(kernel_offset()); | 2735 extractor.set_kernel_offset(kernel_offset()); |
| 2736 extractor.set_kernel_data(TypedData::Handle(zone, kernel_data())); |
| 2736 | 2737 |
| 2737 extractor.set_extracted_method_closure(closure_function); | 2738 extractor.set_extracted_method_closure(closure_function); |
| 2738 extractor.set_is_debuggable(false); | 2739 extractor.set_is_debuggable(false); |
| 2739 extractor.set_is_visible(false); | 2740 extractor.set_is_visible(false); |
| 2740 | 2741 |
| 2741 owner.AddFunction(extractor); | 2742 owner.AddFunction(extractor); |
| 2742 | 2743 |
| 2743 return extractor.raw(); | 2744 return extractor.raw(); |
| 2744 } | 2745 } |
| 2745 | 2746 |
| (...skipping 3196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5942 } | 5943 } |
| 5943 | 5944 |
| 5944 void Function::SetNumOptionalParameters(intptr_t num_optional_parameters, | 5945 void Function::SetNumOptionalParameters(intptr_t num_optional_parameters, |
| 5945 bool are_optional_positional) const { | 5946 bool are_optional_positional) const { |
| 5946 ASSERT(num_optional_parameters >= 0); | 5947 ASSERT(num_optional_parameters >= 0); |
| 5947 set_num_optional_parameters(are_optional_positional | 5948 set_num_optional_parameters(are_optional_positional |
| 5948 ? num_optional_parameters | 5949 ? num_optional_parameters |
| 5949 : -num_optional_parameters); | 5950 : -num_optional_parameters); |
| 5950 } | 5951 } |
| 5951 | 5952 |
| 5953 void Function::set_kernel_data(const TypedData& data) const { |
| 5954 StorePointer(&raw_ptr()->kernel_data_, data.raw()); |
| 5955 } |
| 5956 |
| 5952 bool Function::IsOptimizable() const { | 5957 bool Function::IsOptimizable() const { |
| 5953 if (FLAG_precompiled_mode) { | 5958 if (FLAG_precompiled_mode) { |
| 5954 return true; | 5959 return true; |
| 5955 } | 5960 } |
| 5956 if (is_native()) { | 5961 if (is_native()) { |
| 5957 // Native methods don't need to be optimized. | 5962 // Native methods don't need to be optimized. |
| 5958 return false; | 5963 return false; |
| 5959 } | 5964 } |
| 5960 const intptr_t function_length = end_token_pos().Pos() - token_pos().Pos(); | 5965 const intptr_t function_length = end_token_pos().Pos() - token_pos().Pos(); |
| 5961 if (is_optimizable() && (script() != Script::null()) && | 5966 if (is_optimizable() && (script() != Script::null()) && |
| (...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6634 const PatchClass& clone_owner = | 6639 const PatchClass& clone_owner = |
| 6635 PatchClass::Handle(zone, PatchClass::New(new_owner, origin)); | 6640 PatchClass::Handle(zone, PatchClass::New(new_owner, origin)); |
| 6636 clone.set_owner(clone_owner); | 6641 clone.set_owner(clone_owner); |
| 6637 clone.ClearICDataArray(); | 6642 clone.ClearICDataArray(); |
| 6638 clone.ClearCode(); | 6643 clone.ClearCode(); |
| 6639 clone.set_usage_counter(0); | 6644 clone.set_usage_counter(0); |
| 6640 clone.set_deoptimization_counter(0); | 6645 clone.set_deoptimization_counter(0); |
| 6641 clone.set_optimized_instruction_count(0); | 6646 clone.set_optimized_instruction_count(0); |
| 6642 clone.set_optimized_call_site_count(0); | 6647 clone.set_optimized_call_site_count(0); |
| 6643 clone.set_kernel_offset(kernel_offset()); | 6648 clone.set_kernel_offset(kernel_offset()); |
| 6649 clone.set_kernel_data(TypedData::Handle(zone, kernel_data())); |
| 6650 |
| 6644 if (new_owner.NumTypeParameters() > 0) { | 6651 if (new_owner.NumTypeParameters() > 0) { |
| 6645 // Adjust uninstantiated types to refer to type parameters of the new owner. | 6652 // Adjust uninstantiated types to refer to type parameters of the new owner. |
| 6646 const TypeArguments& type_params = | 6653 const TypeArguments& type_params = |
| 6647 TypeArguments::Handle(zone, type_parameters()); | 6654 TypeArguments::Handle(zone, type_parameters()); |
| 6648 if (!type_params.IsNull()) { | 6655 if (!type_params.IsNull()) { |
| 6649 const intptr_t num_type_params = type_params.Length(); | 6656 const intptr_t num_type_params = type_params.Length(); |
| 6650 const TypeArguments& type_params_clone = | 6657 const TypeArguments& type_params_clone = |
| 6651 TypeArguments::Handle(zone, TypeArguments::New(num_type_params)); | 6658 TypeArguments::Handle(zone, TypeArguments::New(num_type_params)); |
| 6652 TypeParameter& type_param = TypeParameter::Handle(zone); | 6659 TypeParameter& type_param = TypeParameter::Handle(zone); |
| 6653 for (intptr_t i = 0; i < num_type_params; i++) { | 6660 for (intptr_t i = 0; i < num_type_params; i++) { |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6817 param_type = Type::DynamicType(); | 6824 param_type = Type::DynamicType(); |
| 6818 closure_function.SetParameterTypeAt(0, param_type); | 6825 closure_function.SetParameterTypeAt(0, param_type); |
| 6819 closure_function.SetParameterNameAt(0, Symbols::ClosureParameter()); | 6826 closure_function.SetParameterNameAt(0, Symbols::ClosureParameter()); |
| 6820 for (int i = kClosure; i < num_params; i++) { | 6827 for (int i = kClosure; i < num_params; i++) { |
| 6821 param_type = ParameterTypeAt(has_receiver - kClosure + i); | 6828 param_type = ParameterTypeAt(has_receiver - kClosure + i); |
| 6822 closure_function.SetParameterTypeAt(i, param_type); | 6829 closure_function.SetParameterTypeAt(i, param_type); |
| 6823 param_name = ParameterNameAt(has_receiver - kClosure + i); | 6830 param_name = ParameterNameAt(has_receiver - kClosure + i); |
| 6824 closure_function.SetParameterNameAt(i, param_name); | 6831 closure_function.SetParameterNameAt(i, param_name); |
| 6825 } | 6832 } |
| 6826 closure_function.set_kernel_offset(kernel_offset()); | 6833 closure_function.set_kernel_offset(kernel_offset()); |
| 6834 closure_function.set_kernel_data(TypedData::Handle(zone, kernel_data())); |
| 6827 | 6835 |
| 6828 const Type& signature_type = | 6836 const Type& signature_type = |
| 6829 Type::Handle(zone, closure_function.SignatureType()); | 6837 Type::Handle(zone, closure_function.SignatureType()); |
| 6830 if (!signature_type.IsFinalized()) { | 6838 if (!signature_type.IsFinalized()) { |
| 6831 ClassFinalizer::FinalizeType(Class::Handle(zone, Owner()), signature_type); | 6839 ClassFinalizer::FinalizeType(Class::Handle(zone, Owner()), signature_type); |
| 6832 } | 6840 } |
| 6833 set_implicit_closure_function(closure_function); | 6841 set_implicit_closure_function(closure_function); |
| 6834 ASSERT(closure_function.IsImplicitClosureFunction()); | 6842 ASSERT(closure_function.IsImplicitClosureFunction()); |
| 6835 return closure_function.raw(); | 6843 return closure_function.raw(); |
| 6836 } | 6844 } |
| (...skipping 855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7692 bool Field::IsSetterName(const String& function_name) { | 7700 bool Field::IsSetterName(const String& function_name) { |
| 7693 return function_name.StartsWith(Symbols::SetterPrefix()); | 7701 return function_name.StartsWith(Symbols::SetterPrefix()); |
| 7694 } | 7702 } |
| 7695 | 7703 |
| 7696 void Field::set_name(const String& value) const { | 7704 void Field::set_name(const String& value) const { |
| 7697 ASSERT(value.IsSymbol()); | 7705 ASSERT(value.IsSymbol()); |
| 7698 ASSERT(IsOriginal()); | 7706 ASSERT(IsOriginal()); |
| 7699 StorePointer(&raw_ptr()->name_, value.raw()); | 7707 StorePointer(&raw_ptr()->name_, value.raw()); |
| 7700 } | 7708 } |
| 7701 | 7709 |
| 7710 void Field::set_kernel_data(const TypedData& data) const { |
| 7711 StorePointer(&raw_ptr()->kernel_data_, data.raw()); |
| 7712 } |
| 7713 |
| 7702 RawObject* Field::RawOwner() const { | 7714 RawObject* Field::RawOwner() const { |
| 7703 if (IsOriginal()) { | 7715 if (IsOriginal()) { |
| 7704 return raw_ptr()->owner_; | 7716 return raw_ptr()->owner_; |
| 7705 } else { | 7717 } else { |
| 7706 const Field& field = Field::Handle(Original()); | 7718 const Field& field = Field::Handle(Original()); |
| 7707 ASSERT(field.IsOriginal()); | 7719 ASSERT(field.IsOriginal()); |
| 7708 ASSERT(!Object::Handle(field.raw_ptr()->owner_).IsField()); | 7720 ASSERT(!Object::Handle(field.raw_ptr()->owner_).IsField()); |
| 7709 return field.raw_ptr()->owner_; | 7721 return field.raw_ptr()->owner_; |
| 7710 } | 7722 } |
| 7711 } | 7723 } |
| (...skipping 1244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8956 ASSERT(kind < Token::kNumTokens); | 8968 ASSERT(kind < Token::kNumTokens); |
| 8957 return Symbols::Token(kind).raw(); | 8969 return Symbols::Token(kind).raw(); |
| 8958 } else { | 8970 } else { |
| 8959 ASSERT(obj.IsLiteralToken()); // Must be a literal token. | 8971 ASSERT(obj.IsLiteralToken()); // Must be a literal token. |
| 8960 const LiteralToken& literal_token = LiteralToken::Cast(obj); | 8972 const LiteralToken& literal_token = LiteralToken::Cast(obj); |
| 8961 return literal_token.literal(); | 8973 return literal_token.literal(); |
| 8962 } | 8974 } |
| 8963 } | 8975 } |
| 8964 | 8976 |
| 8965 bool Script::HasSource() const { | 8977 bool Script::HasSource() const { |
| 8966 #if !defined(DART_PRECOMPILED_RUNTIME) | |
| 8967 return kind() == RawScript::kKernelTag || | |
| 8968 raw_ptr()->source_ != String::null(); | |
| 8969 #else // !defined(DART_PRECOMPILED_RUNTIME) | |
| 8970 return raw_ptr()->source_ != String::null(); | 8978 return raw_ptr()->source_ != String::null(); |
| 8971 #endif // !defined(DART_PRECOMPILED_RUNTIME) | |
| 8972 } | 8979 } |
| 8973 | 8980 |
| 8974 RawString* Script::Source() const { | 8981 RawString* Script::Source() const { |
| 8975 String& source = String::Handle(raw_ptr()->source_); | 8982 String& source = String::Handle(raw_ptr()->source_); |
| 8976 if (source.IsNull()) { | 8983 if (source.IsNull()) { |
| 8977 return GenerateSource(); | 8984 return GenerateSource(); |
| 8978 } | 8985 } |
| 8979 return raw_ptr()->source_; | 8986 return raw_ptr()->source_; |
| 8980 } | 8987 } |
| 8981 | 8988 |
| 8982 RawString* Script::GenerateSource() const { | 8989 RawString* Script::GenerateSource() const { |
| 8983 #if !defined(DART_PRECOMPILED_RUNTIME) | |
| 8984 if (kind() == RawScript::kKernelTag) { | |
| 8985 String& source = String::Handle(raw_ptr()->source_); | |
| 8986 if (source.IsNull()) { | |
| 8987 // This is created lazily. Now we need it. | |
| 8988 set_source(kernel::GetSourceFor(*this)); | |
| 8989 } | |
| 8990 return raw_ptr()->source_; | |
| 8991 } | |
| 8992 #endif // !defined(DART_PRECOMPILED_RUNTIME) | |
| 8993 | |
| 8994 const TokenStream& token_stream = TokenStream::Handle(tokens()); | 8990 const TokenStream& token_stream = TokenStream::Handle(tokens()); |
| 8995 if (token_stream.IsNull()) { | 8991 if (token_stream.IsNull()) { |
| 8996 ASSERT(Dart::vm_snapshot_kind() == Snapshot::kFullAOT); | 8992 ASSERT(Dart::vm_snapshot_kind() == Snapshot::kFullAOT); |
| 8997 return String::null(); | 8993 return String::null(); |
| 8998 } | 8994 } |
| 8999 return token_stream.GenerateSource(); | 8995 return token_stream.GenerateSource(); |
| 9000 } | 8996 } |
| 9001 | 8997 |
| 9002 void Script::set_compile_time_constants(const Array& value) const { | 8998 void Script::set_compile_time_constants(const Array& value) const { |
| 9003 StorePointer(&raw_ptr()->compile_time_constants_, value.raw()); | 8999 StorePointer(&raw_ptr()->compile_time_constants_, value.raw()); |
| 9004 } | 9000 } |
| 9005 | 9001 |
| 9006 void Script::set_kernel_data(const uint8_t* kernel_data) const { | |
| 9007 StoreNonPointer(&raw_ptr()->kernel_data_, kernel_data); | |
| 9008 } | |
| 9009 | |
| 9010 void Script::set_kernel_data_size(const intptr_t kernel_data_size) const { | |
| 9011 StoreNonPointer(&raw_ptr()->kernel_data_size_, kernel_data_size); | |
| 9012 } | |
| 9013 | |
| 9014 void Script::set_kernel_script_index(const intptr_t kernel_script_index) const { | 9002 void Script::set_kernel_script_index(const intptr_t kernel_script_index) const { |
| 9015 StoreNonPointer(&raw_ptr()->kernel_script_index_, kernel_script_index); | 9003 StoreNonPointer(&raw_ptr()->kernel_script_index_, kernel_script_index); |
| 9016 } | 9004 } |
| 9017 | 9005 |
| 9018 void Script::set_kernel_string_offsets(const TypedData& offsets) const { | 9006 void Script::set_kernel_string_offsets(const TypedData& offsets) const { |
| 9019 StorePointer(&raw_ptr()->kernel_string_offsets_, offsets.raw()); | 9007 StorePointer(&raw_ptr()->kernel_string_offsets_, offsets.raw()); |
| 9020 } | 9008 } |
| 9021 | 9009 |
| 9022 void Script::set_kernel_string_data(const TypedData& data) const { | 9010 void Script::set_kernel_string_data(const TypedData& data) const { |
| 9023 StorePointer(&raw_ptr()->kernel_string_data_, data.raw()); | 9011 StorePointer(&raw_ptr()->kernel_string_data_, data.raw()); |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9206 Array& yields = Array::Handle(raw_ptr()->yield_positions_); | 9194 Array& yields = Array::Handle(raw_ptr()->yield_positions_); |
| 9207 if (yields.IsNull() && kind() == RawScript::kKernelTag) { | 9195 if (yields.IsNull() && kind() == RawScript::kKernelTag) { |
| 9208 // This is created lazily. Now we need it. | 9196 // This is created lazily. Now we need it. |
| 9209 kernel::CollectTokenPositionsFor(*this); | 9197 kernel::CollectTokenPositionsFor(*this); |
| 9210 } | 9198 } |
| 9211 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 9199 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
| 9212 return raw_ptr()->yield_positions_; | 9200 return raw_ptr()->yield_positions_; |
| 9213 } | 9201 } |
| 9214 | 9202 |
| 9215 RawArray* Script::line_starts() const { | 9203 RawArray* Script::line_starts() const { |
| 9216 #if !defined(DART_PRECOMPILED_RUNTIME) | |
| 9217 const Array& line_starts_array = Array::Handle(raw_ptr()->line_starts_); | |
| 9218 if (line_starts_array.IsNull() && kind() == RawScript::kKernelTag) { | |
| 9219 // This is created lazily. Now we need it. | |
| 9220 set_line_starts(kernel::GetLineStartsFor(*this)); | |
| 9221 } | |
| 9222 #endif // !defined(DART_PRECOMPILED_RUNTIME) | |
| 9223 return raw_ptr()->line_starts_; | 9204 return raw_ptr()->line_starts_; |
| 9224 } | 9205 } |
| 9225 | 9206 |
| 9226 RawArray* Script::debug_positions() const { | 9207 RawArray* Script::debug_positions() const { |
| 9227 #if !defined(DART_PRECOMPILED_RUNTIME) | 9208 #if !defined(DART_PRECOMPILED_RUNTIME) |
| 9228 Array& debug_positions_array = Array::Handle(raw_ptr()->debug_positions_); | 9209 Array& debug_positions_array = Array::Handle(raw_ptr()->debug_positions_); |
| 9229 if (debug_positions_array.IsNull() && kind() == RawScript::kKernelTag) { | 9210 if (debug_positions_array.IsNull() && kind() == RawScript::kKernelTag) { |
| 9230 // This is created lazily. Now we need it. | 9211 // This is created lazily. Now we need it. |
| 9231 kernel::CollectTokenPositionsFor(*this); | 9212 kernel::CollectTokenPositionsFor(*this); |
| 9232 } | 9213 } |
| (...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9954 GrowableHandlePtrArray<const String> pieces(zone, 3); | 9935 GrowableHandlePtrArray<const String> pieces(zone, 3); |
| 9955 pieces.Add(cname); | 9936 pieces.Add(cname); |
| 9956 pieces.Add(Symbols::At()); | 9937 pieces.Add(Symbols::At()); |
| 9957 pieces.Add(String::Handle(param.name())); | 9938 pieces.Add(String::Handle(param.name())); |
| 9958 return Symbols::FromConcatAll(thread, pieces); | 9939 return Symbols::FromConcatAll(thread, pieces); |
| 9959 } | 9940 } |
| 9960 | 9941 |
| 9961 void Library::AddMetadata(const Object& owner, | 9942 void Library::AddMetadata(const Object& owner, |
| 9962 const String& name, | 9943 const String& name, |
| 9963 TokenPosition token_pos, | 9944 TokenPosition token_pos, |
| 9964 intptr_t kernel_offset) const { | 9945 intptr_t kernel_offset, |
| 9946 const TypedData* kernel_data) const { |
| 9965 Thread* thread = Thread::Current(); | 9947 Thread* thread = Thread::Current(); |
| 9966 ASSERT(thread->IsMutatorThread()); | 9948 ASSERT(thread->IsMutatorThread()); |
| 9967 Zone* zone = thread->zone(); | 9949 Zone* zone = thread->zone(); |
| 9968 const String& metaname = String::Handle(zone, Symbols::New(thread, name)); | 9950 const String& metaname = String::Handle(zone, Symbols::New(thread, name)); |
| 9969 const Field& field = | 9951 const Field& field = |
| 9970 Field::Handle(zone, Field::NewTopLevel(metaname, | 9952 Field::Handle(zone, Field::NewTopLevel(metaname, |
| 9971 false, // is_final | 9953 false, // is_final |
| 9972 false, // is_const | 9954 false, // is_const |
| 9973 owner, token_pos)); | 9955 owner, token_pos)); |
| 9974 field.SetFieldType(Object::dynamic_type()); | 9956 field.SetFieldType(Object::dynamic_type()); |
| 9975 field.set_is_reflectable(false); | 9957 field.set_is_reflectable(false); |
| 9976 field.SetStaticValue(Array::empty_array(), true); | 9958 field.SetStaticValue(Array::empty_array(), true); |
| 9977 field.set_kernel_offset(kernel_offset); | 9959 field.set_kernel_offset(kernel_offset); |
| 9960 if (kernel_data != NULL) { |
| 9961 field.set_kernel_data(*kernel_data); |
| 9962 } |
| 9978 GrowableObjectArray& metadata = | 9963 GrowableObjectArray& metadata = |
| 9979 GrowableObjectArray::Handle(zone, this->metadata()); | 9964 GrowableObjectArray::Handle(zone, this->metadata()); |
| 9980 metadata.Add(field, Heap::kOld); | 9965 metadata.Add(field, Heap::kOld); |
| 9981 } | 9966 } |
| 9982 | 9967 |
| 9983 void Library::AddClassMetadata(const Class& cls, | 9968 void Library::AddClassMetadata(const Class& cls, |
| 9984 const Object& tl_owner, | 9969 const Object& tl_owner, |
| 9985 TokenPosition token_pos, | 9970 TokenPosition token_pos, |
| 9986 intptr_t kernel_offset) const { | 9971 intptr_t kernel_offset, |
| 9972 const TypedData* kernel_data) const { |
| 9987 Thread* thread = Thread::Current(); | 9973 Thread* thread = Thread::Current(); |
| 9988 Zone* zone = thread->zone(); | 9974 Zone* zone = thread->zone(); |
| 9989 // We use the toplevel class as the owner of a class's metadata field because | 9975 // We use the toplevel class as the owner of a class's metadata field because |
| 9990 // a class's metadata is in scope of the library, not the class. | 9976 // a class's metadata is in scope of the library, not the class. |
| 9991 AddMetadata(tl_owner, | 9977 AddMetadata(tl_owner, |
| 9992 String::Handle(zone, MakeClassMetaName(thread, zone, cls)), | 9978 String::Handle(zone, MakeClassMetaName(thread, zone, cls)), |
| 9993 token_pos, kernel_offset); | 9979 token_pos, kernel_offset, kernel_data); |
| 9994 } | 9980 } |
| 9995 | 9981 |
| 9996 void Library::AddFieldMetadata(const Field& field, | 9982 void Library::AddFieldMetadata(const Field& field, |
| 9997 TokenPosition token_pos, | 9983 TokenPosition token_pos, |
| 9998 intptr_t kernel_offset) const { | 9984 intptr_t kernel_offset, |
| 9985 const TypedData* kernel_data) const { |
| 9999 Thread* thread = Thread::Current(); | 9986 Thread* thread = Thread::Current(); |
| 10000 Zone* zone = thread->zone(); | 9987 Zone* zone = thread->zone(); |
| 10001 AddMetadata(Object::Handle(zone, field.RawOwner()), | 9988 AddMetadata(Object::Handle(zone, field.RawOwner()), |
| 10002 String::Handle(zone, MakeFieldMetaName(thread, zone, field)), | 9989 String::Handle(zone, MakeFieldMetaName(thread, zone, field)), |
| 10003 token_pos, kernel_offset); | 9990 token_pos, kernel_offset, kernel_data); |
| 10004 } | 9991 } |
| 10005 | 9992 |
| 10006 void Library::AddFunctionMetadata(const Function& func, | 9993 void Library::AddFunctionMetadata(const Function& func, |
| 10007 TokenPosition token_pos, | 9994 TokenPosition token_pos, |
| 10008 intptr_t kernel_offset) const { | 9995 intptr_t kernel_offset, |
| 9996 const TypedData* kernel_data) const { |
| 10009 Thread* thread = Thread::Current(); | 9997 Thread* thread = Thread::Current(); |
| 10010 Zone* zone = thread->zone(); | 9998 Zone* zone = thread->zone(); |
| 10011 AddMetadata(Object::Handle(zone, func.RawOwner()), | 9999 AddMetadata(Object::Handle(zone, func.RawOwner()), |
| 10012 String::Handle(zone, MakeFunctionMetaName(thread, zone, func)), | 10000 String::Handle(zone, MakeFunctionMetaName(thread, zone, func)), |
| 10013 token_pos, kernel_offset); | 10001 token_pos, kernel_offset, kernel_data); |
| 10014 } | 10002 } |
| 10015 | 10003 |
| 10016 void Library::AddTypeParameterMetadata(const TypeParameter& param, | 10004 void Library::AddTypeParameterMetadata(const TypeParameter& param, |
| 10017 TokenPosition token_pos) const { | 10005 TokenPosition token_pos) const { |
| 10018 Thread* thread = Thread::Current(); | 10006 Thread* thread = Thread::Current(); |
| 10019 Zone* zone = thread->zone(); | 10007 Zone* zone = thread->zone(); |
| 10020 AddMetadata( | 10008 AddMetadata( |
| 10021 Class::Handle(zone, param.parameterized_class()), | 10009 Class::Handle(zone, param.parameterized_class()), |
| 10022 String::Handle(zone, MakeTypeParameterMetaName(thread, zone, param)), | 10010 String::Handle(zone, MakeTypeParameterMetaName(thread, zone, param)), |
| 10023 token_pos); | 10011 token_pos); |
| (...skipping 12524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 22548 } | 22536 } |
| 22549 return UserTag::null(); | 22537 return UserTag::null(); |
| 22550 } | 22538 } |
| 22551 | 22539 |
| 22552 const char* UserTag::ToCString() const { | 22540 const char* UserTag::ToCString() const { |
| 22553 const String& tag_label = String::Handle(label()); | 22541 const String& tag_label = String::Handle(label()); |
| 22554 return tag_label.ToCString(); | 22542 return tag_label.ToCString(); |
| 22555 } | 22543 } |
| 22556 | 22544 |
| 22557 } // namespace dart | 22545 } // namespace dart |
| OLD | NEW |