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 "lib/invocation_mirror.h" | 5 #include "lib/invocation_mirror.h" |
6 #include "vm/bootstrap_natives.h" | 6 #include "vm/bootstrap_natives.h" |
7 #include "vm/class_finalizer.h" | 7 #include "vm/class_finalizer.h" |
8 #include "vm/compiler.h" | 8 #include "vm/compiler.h" |
9 #include "vm/dart_entry.h" | 9 #include "vm/dart_entry.h" |
10 #include "vm/exceptions.h" | 10 #include "vm/exceptions.h" |
(...skipping 1532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1543 | 1543 |
1544 DEFINE_NATIVE_ENTRY(InstanceMirror_computeType, 1) { | 1544 DEFINE_NATIVE_ENTRY(InstanceMirror_computeType, 1) { |
1545 GET_NON_NULL_NATIVE_ARGUMENT(Instance, instance, arguments->NativeArgAt(0)); | 1545 GET_NON_NULL_NATIVE_ARGUMENT(Instance, instance, arguments->NativeArgAt(0)); |
1546 const Type& type = Type::Handle(instance.GetType()); | 1546 const Type& type = Type::Handle(instance.GetType()); |
1547 // The static type of null is specified to be the bottom type, however, the | 1547 // The static type of null is specified to be the bottom type, however, the |
1548 // runtime type of null is the Null type, which we correctly return here. | 1548 // runtime type of null is the Null type, which we correctly return here. |
1549 return type.Canonicalize(); | 1549 return type.Canonicalize(); |
1550 } | 1550 } |
1551 | 1551 |
1552 | 1552 |
1553 DEFINE_NATIVE_ENTRY(ClosureMirror_apply, 2) { | |
1554 GET_NON_NULL_NATIVE_ARGUMENT(Array, args, arguments->NativeArgAt(0)); | |
1555 GET_NON_NULL_NATIVE_ARGUMENT(Array, arg_names, arguments->NativeArgAt(1)); | |
1556 | |
1557 const Array& args_descriptor = | |
1558 Array::Handle(ArgumentsDescriptor::New(args.Length(), arg_names)); | |
1559 | |
1560 const Object& result = | |
1561 Object::Handle(DartEntry::InvokeClosure(args, args_descriptor)); | |
1562 if (result.IsError()) { | |
1563 ThrowInvokeError(Error::Cast(result)); | |
1564 UNREACHABLE(); | |
1565 } | |
1566 return result.raw(); | |
1567 } | |
1568 | |
1569 | |
1570 DEFINE_NATIVE_ENTRY(ClosureMirror_find_in_context, 2) { | 1553 DEFINE_NATIVE_ENTRY(ClosureMirror_find_in_context, 2) { |
1571 if (!FLAG_support_find_in_context) { | 1554 if (!FLAG_support_find_in_context) { |
1572 return Object::empty_array().raw(); | 1555 return Object::empty_array().raw(); |
1573 } | 1556 } |
1574 | 1557 |
1575 GET_NON_NULL_NATIVE_ARGUMENT(Instance, closure, arguments->NativeArgAt(0)); | 1558 GET_NON_NULL_NATIVE_ARGUMENT(Instance, closure, arguments->NativeArgAt(0)); |
1576 GET_NON_NULL_NATIVE_ARGUMENT(Array, lookup_parts, arguments->NativeArgAt(1)); | 1559 GET_NON_NULL_NATIVE_ARGUMENT(Array, lookup_parts, arguments->NativeArgAt(1)); |
1577 ASSERT(lookup_parts.Length() >= 1 && lookup_parts.Length() <= 3); | 1560 ASSERT(lookup_parts.Length() >= 1 && lookup_parts.Length() <= 3); |
1578 | 1561 |
1579 if (!closure.IsClosure()) { | 1562 if (!closure.IsClosure()) { |
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2212 } | 2195 } |
2213 | 2196 |
2214 DEFINE_NATIVE_ENTRY(TypeMirror_moreSpecificTest, 2) { | 2197 DEFINE_NATIVE_ENTRY(TypeMirror_moreSpecificTest, 2) { |
2215 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0)); | 2198 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0)); |
2216 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1)); | 2199 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1)); |
2217 return Bool::Get(a.IsMoreSpecificThan(b, NULL)).raw(); | 2200 return Bool::Get(a.IsMoreSpecificThan(b, NULL)).raw(); |
2218 } | 2201 } |
2219 | 2202 |
2220 | 2203 |
2221 } // namespace dart | 2204 } // namespace dart |
OLD | NEW |