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/mirrors.h" | 5 #include "lib/mirrors.h" |
6 | 6 |
7 #include "lib/invocation_mirror.h" | 7 #include "lib/invocation_mirror.h" |
8 #include "vm/bootstrap_natives.h" | 8 #include "vm/bootstrap_natives.h" |
9 #include "vm/class_finalizer.h" | 9 #include "vm/class_finalizer.h" |
10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 if (!func.IsGenerativeConstructor()) return; | 88 if (!func.IsGenerativeConstructor()) return; |
89 | 89 |
90 Thread* thread = Thread::Current(); | 90 Thread* thread = Thread::Current(); |
91 Zone* zone = thread->zone(); | 91 Zone* zone = thread->zone(); |
92 const Class& cls = Class::Handle(zone, func.Owner()); | 92 const Class& cls = Class::Handle(zone, func.Owner()); |
93 const Error& error = Error::Handle(zone, cls.EnsureIsFinalized(thread)); | 93 const Error& error = Error::Handle(zone, cls.EnsureIsFinalized(thread)); |
94 if (!error.IsNull()) { | 94 if (!error.IsNull()) { |
95 Exceptions::PropagateError(error); | 95 Exceptions::PropagateError(error); |
96 UNREACHABLE(); | 96 UNREACHABLE(); |
97 } | 97 } |
98 if (!func.HasCode()) { | 98 func.EnsureHasCode(); |
99 const Error& error = | |
100 Error::Handle(zone, Compiler::CompileFunction(thread, func)); | |
101 if (!error.IsNull()) { | |
102 Exceptions::PropagateError(error); | |
103 UNREACHABLE(); | |
104 } | |
105 } | |
106 } | 99 } |
107 | 100 |
108 static RawInstance* CreateParameterMirrorList(const Function& func, | 101 static RawInstance* CreateParameterMirrorList(const Function& func, |
109 const Instance& owner_mirror) { | 102 const Instance& owner_mirror) { |
110 HANDLESCOPE(Thread::Current()); | 103 HANDLESCOPE(Thread::Current()); |
111 const intptr_t implicit_param_count = func.NumImplicitParameters(); | 104 const intptr_t implicit_param_count = func.NumImplicitParameters(); |
112 const intptr_t non_implicit_param_count = | 105 const intptr_t non_implicit_param_count = |
113 func.NumParameters() - implicit_param_count; | 106 func.NumParameters() - implicit_param_count; |
114 const intptr_t index_of_first_optional_param = | 107 const intptr_t index_of_first_optional_param = |
115 non_implicit_param_count - func.NumOptionalParameters(); | 108 non_implicit_param_count - func.NumOptionalParameters(); |
(...skipping 1978 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2094 | 2087 |
2095 DEFINE_NATIVE_ENTRY(TypeMirror_subtypeTest, 2) { | 2088 DEFINE_NATIVE_ENTRY(TypeMirror_subtypeTest, 2) { |
2096 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0)); | 2089 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0)); |
2097 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1)); | 2090 GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1)); |
2098 return Bool::Get(a.IsSubtypeOf(b, NULL, NULL, Heap::kNew)).raw(); | 2091 return Bool::Get(a.IsSubtypeOf(b, NULL, NULL, Heap::kNew)).raw(); |
2099 } | 2092 } |
2100 | 2093 |
2101 #endif // !PRODUCT && !DART_PRECOMPILED_RUNTIME | 2094 #endif // !PRODUCT && !DART_PRECOMPILED_RUNTIME |
2102 | 2095 |
2103 } // namespace dart | 2096 } // namespace dart |
OLD | NEW |