Browse Source

Rename V8Object stuff to v8js_v8object_XXX

Stefan Siegl 10 years ago
parent
commit
6869d318b3
7 changed files with 106 additions and 102 deletions
  1. 0 3
      php_v8js_macros.h
  2. 2 1
      v8js_convert.cc
  3. 1 1
      v8js_object_export.cc
  4. 55 0
      v8js_v8.cc
  5. 2 0
      v8js_v8.h
  6. 44 95
      v8js_v8object_class.cc
  7. 2 2
      v8js_v8object_class.h

+ 0 - 3
php_v8js_macros.h

@@ -121,9 +121,6 @@ static inline const char * ToCString(const v8::String::Utf8Value &value) /* {{{
 /* Create PHP V8 object */
 /* Create PHP V8 object */
 void php_v8js_create_v8(zval *, v8::Handle<v8::Value>, int, v8::Isolate * TSRMLS_DC);
 void php_v8js_create_v8(zval *, v8::Handle<v8::Value>, int, v8::Isolate * TSRMLS_DC);
 
 
-/* Fetch V8 object properties */
-int php_v8js_v8_get_properties_hash(v8::Handle<v8::Value>, HashTable *, int, v8::Isolate * TSRMLS_DC);
-
 /* Convert zval into V8 value */
 /* Convert zval into V8 value */
 v8::Handle<v8::Value> zval_to_v8js(zval *, v8::Isolate * TSRMLS_DC);
 v8::Handle<v8::Value> zval_to_v8js(zval *, v8::Isolate * TSRMLS_DC);
 
 

+ 2 - 1
v8js_convert.cc

@@ -27,6 +27,7 @@ extern "C" {
 
 
 #include "php_v8js_macros.h"
 #include "php_v8js_macros.h"
 #include "v8js_object_export.h"
 #include "v8js_object_export.h"
+#include "v8js_v8.h"
 
 
 #include <stdexcept>
 #include <stdexcept>
 #include <limits>
 #include <limits>
@@ -246,7 +247,7 @@ int v8js_to_zval(v8::Handle<v8::Value> jsValue, zval *return_value, int flags, v
 		}
 		}
 		if ((flags & V8JS_FLAG_FORCE_ARRAY) || jsValue->IsArray()) {
 		if ((flags & V8JS_FLAG_FORCE_ARRAY) || jsValue->IsArray()) {
 			array_init(return_value);
 			array_init(return_value);
-			return php_v8js_v8_get_properties_hash(jsValue, Z_ARRVAL_P(return_value), flags, isolate TSRMLS_CC);
+			return v8js_get_properties_hash(jsValue, Z_ARRVAL_P(return_value), flags, isolate TSRMLS_CC);
 		} else {
 		} else {
 			php_v8js_create_v8(return_value, jsValue, flags, isolate TSRMLS_CC);
 			php_v8js_create_v8(return_value, jsValue, flags, isolate TSRMLS_CC);
 			return SUCCESS;
 			return SUCCESS;

+ 1 - 1
v8js_object_export.cc

@@ -954,7 +954,7 @@ v8::Handle<v8::Value> php_v8js_hash_to_jsobj(zval *value, v8::Isolate *isolate T
 	}
 	}
 
 
 	/* Special case, passing back object originating from JS to JS */
 	/* Special case, passing back object originating from JS to JS */
-	if (ce == php_ce_v8_function) {
+	if (ce == php_ce_v8function) {
 		v8js_v8object *c = (v8js_v8object *) zend_object_store_get_object(value TSRMLS_CC);
 		v8js_v8object *c = (v8js_v8object *) zend_object_store_get_object(value TSRMLS_CC);
 
 
 		if(isolate != c->ctx->isolate) {
 		if(isolate != c->ctx->isolate) {

+ 55 - 0
v8js_v8.cc

@@ -205,6 +205,61 @@ void v8js_terminate_execution(php_v8js_ctx *c TSRMLS_DC) /* {{{ */
 }
 }
 /* }}} */
 /* }}} */
 
 
+
+int v8js_get_properties_hash(v8::Handle<v8::Value> jsValue, HashTable *retval, int flags, v8::Isolate *isolate TSRMLS_DC) /* {{{ */
+{
+	v8::Local<v8::Object> jsObj = jsValue->ToObject();
+
+	if (!jsObj.IsEmpty()) {
+		v8::Local<v8::Array> jsKeys = jsObj->GetPropertyNames();
+
+		for (unsigned i = 0; i < jsKeys->Length(); i++)
+		{
+			v8::Local<v8::String> jsKey = jsKeys->Get(i)->ToString();
+
+			/* Skip any prototype properties */
+			if (!jsObj->HasOwnProperty(jsKey) && !jsObj->HasRealNamedProperty(jsKey) && !jsObj->HasRealNamedCallbackProperty(jsKey)) {
+				continue;
+			}
+
+			v8::Local<v8::Value> jsVal = jsObj->Get(jsKey);
+			v8::String::Utf8Value cstr(jsKey);
+			const char *key = ToCString(cstr);
+			zval *value = NULL;
+
+			v8::Local<v8::Value> php_object;
+			if (jsVal->IsObject()) {
+				php_object = v8::Local<v8::Object>::Cast(jsVal)->GetHiddenValue(V8JS_SYM(PHPJS_OBJECT_KEY));
+			}
+			if (!php_object.IsEmpty()) {
+				/* This is a PHP object, passed to JS and back. */
+				value = reinterpret_cast<zval *>(v8::External::Cast(*php_object)->Value());
+				Z_ADDREF_P(value);
+			}
+			else {
+				MAKE_STD_ZVAL(value);
+
+				if (v8js_to_zval(jsVal, value, flags, isolate TSRMLS_CC) == FAILURE) {
+					zval_ptr_dtor(&value);
+					return FAILURE;
+				}
+			}
+
+			if ((flags & V8JS_FLAG_FORCE_ARRAY) || jsValue->IsArray()) {
+				zend_symtable_update(retval, key, strlen(key) + 1, (void *)&value, sizeof(zval *), NULL);
+			} else {
+				zend_hash_update(retval, key, strlen(key) + 1, (void *) &value, sizeof(zval *), NULL);
+			}
+		}
+		return SUCCESS;
+	}
+	return FAILURE;
+}
+/* }}} */
+
+
+
+
 /*
 /*
  * Local variables:
  * Local variables:
  * tab-width: 4
  * tab-width: 4

+ 2 - 0
v8js_v8.h

@@ -20,6 +20,8 @@ void v8js_v8_call(php_v8js_ctx *c, zval **return_value,
 				  std::function< v8::Local<v8::Value>(v8::Isolate *) >& v8_call TSRMLS_DC);
 				  std::function< v8::Local<v8::Value>(v8::Isolate *) >& v8_call TSRMLS_DC);
 void v8js_terminate_execution(php_v8js_ctx *c TSRMLS_DC);
 void v8js_terminate_execution(php_v8js_ctx *c TSRMLS_DC);
 
 
+/* Fetch V8 object properties */
+int v8js_get_properties_hash(v8::Handle<v8::Value> jsValue, HashTable *retval, int flags, v8::Isolate *isolate TSRMLS_DC);
 
 
 #define V8JS_CTX_PROLOGUE(ctx) \
 #define V8JS_CTX_PROLOGUE(ctx) \
 	if (!V8JSG(v8_initialized)) { \
 	if (!V8JSG(v8_initialized)) { \

+ 44 - 95
v8js_v8object_class.cc

@@ -30,12 +30,12 @@ extern "C" {
 #include "v8js_v8.h"
 #include "v8js_v8.h"
 
 
 /* {{{ Class Entries */
 /* {{{ Class Entries */
-zend_class_entry *php_ce_v8_object;
-zend_class_entry *php_ce_v8_function;
+zend_class_entry *php_ce_v8object;
+zend_class_entry *php_ce_v8function;
 /* }}} */
 /* }}} */
 
 
 /* {{{ Object Handlers */
 /* {{{ Object Handlers */
-static zend_object_handlers v8_object_handlers;
+static zend_object_handlers v8js_v8object_handlers;
 /* }}} */
 /* }}} */
 
 
 #define V8JS_V8_INVOKE_FUNC_NAME "V8Js::V8::Invoke"
 #define V8JS_V8_INVOKE_FUNC_NAME "V8Js::V8::Invoke"
@@ -43,7 +43,7 @@ static zend_object_handlers v8_object_handlers;
 
 
 /* V8 Object handlers */
 /* V8 Object handlers */
 
 
-static int php_v8js_v8_has_property(zval *object, zval *member, int has_set_exists ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
+static int v8js_v8object_has_property(zval *object, zval *member, int has_set_exists ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
 {
 {
 	/* param has_set_exists:
 	/* param has_set_exists:
 	 * 0 (has) whether property exists and is not NULL  - isset()
 	 * 0 (has) whether property exists and is not NULL  - isset()
@@ -113,7 +113,7 @@ static int php_v8js_v8_has_property(zval *object, zval *member, int has_set_exis
 }
 }
 /* }}} */
 /* }}} */
 
 
-static zval *php_v8js_v8_read_property(zval *object, zval *member, int type ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
+static zval *v8js_v8object_read_property(zval *object, zval *member, int type ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
 {
 {
 	zval *retval = NULL;
 	zval *retval = NULL;
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(object TSRMLS_CC);
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(object TSRMLS_CC);
@@ -164,7 +164,7 @@ static zval *php_v8js_v8_read_property(zval *object, zval *member, int type ZEND
 }
 }
 /* }}} */
 /* }}} */
 
 
-static void php_v8js_v8_write_property(zval *object, zval *member, zval *value ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
+static void v8js_v8object_write_property(zval *object, zval *member, zval *value ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
 {
 {
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(object TSRMLS_CC);
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(object TSRMLS_CC);
 
 
@@ -189,7 +189,7 @@ static void php_v8js_v8_write_property(zval *object, zval *member, zval *value Z
 }
 }
 /* }}} */
 /* }}} */
 
 
-static void php_v8js_v8_unset_property(zval *object, zval *member ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
+static void v8js_v8object_unset_property(zval *object, zval *member ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
 {
 {
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(object TSRMLS_CC);
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(object TSRMLS_CC);
 
 
@@ -214,58 +214,7 @@ static void php_v8js_v8_unset_property(zval *object, zval *member ZEND_HASH_KEY_
 }
 }
 /* }}} */
 /* }}} */
 
 
-int php_v8js_v8_get_properties_hash(v8::Handle<v8::Value> jsValue, HashTable *retval, int flags, v8::Isolate *isolate TSRMLS_DC) /* {{{ */
-{
-	v8::Local<v8::Object> jsObj = jsValue->ToObject();
-
-	if (!jsObj.IsEmpty()) {
-		v8::Local<v8::Array> jsKeys = jsObj->GetPropertyNames();
-
-		for (unsigned i = 0; i < jsKeys->Length(); i++)
-		{
-			v8::Local<v8::String> jsKey = jsKeys->Get(i)->ToString();
-
-			/* Skip any prototype properties */
-			if (!jsObj->HasOwnProperty(jsKey) && !jsObj->HasRealNamedProperty(jsKey) && !jsObj->HasRealNamedCallbackProperty(jsKey)) {
-				continue;
-			}
-
-			v8::Local<v8::Value> jsVal = jsObj->Get(jsKey);
-			v8::String::Utf8Value cstr(jsKey);
-			const char *key = ToCString(cstr);
-			zval *value = NULL;
-
-			v8::Local<v8::Value> php_object;
-			if (jsVal->IsObject()) {
-				php_object = v8::Local<v8::Object>::Cast(jsVal)->GetHiddenValue(V8JS_SYM(PHPJS_OBJECT_KEY));
-			}
-			if (!php_object.IsEmpty()) {
-				/* This is a PHP object, passed to JS and back. */
-				value = reinterpret_cast<zval *>(v8::External::Cast(*php_object)->Value());
-				Z_ADDREF_P(value);
-			}
-			else {
-				MAKE_STD_ZVAL(value);
-
-				if (v8js_to_zval(jsVal, value, flags, isolate TSRMLS_CC) == FAILURE) {
-					zval_ptr_dtor(&value);
-					return FAILURE;
-				}
-			}
-
-			if ((flags & V8JS_FLAG_FORCE_ARRAY) || jsValue->IsArray()) {
-				zend_symtable_update(retval, key, strlen(key) + 1, (void *)&value, sizeof(zval *), NULL);
-			} else {
-				zend_hash_update(retval, key, strlen(key) + 1, (void *) &value, sizeof(zval *), NULL);
-			}
-		}
-		return SUCCESS;
-	}
-	return FAILURE;
-}
-/* }}} */
-
-static HashTable *php_v8js_v8_get_properties(zval *object TSRMLS_DC) /* {{{ */
+static HashTable *v8js_v8object_get_properties(zval *object TSRMLS_DC) /* {{{ */
 {
 {
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(object TSRMLS_CC);
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(object TSRMLS_CC);
 	HashTable *retval;
 	HashTable *retval;
@@ -303,7 +252,7 @@ static HashTable *php_v8js_v8_get_properties(zval *object TSRMLS_DC) /* {{{ */
 	v8::Context::Scope temp_scope(temp_context);
 	v8::Context::Scope temp_scope(temp_context);
 	v8::Local<v8::Value> v8obj = v8::Local<v8::Value>::New(isolate, obj->v8obj);
 	v8::Local<v8::Value> v8obj = v8::Local<v8::Value>::New(isolate, obj->v8obj);
 
 
-	if (php_v8js_v8_get_properties_hash(v8obj, obj->properties, obj->flags, isolate TSRMLS_CC) == SUCCESS) {
+	if (v8js_get_properties_hash(v8obj, obj->properties, obj->flags, isolate TSRMLS_CC) == SUCCESS) {
 		return obj->properties;
 		return obj->properties;
 	}
 	}
 
 
@@ -311,14 +260,14 @@ static HashTable *php_v8js_v8_get_properties(zval *object TSRMLS_DC) /* {{{ */
 }
 }
 /* }}} */
 /* }}} */
 
 
-static HashTable *php_v8js_v8_get_debug_info(zval *object, int *is_temp TSRMLS_DC) /* {{{ */
+static HashTable *v8js_v8object_get_debug_info(zval *object, int *is_temp TSRMLS_DC) /* {{{ */
 {
 {
 	*is_temp = 0;
 	*is_temp = 0;
-	return php_v8js_v8_get_properties(object TSRMLS_CC);
+	return v8js_v8object_get_properties(object TSRMLS_CC);
 }
 }
 /* }}} */
 /* }}} */
 
 
-static zend_function *php_v8js_v8_get_method(zval **object_ptr, char *method, int method_len ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
+static zend_function *v8js_v8object_get_method(zval **object_ptr, char *method, int method_len ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
 {
 {
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(*object_ptr TSRMLS_CC);
 	v8js_v8object *obj = (v8js_v8object *) zend_object_store_get_object(*object_ptr TSRMLS_CC);
 	zend_function *f;
 	zend_function *f;
@@ -354,9 +303,9 @@ static zend_function *php_v8js_v8_get_method(zval **object_ptr, char *method, in
 /* }}} */
 /* }}} */
 
 
 #if PHP_VERSION_ID >= 50400
 #if PHP_VERSION_ID >= 50400
-static int php_v8js_v8_call_method(const char *method, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */
+static int v8js_v8object_call_method(const char *method, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */
 #else
 #else
-static int php_v8js_v8_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */
+static int v8js_v8object_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */
 #endif
 #endif
 {
 {
 	zval *object = this_ptr, ***argv = NULL;
 	zval *object = this_ptr, ***argv = NULL;
@@ -416,7 +365,7 @@ static int php_v8js_v8_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS) /
 }
 }
 /* }}} */
 /* }}} */
 
 
-static int php_v8js_v8_get_closure(zval *object, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC) /* {{{ */
+static int v8js_v8object_get_closure(zval *object, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC) /* {{{ */
 {
 {
 	zend_function *invoke;
 	zend_function *invoke;
 
 
@@ -456,7 +405,7 @@ static int php_v8js_v8_get_closure(zval *object, zend_class_entry **ce_ptr, zend
 }
 }
 /* }}} */
 /* }}} */
 
 
-static void php_v8js_v8_free_storage(void *object, zend_object_handle handle TSRMLS_DC) /* {{{ */
+static void v8js_v8object_free_storage(void *object, zend_object_handle handle TSRMLS_DC) /* {{{ */
 {
 {
 	v8js_v8object *c = (v8js_v8object *) object;
 	v8js_v8object *c = (v8js_v8object *) object;
 
 
@@ -477,7 +426,7 @@ static void php_v8js_v8_free_storage(void *object, zend_object_handle handle TSR
 }
 }
 /* }}} */
 /* }}} */
 
 
-static zend_object_value php_v8js_v8_new(zend_class_entry *ce TSRMLS_DC) /* {{{ */
+static zend_object_value v8js_v8object_new(zend_class_entry *ce TSRMLS_DC) /* {{{ */
 {
 {
 	zend_object_value retval;
 	zend_object_value retval;
 	v8js_v8object *c;
 	v8js_v8object *c;
@@ -487,14 +436,14 @@ static zend_object_value php_v8js_v8_new(zend_class_entry *ce TSRMLS_DC) /* {{{
 	zend_object_std_init(&c->std, ce TSRMLS_CC);
 	zend_object_std_init(&c->std, ce TSRMLS_CC);
 	new(&c->v8obj) v8::Persistent<v8::Value>();
 	new(&c->v8obj) v8::Persistent<v8::Value>();
 
 
-	retval.handle = zend_objects_store_put(c, NULL, (zend_objects_free_object_storage_t) php_v8js_v8_free_storage, NULL TSRMLS_CC);
-	retval.handlers = &v8_object_handlers;
+	retval.handle = zend_objects_store_put(c, NULL, (zend_objects_free_object_storage_t) v8js_v8object_free_storage, NULL TSRMLS_CC);
+	retval.handlers = &v8js_v8object_handlers;
 
 
 	return retval;
 	return retval;
 }
 }
 /* }}} */
 /* }}} */
 
 
-/* NOTE: We could also override v8_object_handlers.get_constructor to throw
+/* NOTE: We could also override v8js_v8object_handlers.get_constructor to throw
  * an exception when invoked, but doing so causes the half-constructed object
  * an exception when invoked, but doing so causes the half-constructed object
  * to leak -- this seems to be a PHP bug.  So we'll define magic __construct
  * to leak -- this seems to be a PHP bug.  So we'll define magic __construct
  * methods instead. */
  * methods instead. */
@@ -564,7 +513,7 @@ void php_v8js_create_v8(zval *res, v8::Handle<v8::Value> value, int flags, v8::I
 	php_v8js_ctx *ctx = (php_v8js_ctx *) isolate->GetData(0);
 	php_v8js_ctx *ctx = (php_v8js_ctx *) isolate->GetData(0);
 	v8js_v8object *c;
 	v8js_v8object *c;
 
 
-	object_init_ex(res, value->IsFunction() ? php_ce_v8_function : php_ce_v8_object);
+	object_init_ex(res, value->IsFunction() ? php_ce_v8function : php_ce_v8object);
 
 
 	c = (v8js_v8object *) zend_object_store_get_object(res TSRMLS_CC);
 	c = (v8js_v8object *) zend_object_store_get_object(res TSRMLS_CC);
 
 
@@ -578,7 +527,7 @@ void php_v8js_create_v8(zval *res, v8::Handle<v8::Value> value, int flags, v8::I
 /* }}} */
 /* }}} */
 
 
 
 
-static const zend_function_entry v8_object_methods[] = { /* {{{ */
+static const zend_function_entry v8js_v8object_methods[] = { /* {{{ */
 	PHP_ME(V8Object,	__construct,			NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
 	PHP_ME(V8Object,	__construct,			NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
 	PHP_ME(V8Object,	__sleep,				NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
 	PHP_ME(V8Object,	__sleep,				NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
 	PHP_ME(V8Object,	__wakeup,				NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
 	PHP_ME(V8Object,	__wakeup,				NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
@@ -586,7 +535,7 @@ static const zend_function_entry v8_object_methods[] = { /* {{{ */
 };
 };
 /* }}} */
 /* }}} */
 
 
-static const zend_function_entry v8_function_methods[] = { /* {{{ */
+static const zend_function_entry v8js_v8function_methods[] = { /* {{{ */
 	PHP_ME(V8Function,	__construct,			NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
 	PHP_ME(V8Function,	__construct,			NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
 	PHP_ME(V8Function,	__sleep,				NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
 	PHP_ME(V8Function,	__sleep,				NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
 	PHP_ME(V8Function,	__wakeup,				NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
 	PHP_ME(V8Function,	__wakeup,				NULL,				ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
@@ -600,31 +549,31 @@ PHP_MINIT_FUNCTION(v8js_v8object_class) /* {{{ */
 	zend_class_entry ce;
 	zend_class_entry ce;
 
 
 	/* V8Object Class */
 	/* V8Object Class */
-	INIT_CLASS_ENTRY(ce, "V8Object", v8_object_methods);
-	php_ce_v8_object = zend_register_internal_class(&ce TSRMLS_CC);
-	php_ce_v8_object->ce_flags |= ZEND_ACC_FINAL;
-	php_ce_v8_object->create_object = php_v8js_v8_new;
+	INIT_CLASS_ENTRY(ce, "V8Object", v8js_v8object_methods);
+	php_ce_v8object = zend_register_internal_class(&ce TSRMLS_CC);
+	php_ce_v8object->ce_flags |= ZEND_ACC_FINAL;
+	php_ce_v8object->create_object = v8js_v8object_new;
 
 
 	/* V8Function Class */
 	/* V8Function Class */
-	INIT_CLASS_ENTRY(ce, "V8Function", v8_function_methods);
-	php_ce_v8_function = zend_register_internal_class(&ce TSRMLS_CC);
-	php_ce_v8_function->ce_flags |= ZEND_ACC_FINAL;
-	php_ce_v8_function->create_object = php_v8js_v8_new;
+	INIT_CLASS_ENTRY(ce, "V8Function", v8js_v8function_methods);
+	php_ce_v8function = zend_register_internal_class(&ce TSRMLS_CC);
+	php_ce_v8function->ce_flags |= ZEND_ACC_FINAL;
+	php_ce_v8function->create_object = v8js_v8object_new;
 
 
 	/* V8<Object|Function> handlers */
 	/* V8<Object|Function> handlers */
-	memcpy(&v8_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
-	v8_object_handlers.clone_obj = NULL;
-	v8_object_handlers.cast_object = NULL;
-	v8_object_handlers.get_property_ptr_ptr = NULL;
-	v8_object_handlers.has_property = php_v8js_v8_has_property;
-	v8_object_handlers.read_property = php_v8js_v8_read_property;
-	v8_object_handlers.write_property = php_v8js_v8_write_property;
-	v8_object_handlers.unset_property = php_v8js_v8_unset_property;
-	v8_object_handlers.get_properties = php_v8js_v8_get_properties;
-	v8_object_handlers.get_method = php_v8js_v8_get_method;
-	v8_object_handlers.call_method = php_v8js_v8_call_method;
-	v8_object_handlers.get_debug_info = php_v8js_v8_get_debug_info;
-	v8_object_handlers.get_closure = php_v8js_v8_get_closure;
+	memcpy(&v8js_v8object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+	v8js_v8object_handlers.clone_obj = NULL;
+	v8js_v8object_handlers.cast_object = NULL;
+	v8js_v8object_handlers.get_property_ptr_ptr = NULL;
+	v8js_v8object_handlers.has_property = v8js_v8object_has_property;
+	v8js_v8object_handlers.read_property = v8js_v8object_read_property;
+	v8js_v8object_handlers.write_property = v8js_v8object_write_property;
+	v8js_v8object_handlers.unset_property = v8js_v8object_unset_property;
+	v8js_v8object_handlers.get_properties = v8js_v8object_get_properties;
+	v8js_v8object_handlers.get_method = v8js_v8object_get_method;
+	v8js_v8object_handlers.call_method = v8js_v8object_call_method;
+	v8js_v8object_handlers.get_debug_info = v8js_v8object_get_debug_info;
+	v8js_v8object_handlers.get_closure = v8js_v8object_get_closure;
 } /* }}} */
 } /* }}} */
 
 
 
 

+ 2 - 2
v8js_v8object_class.h

@@ -14,8 +14,8 @@
 #ifndef V8JS_V8OBJECT_CLASS_H
 #ifndef V8JS_V8OBJECT_CLASS_H
 #define V8JS_V8OBJECT_CLASS_H
 #define V8JS_V8OBJECT_CLASS_H
 
 
-extern zend_class_entry *php_ce_v8_object;
-extern zend_class_entry *php_ce_v8_function;
+extern zend_class_entry *php_ce_v8object;
+extern zend_class_entry *php_ce_v8function;
 
 
 PHP_MINIT_FUNCTION(v8js_v8object_class);
 PHP_MINIT_FUNCTION(v8js_v8object_class);