| 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/unit_test.h" | 5 #include "vm/unit_test.h" |
| 6 | 6 |
| 7 #include <stdio.h> | 7 #include <stdio.h> |
| 8 | 8 |
| 9 #include "bin/builtin.h" | 9 #include "bin/builtin.h" |
| 10 #include "bin/dartutils.h" | 10 #include "bin/dartutils.h" |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 } | 207 } |
| 208 return NULL; | 208 return NULL; |
| 209 } | 209 } |
| 210 | 210 |
| 211 static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag, | 211 static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag, |
| 212 Dart_Handle library, | 212 Dart_Handle library, |
| 213 Dart_Handle url) { | 213 Dart_Handle url) { |
| 214 if (FLAG_use_dart_frontend) { | 214 if (FLAG_use_dart_frontend) { |
| 215 // Reload request. | 215 // Reload request. |
| 216 | 216 |
| 217 ASSERT(tag == Dart_kKernelTag); |
| 217 const char* urlstr = NULL; | 218 const char* urlstr = NULL; |
| 218 Dart_Handle result = Dart_StringToCString(url, &urlstr); | 219 Dart_Handle result = Dart_StringToCString(url, &urlstr); |
| 219 if (Dart_IsError(result)) { | 220 if (Dart_IsError(result)) { |
| 220 return Dart_NewApiError("accessing url characters failed"); | 221 return Dart_NewApiError("accessing url characters failed"); |
| 221 } | 222 } |
| 222 | 223 |
| 223 // Updated library either arrives as dart source or as | 224 // Updated library either arrives as dart source or as |
| 224 // a precompiled kernel binary. | 225 // a precompiled kernel binary. |
| 225 void* kernel_pgm; | 226 void* kernel_pgm; |
| 226 if (script_reload_key != kUnsetThreadLocalKey) { | 227 if (script_reload_key != kUnsetThreadLocalKey) { |
| 227 const char* script_source = reinterpret_cast<const char*>( | 228 const char* script_source = reinterpret_cast<const char*>( |
| 228 OSThread::GetThreadLocal(script_reload_key)); | 229 OSThread::GetThreadLocal(script_reload_key)); |
| 229 ASSERT(script_source != NULL); | 230 ASSERT(script_source != NULL); |
| 230 OSThread::SetThreadLocal(script_reload_key, 0); | 231 OSThread::SetThreadLocal(script_reload_key, 0); |
| 231 char* error = TestCase::CompileTestScriptWithDFE(urlstr, script_source, | 232 char* error = TestCase::CompileTestScriptWithDFE(urlstr, script_source, |
| 232 &kernel_pgm); | 233 &kernel_pgm); |
| 233 if (error != NULL) { | 234 if (error != NULL) { |
| 234 return Dart_NewApiError(error); | 235 return Dart_NewApiError(error); |
| 235 } | 236 } |
| 236 } else { | 237 } else { |
| 237 ASSERT(kernel_reload_key != kUnsetThreadLocalKey); | 238 ASSERT(kernel_reload_key != kUnsetThreadLocalKey); |
| 238 kernel_pgm = | 239 kernel_pgm = |
| 239 reinterpret_cast<void*>(OSThread::GetThreadLocal(kernel_reload_key)); | 240 reinterpret_cast<void*>(OSThread::GetThreadLocal(kernel_reload_key)); |
| 240 ASSERT(kernel_pgm != NULL); | |
| 241 OSThread::SetThreadLocal(kernel_reload_key, 0); | 241 OSThread::SetThreadLocal(kernel_reload_key, 0); |
| 242 } | 242 } |
| 243 return Dart_LoadScript(url, Dart_Null(), | 243 ASSERT(kernel_pgm != NULL); |
| 244 reinterpret_cast<Dart_Handle>(kernel_pgm), 0, 0); | 244 return Dart_NewExternalTypedData(Dart_TypedData_kUint64, kernel_pgm, 1); |
| 245 } | 245 } |
| 246 if (tag == Dart_kCanonicalizeUrl) { | 246 if (tag == Dart_kCanonicalizeUrl) { |
| 247 Dart_Handle library_url = Dart_LibraryUrl(library); | 247 Dart_Handle library_url = Dart_LibraryUrl(library); |
| 248 if (Dart_IsError(library_url)) { | 248 if (Dart_IsError(library_url)) { |
| 249 return library_url; | 249 return library_url; |
| 250 } | 250 } |
| 251 return Dart_DefaultCanonicalizeUrl(library_url, url); | 251 return Dart_DefaultCanonicalizeUrl(library_url, url); |
| 252 } | 252 } |
| 253 if (tag == Dart_kScriptTag) { | 253 if (tag == Dart_kScriptTag) { |
| 254 // Reload request. | 254 // Reload request. |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 pos = strstr(in, prefix); | 622 pos = strstr(in, prefix); |
| 623 } | 623 } |
| 624 // Copy the remainder of in to out. | 624 // Copy the remainder of in to out. |
| 625 while (*in != '\0') { | 625 while (*in != '\0') { |
| 626 *out++ = *in++; | 626 *out++ = *in++; |
| 627 } | 627 } |
| 628 *out = '\0'; | 628 *out = '\0'; |
| 629 } | 629 } |
| 630 | 630 |
| 631 } // namespace dart | 631 } // namespace dart |
| OLD | NEW |