0
0
mirror of https://github.com/phpv8/v8js.git synced 2024-11-08 13:48:40 +00:00

adapt v8js_ctx custom object creation to PHP7 API

This commit is contained in:
Stefan Siegl 2015-08-24 22:19:15 +02:00
parent f6105ff3cf
commit a10e601af3
2 changed files with 13 additions and 10 deletions

View File

@ -79,9 +79,13 @@ public:
};
#endif
static void v8js_free_storage(void *object TSRMLS_DC) /* {{{ */
static inline struct v8js_ctx *v8js_fetch_object(zend_object *obj) {
return (struct v8js_ctx *)((char *)obj - XtOffsetOf(struct v8js_ctx, std));
}
static void v8js_free_storage(zend_object *object TSRMLS_DC) /* {{{ */
{
v8js_ctx *c = (v8js_ctx *) object;
v8js_ctx *c = v8js_fetch_object(object);
zend_object_std_dtor(&c->std TSRMLS_CC);
zval_dtor(&c->pending_exception);
@ -185,15 +189,12 @@ static void v8js_free_storage(void *object TSRMLS_DC) /* {{{ */
static zend_object* v8js_new(zend_class_entry *ce TSRMLS_DC) /* {{{ */
{
zend_object_value retval;
v8js_ctx *c;
c = (v8js_ctx *) ecalloc(1, sizeof(*c));
c = (v8js_ctx *) ecalloc(1, sizeof(*c) + zend_object_properties_size(ce));
zend_object_std_init(&c->std, ce TSRMLS_CC);
TSRMLS_SET_CTX(c->zts_ctx);
object_properties_init(&c->std, ce);
new(&c->object_name) v8::Persistent<v8::String>();
new(&c->context) v8::Persistent<v8::Context>();
new(&c->global_template) v8::Persistent<v8::FunctionTemplate>();
@ -211,10 +212,11 @@ static zend_object* v8js_new(zend_class_entry *ce TSRMLS_DC) /* {{{ */
new(&c->v8js_v8objects) std::list<v8js_v8object *>();
new(&c->script_objects) std::vector<v8js_script *>();
retval.handle = zend_objects_store_put(c, NULL, (zend_objects_free_object_storage_t) v8js_free_storage, NULL TSRMLS_CC);
retval.handlers = &v8js_object_handlers;
// @fixme following is const, run on startup
v8js_object_handlers.offset = XtOffsetOf(struct v8js_ctx, std);
v8js_object_handlers.free_obj = v8js_free_storage;
return retval;
return &c->std;
}
/* }}} */

View File

@ -32,7 +32,6 @@ struct cmp_str {
/* {{{ Context container */
struct v8js_ctx {
zend_object std;
v8::Persistent<v8::String> object_name;
v8::Persistent<v8::Context> context;
zend_bool report_uncaught;
@ -64,6 +63,8 @@ struct v8js_ctx {
#ifdef ZTS
void ***zts_ctx;
#endif
zend_object std;
};
/* }}} */