Version 2.3.7
Reduced size of heap snapshots produced by heap profiler (issue 783).
Introduced v8::Value::IsRegExp method.
Fixed CPU profiler crash in start / stop sequence when non-existent name is passed (issue http://crbug.com/51594).
Introduced new indexed property query callbacks API (issue 816). This API is guarded by USE_NEW_QUERY_CALLBACK define and is disabled by default.
Removed support for object literal get/set with number/string property name.
Fixed handling of JSObject::elements in CalculateNetworkSize (issue 822).
Allow compiling with strict aliasing enabled on GCC 4.4 (issue 463).
git-svn-id: http://v8.googlecode.com/svn/trunk@5241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
diff --git a/include/v8.h b/include/v8.h
index 3ac10ab..20cef79 100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -919,6 +919,11 @@
*/
V8EXPORT bool IsDate() const;
+ /**
+ * Returns true if this value is a RegExp.
+ */
+ V8EXPORT bool IsRegExp() const;
+
V8EXPORT Local<Boolean> ToBoolean() const;
V8EXPORT Local<Number> ToNumber() const;
V8EXPORT Local<String> ToString() const;
@@ -1819,10 +1824,19 @@
/**
* Returns a non-empty handle if the interceptor intercepts the request.
- * The result is true if the property exists and false otherwise.
+ * The result is true if either a boolean (true if property exists and false
+ * otherwise) or an integer encoding property attributes.
*/
+#ifdef USE_NEW_QUERY_CALLBACKS
+typedef Handle<Integer> (*IndexedPropertyQuery)(uint32_t index,
+ const AccessorInfo& info);
+#else
typedef Handle<Boolean> (*IndexedPropertyQuery)(uint32_t index,
const AccessorInfo& info);
+#endif
+
+typedef Handle<Value> (*IndexedPropertyQueryImpl)(uint32_t index,
+ const AccessorInfo& info);
/**
* Returns a non-empty handle if the deleter intercepts the request.
@@ -2040,7 +2054,23 @@
IndexedPropertyQuery query,
IndexedPropertyDeleter remover,
IndexedPropertyEnumerator enumerator,
- Handle<Value> data);
+ Handle<Value> data) {
+ IndexedPropertyQueryImpl casted =
+ reinterpret_cast<IndexedPropertyQueryImpl>(query);
+ SetIndexedInstancePropertyHandlerImpl(getter,
+ setter,
+ casted,
+ remover,
+ enumerator,
+ data);
+ }
+ void SetIndexedInstancePropertyHandlerImpl(
+ IndexedPropertyGetter getter,
+ IndexedPropertySetter setter,
+ IndexedPropertyQueryImpl query,
+ IndexedPropertyDeleter remover,
+ IndexedPropertyEnumerator enumerator,
+ Handle<Value> data);
void SetInstanceCallAsFunctionHandler(InvocationCallback callback,
Handle<Value> data);
@@ -2139,7 +2169,25 @@
IndexedPropertyQuery query = 0,
IndexedPropertyDeleter deleter = 0,
IndexedPropertyEnumerator enumerator = 0,
- Handle<Value> data = Handle<Value>());
+ Handle<Value> data = Handle<Value>()) {
+ IndexedPropertyQueryImpl casted =
+ reinterpret_cast<IndexedPropertyQueryImpl>(query);
+ SetIndexedPropertyHandlerImpl(getter,
+ setter,
+ casted,
+ deleter,
+ enumerator,
+ data);
+ }
+ private:
+ void SetIndexedPropertyHandlerImpl(IndexedPropertyGetter getter,
+ IndexedPropertySetter setter,
+ IndexedPropertyQueryImpl query,
+ IndexedPropertyDeleter deleter,
+ IndexedPropertyEnumerator enumerator,
+ Handle<Value> data);
+ public:
+
/**
* Sets the callback to be used when calling instances created from
* this template as a function. If no callback is set, instances