Index: runtime/bin/dartutils.h |
diff --git a/runtime/bin/dartutils.h b/runtime/bin/dartutils.h |
index f375bacabb0ab73db132e2bf4e18e174e1096ae5..95d44c93aec68ef539f8f505f584d92ff3bef315 100644 |
--- a/runtime/bin/dartutils.h |
+++ b/runtime/bin/dartutils.h |
@@ -10,6 +10,19 @@ |
#include "include/dart_api.h" |
#include "platform/globals.h" |
+/* Handles error handles returned from Dart API functions. If a value |
+ * is an error, uses Dart_PropagateError to throw it to the enclosing |
+ * Dart activation. Otherwise, returns the original handle. |
+ * |
+ * This function can be used to wrap most API functions, but API |
+ * functions can also be nested without this error check, since all |
+ * API functions return any error handles passed in as arguments, unchanged. |
+ */ |
+static inline Dart_Handle ThrowIfError(Dart_Handle handle) { |
+ if (Dart_IsError(handle)) Dart_PropagateError(handle); |
+ return handle; |
+} |
+ |
class CommandLineOptions { |
public: |
explicit CommandLineOptions(int max_count) |
@@ -105,14 +118,22 @@ class DartUtils { |
static bool PostNull(Dart_Port port_id); |
static bool PostInt32(Dart_Port port_id, int32_t value); |
+ static Dart_Handle GetDartClass(const char* library_url, |
+ const char* class_name); |
// Create a new Dart OSError object with the current OS error. |
static Dart_Handle NewDartOSError(); |
// Create a new Dart OSError object with the provided OS error. |
static Dart_Handle NewDartOSError(OSError* os_error); |
+ static Dart_Handle NewDartSocketIOException(const char* message, |
+ Dart_Handle os_error); |
+ static Dart_Handle NewDartExceptionWithMessage(const char* library_url, |
+ const char* exception_name, |
+ const char* message); |
+ static Dart_Handle NewDartArgumentError(const char* message); |
// Create a new Dart String object from a C String. |
static Dart_Handle NewString(const char* str) { |
- ASSERT((str != NULL) && (strlen(str) != 0)); |
+ ASSERT(str != NULL); |
return Dart_NewStringFromUTF8(reinterpret_cast<const uint8_t*>(str), |
strlen(str)); |
} |