[V8] QtScript/V8: Add new v8 api to check if a value is an error.
authorJedrzej Nowacki <jedrzej.nowacki@nokia.com>
Tue, 7 Dec 2010 10:56:42 +0000 (11:56 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 13 Jun 2012 07:57:09 +0000 (09:57 +0200)
New function v8::Value::IsError was created.

This API is experimental and added only for the purposes of our
research.

Change-Id: Id2f5a6728d15fc02ae3c03e6b49928afed0f62fa
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
src/3rdparty/v8/include/v8.h
src/3rdparty/v8/src/api.cc
src/3rdparty/v8/src/heap.h

index fbb348f..5be96f6 100644 (file)
@@ -970,6 +970,11 @@ class Value : public Data {
    */
   V8EXPORT bool IsRegExp() const;
 
+  /**
+   * Returns true if this value is an Error.
+   */
+  V8EXPORT bool IsError() const;
+
   V8EXPORT Local<Boolean> ToBoolean() const;
   V8EXPORT Local<Number> ToNumber() const;
   V8EXPORT Local<String> ToString() const;
index d681328..1becc61 100644 (file)
@@ -2366,6 +2366,12 @@ bool Value::IsRegExp() const {
   return obj->IsJSRegExp();
 }
 
+bool Value::IsError() const {
+  if (IsDeadCheck(i::Isolate::Current(), "v8::Value::IsError()")) return false;
+  i::Handle<i::Object> obj = Utils::OpenHandle(this);
+  return obj->HasSpecificClassOf(HEAP->Error_symbol());
+}
+
 
 Local<String> Value::ToString() const {
   i::Handle<i::Object> obj = Utils::OpenHandle(this);
index ba53909..0e744e4 100644 (file)
@@ -197,6 +197,7 @@ namespace internal {
   V(string_symbol, "string")                                             \
   V(String_symbol, "String")                                             \
   V(Date_symbol, "Date")                                                 \
+  V(Error_symbol, "Error")                                               \
   V(this_symbol, "this")                                                 \
   V(to_string_symbol, "toString")                                        \
   V(char_at_symbol, "CharAt")                                            \