| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 "include/dart_api.h" | 5 #include "include/dart_api.h" |
| 6 #include "include/dart_mirrors_api.h" | 6 #include "include/dart_mirrors_api.h" |
| 7 #include "include/dart_native_api.h" | 7 #include "include/dart_native_api.h" |
| 8 | 8 |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "vm/class_finalizer.h" | 10 #include "vm/class_finalizer.h" |
| (...skipping 4374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4385 const String& getter_name = | 4385 const String& getter_name = |
| 4386 String::Handle(isolate, Field::GetterName(field_name)); | 4386 String::Handle(isolate, Field::GetterName(field_name)); |
| 4387 getter = cls.LookupStaticFunctionAllowPrivate(getter_name); | 4387 getter = cls.LookupStaticFunctionAllowPrivate(getter_name); |
| 4388 } | 4388 } |
| 4389 | 4389 |
| 4390 if (!getter.IsNull()) { | 4390 if (!getter.IsNull()) { |
| 4391 // Invoke the getter and return the result. | 4391 // Invoke the getter and return the result. |
| 4392 return Api::NewHandle( | 4392 return Api::NewHandle( |
| 4393 isolate, DartEntry::InvokeFunction(getter, Object::empty_array())); | 4393 isolate, DartEntry::InvokeFunction(getter, Object::empty_array())); |
| 4394 } else if (!field.IsNull()) { | 4394 } else if (!field.IsNull()) { |
| 4395 return Api::NewHandle(isolate, field.value()); | 4395 return Api::NewHandle(isolate, field.StaticFieldValue()); |
| 4396 } else { | 4396 } else { |
| 4397 return Api::NewError("%s: did not find static field '%s'.", | 4397 return Api::NewError("%s: did not find static field '%s'.", |
| 4398 CURRENT_FUNC, field_name.ToCString()); | 4398 CURRENT_FUNC, field_name.ToCString()); |
| 4399 } | 4399 } |
| 4400 | 4400 |
| 4401 } else if (obj.IsInstance()) { | 4401 } else if (obj.IsInstance()) { |
| 4402 // Every instance field has a getter Function. Try to find the | 4402 // Every instance field has a getter Function. Try to find the |
| 4403 // getter in any superclass and use that function to access the | 4403 // getter in any superclass and use that function to access the |
| 4404 // field. | 4404 // field. |
| 4405 const Instance& instance = Instance::Cast(obj); | 4405 const Instance& instance = Instance::Cast(obj); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4453 String::Handle(isolate, Field::GetterName(field_name)); | 4453 String::Handle(isolate, Field::GetterName(field_name)); |
| 4454 getter = cls.LookupStaticFunctionAllowPrivate(getter_name); | 4454 getter = cls.LookupStaticFunctionAllowPrivate(getter_name); |
| 4455 } | 4455 } |
| 4456 | 4456 |
| 4457 if (!getter.IsNull()) { | 4457 if (!getter.IsNull()) { |
| 4458 // Invoke the getter and return the result. | 4458 // Invoke the getter and return the result. |
| 4459 return Api::NewHandle( | 4459 return Api::NewHandle( |
| 4460 isolate, DartEntry::InvokeFunction(getter, Object::empty_array())); | 4460 isolate, DartEntry::InvokeFunction(getter, Object::empty_array())); |
| 4461 } | 4461 } |
| 4462 if (!field.IsNull()) { | 4462 if (!field.IsNull()) { |
| 4463 return Api::NewHandle(isolate, field.value()); | 4463 return Api::NewHandle(isolate, field.StaticFieldValue()); |
| 4464 } | 4464 } |
| 4465 return Api::NewError("%s: did not find top-level variable '%s'.", | 4465 return Api::NewError("%s: did not find top-level variable '%s'.", |
| 4466 CURRENT_FUNC, field_name.ToCString()); | 4466 CURRENT_FUNC, field_name.ToCString()); |
| 4467 | 4467 |
| 4468 } else if (obj.IsError()) { | 4468 } else if (obj.IsError()) { |
| 4469 return container; | 4469 return container; |
| 4470 } else { | 4470 } else { |
| 4471 return Api::NewError( | 4471 return Api::NewError( |
| 4472 "%s expects argument 'container' to be an object, type, or library.", | 4472 "%s expects argument 'container' to be an object, type, or library.", |
| 4473 CURRENT_FUNC); | 4473 CURRENT_FUNC); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4529 if (result.IsError()) { | 4529 if (result.IsError()) { |
| 4530 return Api::NewHandle(isolate, result.raw()); | 4530 return Api::NewHandle(isolate, result.raw()); |
| 4531 } else { | 4531 } else { |
| 4532 return Api::Success(); | 4532 return Api::Success(); |
| 4533 } | 4533 } |
| 4534 } else if (!field.IsNull()) { | 4534 } else if (!field.IsNull()) { |
| 4535 if (field.is_final()) { | 4535 if (field.is_final()) { |
| 4536 return Api::NewError("%s: cannot set final field '%s'.", | 4536 return Api::NewError("%s: cannot set final field '%s'.", |
| 4537 CURRENT_FUNC, field_name.ToCString()); | 4537 CURRENT_FUNC, field_name.ToCString()); |
| 4538 } else { | 4538 } else { |
| 4539 field.set_value(value_instance); | 4539 field.SetStaticFieldValue(value_instance); |
| 4540 return Api::Success(); | 4540 return Api::Success(); |
| 4541 } | 4541 } |
| 4542 } else { | 4542 } else { |
| 4543 return Api::NewError("%s: did not find static field '%s'.", | 4543 return Api::NewError("%s: did not find static field '%s'.", |
| 4544 CURRENT_FUNC, field_name.ToCString()); | 4544 CURRENT_FUNC, field_name.ToCString()); |
| 4545 } | 4545 } |
| 4546 | 4546 |
| 4547 } else if (obj.IsInstance()) { | 4547 } else if (obj.IsInstance()) { |
| 4548 // Every instance field has a setter Function. Try to find the | 4548 // Every instance field has a setter Function. Try to find the |
| 4549 // setter in any superclass and use that function to access the | 4549 // setter in any superclass and use that function to access the |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4609 if (result.IsError()) { | 4609 if (result.IsError()) { |
| 4610 return Api::NewHandle(isolate, result.raw()); | 4610 return Api::NewHandle(isolate, result.raw()); |
| 4611 } | 4611 } |
| 4612 return Api::Success(); | 4612 return Api::Success(); |
| 4613 } | 4613 } |
| 4614 if (!field.IsNull()) { | 4614 if (!field.IsNull()) { |
| 4615 if (field.is_final()) { | 4615 if (field.is_final()) { |
| 4616 return Api::NewError("%s: cannot set final top-level variable '%s'.", | 4616 return Api::NewError("%s: cannot set final top-level variable '%s'.", |
| 4617 CURRENT_FUNC, field_name.ToCString()); | 4617 CURRENT_FUNC, field_name.ToCString()); |
| 4618 } | 4618 } |
| 4619 field.set_value(value_instance); | 4619 field.SetStaticFieldValue(value_instance); |
| 4620 return Api::Success(); | 4620 return Api::Success(); |
| 4621 } | 4621 } |
| 4622 return Api::NewError("%s: did not find top-level variable '%s'.", | 4622 return Api::NewError("%s: did not find top-level variable '%s'.", |
| 4623 CURRENT_FUNC, field_name.ToCString()); | 4623 CURRENT_FUNC, field_name.ToCString()); |
| 4624 | 4624 |
| 4625 } else if (obj.IsError()) { | 4625 } else if (obj.IsError()) { |
| 4626 return container; | 4626 return container; |
| 4627 } | 4627 } |
| 4628 return Api::NewError( | 4628 return Api::NewError( |
| 4629 "%s expects argument 'container' to be an object, type, or library.", | 4629 "%s expects argument 'container' to be an object, type, or library.", |
| (...skipping 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5667 // The code that completes the futures (invoked below) may call into the | 5667 // The code that completes the futures (invoked below) may call into the |
| 5668 // newly loaded code and trigger one of these breakpoints. | 5668 // newly loaded code and trigger one of these breakpoints. |
| 5669 isolate->debugger()->NotifyDoneLoading(); | 5669 isolate->debugger()->NotifyDoneLoading(); |
| 5670 | 5670 |
| 5671 // Notify mirrors that MirrorSystem.libraries needs to be recomputed. | 5671 // Notify mirrors that MirrorSystem.libraries needs to be recomputed. |
| 5672 const Library& libmirrors = | 5672 const Library& libmirrors = |
| 5673 Library::Handle(isolate, Library::MirrorsLibrary()); | 5673 Library::Handle(isolate, Library::MirrorsLibrary()); |
| 5674 const Field& dirty_bit = Field::Handle(isolate, | 5674 const Field& dirty_bit = Field::Handle(isolate, |
| 5675 libmirrors.LookupLocalField(String::Handle(String::New("dirty")))); | 5675 libmirrors.LookupLocalField(String::Handle(String::New("dirty")))); |
| 5676 ASSERT(!dirty_bit.IsNull() && dirty_bit.is_static()); | 5676 ASSERT(!dirty_bit.IsNull() && dirty_bit.is_static()); |
| 5677 dirty_bit.set_value(Bool::True()); | 5677 dirty_bit.SetStaticFieldValue(Bool::True()); |
| 5678 | 5678 |
| 5679 if (complete_futures) { | 5679 if (complete_futures) { |
| 5680 const Library& corelib = Library::Handle(isolate, Library::CoreLibrary()); | 5680 const Library& corelib = Library::Handle(isolate, Library::CoreLibrary()); |
| 5681 const String& function_name = | 5681 const String& function_name = |
| 5682 String::Handle(isolate, String::New("_completeDeferredLoads")); | 5682 String::Handle(isolate, String::New("_completeDeferredLoads")); |
| 5683 const Function& function = | 5683 const Function& function = |
| 5684 Function::Handle(isolate, | 5684 Function::Handle(isolate, |
| 5685 corelib.LookupFunctionAllowPrivate(function_name)); | 5685 corelib.LookupFunctionAllowPrivate(function_name)); |
| 5686 ASSERT(!function.IsNull()); | 5686 ASSERT(!function.IsNull()); |
| 5687 const Array& args = Array::empty_array(); | 5687 const Array& args = Array::empty_array(); |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6038 ASSERT(stream != NULL); | 6038 ASSERT(stream != NULL); |
| 6039 TimelineEvent* event = stream->StartEvent(); | 6039 TimelineEvent* event = stream->StartEvent(); |
| 6040 if (event != NULL) { | 6040 if (event != NULL) { |
| 6041 event->AsyncEnd(label, async_id); | 6041 event->AsyncEnd(label, async_id); |
| 6042 event->Complete(); | 6042 event->Complete(); |
| 6043 } | 6043 } |
| 6044 return Api::Success(); | 6044 return Api::Success(); |
| 6045 } | 6045 } |
| 6046 | 6046 |
| 6047 } // namespace dart | 6047 } // namespace dart |
| OLD | NEW |