| 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);
|
| }
|
|
|
|
|
|
|