| 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 "lib/stacktrace.h" | 10 #include "lib/stacktrace.h" |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 public: | 117 public: |
| 118 explicit CheckFunctionTypesVisitor(Thread* thread) | 118 explicit CheckFunctionTypesVisitor(Thread* thread) |
| 119 : classHandle_(Class::Handle(thread->zone())), | 119 : classHandle_(Class::Handle(thread->zone())), |
| 120 funcHandle_(Function::Handle(thread->zone())), | 120 funcHandle_(Function::Handle(thread->zone())), |
| 121 typeHandle_(AbstractType::Handle(thread->zone())) {} | 121 typeHandle_(AbstractType::Handle(thread->zone())) {} |
| 122 | 122 |
| 123 void VisitObject(RawObject* obj) { | 123 void VisitObject(RawObject* obj) { |
| 124 if (obj->IsFunction()) { | 124 if (obj->IsFunction()) { |
| 125 funcHandle_ ^= obj; | 125 funcHandle_ ^= obj; |
| 126 classHandle_ ^= funcHandle_.Owner(); | 126 classHandle_ ^= funcHandle_.Owner(); |
| 127 // Signature functions get created, but not canonicalized, when function |
| 128 // types get instantiated during run time type tests. |
| 129 if (funcHandle_.IsSignatureFunction()) { |
| 130 return; |
| 131 } |
| 127 // Verify that the result type of a function is canonical or a | 132 // Verify that the result type of a function is canonical or a |
| 128 // TypeParameter. | 133 // TypeParameter. |
| 129 typeHandle_ ^= funcHandle_.result_type(); | 134 typeHandle_ ^= funcHandle_.result_type(); |
| 130 ASSERT(typeHandle_.IsMalformed() || !typeHandle_.IsResolved() || | 135 ASSERT(typeHandle_.IsMalformed() || !typeHandle_.IsResolved() || |
| 131 typeHandle_.IsTypeParameter() || typeHandle_.IsCanonical()); | 136 typeHandle_.IsTypeParameter() || typeHandle_.IsCanonical()); |
| 132 // Verify that the types in the function signature are all canonical or | 137 // Verify that the types in the function signature are all canonical or |
| 133 // a TypeParameter. | 138 // a TypeParameter. |
| 134 const intptr_t num_parameters = funcHandle_.NumParameters(); | 139 const intptr_t num_parameters = funcHandle_.NumParameters(); |
| 135 for (intptr_t i = 0; i < num_parameters; i++) { | 140 for (intptr_t i = 0; i < num_parameters; i++) { |
| 136 typeHandle_ = funcHandle_.ParameterTypeAt(i); | 141 typeHandle_ = funcHandle_.ParameterTypeAt(i); |
| (...skipping 6695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6832 } | 6837 } |
| 6833 | 6838 |
| 6834 | 6839 |
| 6835 DART_EXPORT void Dart_DumpNativeStackTrace(void* context) { | 6840 DART_EXPORT void Dart_DumpNativeStackTrace(void* context) { |
| 6836 #ifndef PRODUCT | 6841 #ifndef PRODUCT |
| 6837 Profiler::DumpStackTrace(context); | 6842 Profiler::DumpStackTrace(context); |
| 6838 #endif | 6843 #endif |
| 6839 } | 6844 } |
| 6840 | 6845 |
| 6841 } // namespace dart | 6846 } // namespace dart |
| OLD | NEW |