Index: runtime/bin/dartutils.cc |
diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc |
index 757f29d72e25b76281906d20d9b5ea4d15c3e631..f185437479360de525c7ab9d4407920311fe8c6b 100644 |
--- a/runtime/bin/dartutils.cc |
+++ b/runtime/bin/dartutils.cc |
@@ -484,6 +484,13 @@ bool DartUtils::PostInt32(Dart_Port port_id, int32_t value) { |
} |
+Dart_Handle DartUtils::GetDartClass(const char* library_url, |
+ const char* class_name) { |
+ return Dart_GetClass(Dart_LookupLibrary(NewString(library_url)), |
+ NewString(class_name)); |
+} |
+ |
+ |
Dart_Handle DartUtils::NewDartOSError() { |
// Extract the current OS error. |
OSError os_error; |
@@ -492,22 +499,41 @@ Dart_Handle DartUtils::NewDartOSError() { |
Dart_Handle DartUtils::NewDartOSError(OSError* os_error) { |
- // Create a Dart OSError object with the information retrieved from the OS. |
- Dart_Handle url = NewString("dart:io"); |
- if (Dart_IsError(url)) return url; |
- Dart_Handle lib = Dart_LookupLibrary(url); |
- if (Dart_IsError(lib)) return lib; |
- Dart_Handle class_name = NewString("OSError"); |
- if (Dart_IsError(class_name)) return class_name; |
- Dart_Handle clazz = Dart_GetClass(lib, class_name); |
- if (Dart_IsError(clazz)) return clazz; |
+ // Create a dart:io OSError object with the information retrieved from the OS. |
+ Dart_Handle clazz = GetDartClass(kIOLibURL, "OSError"); |
Dart_Handle args[2]; |
args[0] = NewString(os_error->message()); |
- if (Dart_IsError(args[0])) return args[0]; |
args[1] = Dart_NewInteger(os_error->code()); |
- if (Dart_IsError(args[1])) return args[1]; |
- Dart_Handle err = Dart_New(clazz, Dart_Null(), 2, args); |
- return err; |
+ return Dart_New(clazz, Dart_Null(), 2, args); |
+} |
+ |
+ |
+Dart_Handle DartUtils::NewDartSocketIOException(const char* message, |
+ Dart_Handle os_error) { |
+ // Create a dart:io SocketIOException object. |
+ Dart_Handle clazz = GetDartClass(kIOLibURL, "SocketIOException"); |
+ Dart_Handle args[2]; |
+ args[0] = NewString(message); |
+ args[1] = os_error; |
+ return Dart_New(clazz, Dart_Null(), 2, args); |
+} |
+ |
+ |
+Dart_Handle DartUtils::NewDartExceptionWithMessage(const char* library_url, |
+ const char* exception_name, |
+ const char* message) { |
+ // Create a Dart Exception object with a message. |
+ Dart_Handle clazz = GetDartClass(library_url, exception_name); |
+ Dart_Handle args[1]; |
+ args[0] = NewString(message); |
+ return Dart_New(clazz, Dart_Null(), 1, args); |
+} |
+ |
+ |
+Dart_Handle DartUtils::NewDartArgumentError(const char* message) { |
+ return NewDartExceptionWithMessage(kCoreLibURL, |
+ "ArgumentError", |
+ message); |
} |