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/bootstrap.h" | 5 #include "vm/bootstrap.h" |
6 | 6 |
7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
8 | 8 |
9 #include "vm/bootstrap_natives.h" | 9 #include "vm/bootstrap_natives.h" |
10 #include "vm/class_finalizer.h" | 10 #include "vm/class_finalizer.h" |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 const Error& error = Error::Handle(zone, Compile(lib, part_script)); | 202 const Error& error = Error::Handle(zone, Compile(lib, part_script)); |
203 return Api::NewHandle(thread, error.raw()); | 203 return Api::NewHandle(thread, error.raw()); |
204 } | 204 } |
205 | 205 |
206 | 206 |
207 static Dart_Handle BootstrapLibraryTagHandler(Dart_LibraryTag tag, | 207 static Dart_Handle BootstrapLibraryTagHandler(Dart_LibraryTag tag, |
208 Dart_Handle library, | 208 Dart_Handle library, |
209 Dart_Handle uri) { | 209 Dart_Handle uri) { |
210 Thread* thread = Thread::Current(); | 210 Thread* thread = Thread::Current(); |
211 Zone* zone = thread->zone(); | 211 Zone* zone = thread->zone(); |
| 212 // This handler calls into the VM directly and does not use the Dart |
| 213 // API so we transition back to VM. |
| 214 TransitionNativeToVM transition(thread); |
212 if (!Dart_IsLibrary(library)) { | 215 if (!Dart_IsLibrary(library)) { |
213 return Api::NewError("not a library"); | 216 return Api::NewError("not a library"); |
214 } | 217 } |
215 if (!Dart_IsString(uri)) { | 218 if (!Dart_IsString(uri)) { |
216 return Api::NewError("uri is not a string"); | 219 return Api::NewError("uri is not a string"); |
217 } | 220 } |
218 if (tag == Dart_kCanonicalizeUrl) { | 221 if (tag == Dart_kCanonicalizeUrl) { |
219 // In the bootstrap loader we do not try and do any canonicalization. | 222 // In the bootstrap loader we do not try and do any canonicalization. |
220 return uri; | 223 return uri; |
221 } | 224 } |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 Compiler::CompileClass(cls); | 350 Compiler::CompileClass(cls); |
348 } | 351 } |
349 | 352 |
350 // Restore the library tag handler for the isolate. | 353 // Restore the library tag handler for the isolate. |
351 isolate->set_library_tag_handler(saved_tag_handler); | 354 isolate->set_library_tag_handler(saved_tag_handler); |
352 | 355 |
353 return error.raw(); | 356 return error.raw(); |
354 } | 357 } |
355 | 358 |
356 } // namespace dart | 359 } // namespace dart |
OLD | NEW |