From be32caa7a1e50bc9fd6fb370138c6f64a8fb8763 Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Tue, 7 Dec 2010 11:56:42 +0100 Subject: [PATCH] [V8] QtScript/V8: Add new v8 api to check if a value is an error. New function v8::Value::IsError was created. This API is experimental and added only for the purposes of our research. Change-Id: I8f20d46bd81b18bcd7a7c2f7cfc25775d82a6834 Reviewed-by: Simon Hausmann --- src/3rdparty/v8/include/v8.h | 5 +++++ src/3rdparty/v8/src/api.cc | 6 ++++++ src/3rdparty/v8/src/heap.h | 1 + 3 files changed, 12 insertions(+) diff --git a/src/3rdparty/v8/include/v8.h b/src/3rdparty/v8/include/v8.h index 229ddbd..d995e54 100644 --- a/src/3rdparty/v8/include/v8.h +++ b/src/3rdparty/v8/include/v8.h @@ -967,6 +967,11 @@ class Value : public Data { */ V8EXPORT bool IsRegExp() const; + /** + * Returns true if this value is an Error. + */ + V8EXPORT bool IsError() const; + V8EXPORT Local ToBoolean() const; V8EXPORT Local ToNumber() const; V8EXPORT Local ToString() const; diff --git a/src/3rdparty/v8/src/api.cc b/src/3rdparty/v8/src/api.cc index d31ff9a..9f42ff9 100644 --- a/src/3rdparty/v8/src/api.cc +++ b/src/3rdparty/v8/src/api.cc @@ -2316,6 +2316,12 @@ bool Value::IsRegExp() const { return obj->IsJSRegExp(); } +bool Value::IsError() const { + if (IsDeadCheck(i::Isolate::Current(), "v8::Value::IsError()")) return false; + i::Handle obj = Utils::OpenHandle(this); + return obj->HasSpecificClassOf(HEAP->Error_symbol()); +} + Local Value::ToString() const { i::Handle obj = Utils::OpenHandle(this); diff --git a/src/3rdparty/v8/src/heap.h b/src/3rdparty/v8/src/heap.h index 5e90964..6166cde 100644 --- a/src/3rdparty/v8/src/heap.h +++ b/src/3rdparty/v8/src/heap.h @@ -190,6 +190,7 @@ inline Heap* _inline_get_heap_(); 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") \ -- 2.7.4