@@ -26,178 +26,66 @@ zend_class_entry *php_v8_callback_info_class_entry;
26
26
static zend_object_handlers php_v8_callback_info_object_handlers;
27
27
28
28
29
- void php_v8_callback_info_invalidate (php_v8_callback_info_t *php_v8_callback_info) {
30
- if (php_v8_callback_info->php_v8_return_value ) {
31
- php_v8_return_value_mark_expired (php_v8_callback_info->php_v8_return_value );
32
- }
33
- }
34
-
35
-
36
- static HashTable * php_v8_callback_info_gc (zval *object, zval **table, int *n) {
37
- PHP_V8_CALLBACK_INFO_FETCH_INTO (object, php_v8_callback_info);
38
-
39
- int size = 2 ; // args + php_v8_return_value->this_ptr
40
-
41
- if (php_v8_callback_info->gc_data_count < size) {
42
- php_v8_callback_info->gc_data = (zval *)safe_erealloc (php_v8_callback_info->gc_data , size, sizeof (zval), 0 );
43
- }
44
-
45
- php_v8_callback_info->gc_data_count = size;
46
-
47
- ZVAL_COPY_VALUE (&php_v8_callback_info->gc_data [0 ], &php_v8_callback_info->args );
48
- ZVAL_COPY_VALUE (&php_v8_callback_info->gc_data [1 ], &php_v8_callback_info->php_v8_return_value ->this_ptr );
49
-
50
- *table = php_v8_callback_info->gc_data ;
51
- *n = php_v8_callback_info->gc_data_count ;
52
-
53
- return zend_std_get_properties (object);
54
- }
55
-
56
- void php_v8_callback_info_free (zend_object *object) {
57
- php_v8_callback_info_t *php_v8_callback_info = php_v8_callback_info_fetch_object (object);
58
-
59
- if (php_v8_callback_info->length ) {
60
-
61
- for (int i=0 ; i< php_v8_callback_info->length ; i++) {
62
- if (PHP_V8_ISOLATE_HAS_VALID_HANDLE (php_v8_callback_info)) {
63
- php_v8_callback_info->arguments [i]->Reset ();
64
- }
65
-
66
- delete php_v8_callback_info->arguments [i];
67
- }
68
-
69
- efree (php_v8_callback_info->arguments );
70
- }
71
-
72
- if (php_v8_callback_info->this_obj ) {
73
- if (PHP_V8_ISOLATE_HAS_VALID_HANDLE (php_v8_callback_info)) {
74
- php_v8_callback_info->this_obj ->Reset ();
75
- }
76
-
77
- delete php_v8_callback_info->this_obj ;
78
- }
79
-
80
- if (php_v8_callback_info->holder_obj ) {
81
- if (PHP_V8_ISOLATE_HAS_VALID_HANDLE (php_v8_callback_info)) {
82
- php_v8_callback_info->holder_obj ->Reset ();
83
- }
84
-
85
- delete php_v8_callback_info->holder_obj ;
86
- }
87
-
88
- if (php_v8_callback_info->php_v8_return_value ) {
89
- if (!Z_ISUNDEF (php_v8_callback_info->php_v8_return_value ->this_ptr )) {
90
- zval_ptr_dtor (&php_v8_callback_info->php_v8_return_value ->this_ptr );
91
- }
92
-
93
- php_v8_callback_info->php_v8_return_value = NULL ;
94
- }
95
-
96
- if (!Z_ISUNDEF (php_v8_callback_info->args )) {
97
- zval_ptr_dtor (&php_v8_callback_info->args );
98
- }
99
-
100
- if (php_v8_callback_info->gc_data ) {
101
- efree (php_v8_callback_info->gc_data );
102
- }
103
-
104
- zend_object_std_dtor (&php_v8_callback_info->std );
105
- }
106
-
107
- static zend_object * php_v8_callback_info_ctor (zend_class_entry *ce) {
108
-
109
- php_v8_callback_info_t *php_v8_callback_info;
110
-
111
- php_v8_callback_info = (php_v8_callback_info_t *) ecalloc (1 , sizeof (php_v8_callback_info_t ) + zend_object_properties_size (ce));
112
-
113
- zend_object_std_init (&php_v8_callback_info->std , ce);
114
- object_properties_init (&php_v8_callback_info->std , ce);
115
-
116
- php_v8_callback_info->this_obj = new v8::Persistent<v8::Object>();
117
- php_v8_callback_info->holder_obj = new v8::Persistent<v8::Object>();
118
-
119
- php_v8_callback_info->std .handlers = &php_v8_callback_info_object_handlers;
120
-
121
- return &php_v8_callback_info->std ;
122
- }
123
-
124
-
125
29
static PHP_METHOD (V8CallbackInfo, GetIsolate) {
30
+ zval rv;
31
+ zval *tmp;
32
+
126
33
if (zend_parse_parameters_none () == FAILURE) {
127
34
return ;
128
35
}
129
36
130
- PHP_V8_CALLBACK_INFO_FETCH_WITH_CHECK (getThis (), php_v8_callback_info);
131
- PHP_V8_V8_CALLBACK_INFO_CHECK_IN_CONTEXT (php_v8_callback_info);
132
-
133
- ZVAL_OBJ (return_value, &php_v8_callback_info->php_v8_isolate ->std );
134
- Z_ADDREF_P (return_value);
37
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" isolate" ), 0 , &rv);
38
+ ZVAL_COPY (return_value, tmp);
135
39
}
136
40
137
41
static PHP_METHOD (V8CallbackInfo, GetContext) {
42
+ zval rv;
43
+ zval *tmp;
44
+
138
45
if (zend_parse_parameters_none () == FAILURE) {
139
46
return ;
140
47
}
141
48
142
- PHP_V8_CALLBACK_INFO_FETCH_WITH_CHECK (getThis (), php_v8_callback_info);
143
- PHP_V8_V8_CALLBACK_INFO_CHECK_IN_CONTEXT (php_v8_callback_info);
144
-
145
- ZVAL_OBJ (return_value, &php_v8_callback_info->php_v8_context ->std );
146
- Z_ADDREF_P (return_value);
49
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" context" ), 0 , &rv);
50
+ ZVAL_COPY (return_value, tmp);
147
51
}
148
52
149
53
static PHP_METHOD (V8CallbackInfo, This) {
54
+ zval rv;
55
+ zval *tmp;
56
+
150
57
if (zend_parse_parameters_none () == FAILURE) {
151
58
return ;
152
59
}
153
60
154
- PHP_V8_CALLBACK_INFO_FETCH_WITH_CHECK (getThis (), php_v8_callback_info);
155
- PHP_V8_V8_CALLBACK_INFO_CHECK_IN_CONTEXT (php_v8_callback_info);
156
-
157
- v8::Isolate *isolate = php_v8_callback_info->php_v8_isolate ->isolate ;
158
-
159
- v8::Local<v8::Object> local_object = v8::Local<v8::Object>::New (isolate, *php_v8_callback_info->this_obj );
160
-
161
- php_v8_get_or_create_value (return_value, local_object, php_v8_callback_info->php_v8_isolate );
61
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" this" ), 0 , &rv);
62
+ ZVAL_COPY (return_value, tmp);
162
63
}
163
64
164
65
static PHP_METHOD (V8CallbackInfo, Holder) {
66
+ zval rv;
67
+ zval *tmp;
68
+
165
69
if (zend_parse_parameters_none () == FAILURE) {
166
70
return ;
167
71
}
168
72
169
- PHP_V8_CALLBACK_INFO_FETCH_WITH_CHECK (getThis (), php_v8_callback_info);
170
- PHP_V8_V8_CALLBACK_INFO_CHECK_IN_CONTEXT (php_v8_callback_info);
171
-
172
- v8::Isolate *isolate = php_v8_callback_info->php_v8_isolate ->isolate ;
173
-
174
- v8::Local<v8::Object> local_object = v8::Local<v8::Object>::New (isolate, *php_v8_callback_info->holder_obj );
175
-
176
- php_v8_get_or_create_value (return_value, local_object, php_v8_callback_info->php_v8_isolate );
73
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" holder" ), 0 , &rv);
74
+ ZVAL_COPY (return_value, tmp);
177
75
}
178
76
179
77
static PHP_METHOD (V8CallbackInfo, GetReturnValue) {
180
- if (zend_parse_parameters_none () == FAILURE) {
181
- return ;
182
- }
78
+ zval rv;
79
+ zval *tmp;
183
80
184
- PHP_V8_CALLBACK_INFO_FETCH_WITH_CHECK (getThis (), php_v8_callback_info);
185
- PHP_V8_V8_CALLBACK_INFO_CHECK_IN_CONTEXT (php_v8_callback_info);
186
-
187
- RETVAL_ZVAL (&php_v8_callback_info->php_v8_return_value ->this_ptr , 1 , 0 );
188
- }
189
-
190
- static PHP_METHOD (V8CallbackInfo, InContext) {
191
81
if (zend_parse_parameters_none () == FAILURE) {
192
82
return ;
193
83
}
194
84
195
- PHP_V8_CALLBACK_INFO_FETCH_WITH_CHECK (getThis (), php_v8_callback_info);
196
-
197
- RETURN_BOOL (PHP_V8_V8_CALLBACK_INFO_IN_CONTEXT (php_v8_callback_info));
85
+ tmp = zend_read_property (this_ce, getThis (), ZEND_STRL (" return_value" ), 0 , &rv);
86
+ ZVAL_COPY (return_value, tmp);
198
87
}
199
88
200
-
201
89
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX (arginfo_v8_callback_info_GetIsolate, ZEND_RETURN_VALUE, 0 , V8\\Isolate, 0 )
202
90
ZEND_END_ARG_INFO()
203
91
@@ -213,17 +101,12 @@ ZEND_END_ARG_INFO()
213
101
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_callback_info_GetReturnValue, ZEND_RETURN_VALUE, 0 , V8\\ReturnValue, 0 )
214
102
ZEND_END_ARG_INFO()
215
103
216
- PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_callback_info_InContext, ZEND_RETURN_VALUE, 0 , _IS_BOOL, 0 )
217
- ZEND_END_ARG_INFO()
218
-
219
-
220
104
static const zend_function_entry php_v8_callback_info_methods[] = {
221
105
PHP_ME (V8CallbackInfo, This, arginfo_v8_callback_info_This, ZEND_ACC_PUBLIC)
222
106
PHP_ME (V8CallbackInfo, Holder, arginfo_v8_callback_info_Holder, ZEND_ACC_PUBLIC)
223
107
PHP_ME (V8CallbackInfo, GetIsolate, arginfo_v8_callback_info_GetIsolate, ZEND_ACC_PUBLIC)
224
108
PHP_ME (V8CallbackInfo, GetContext, arginfo_v8_callback_info_GetContext, ZEND_ACC_PUBLIC)
225
109
PHP_ME (V8CallbackInfo, GetReturnValue, arginfo_v8_callback_info_GetReturnValue, ZEND_ACC_PUBLIC)
226
- PHP_ME (V8CallbackInfo, InContext, arginfo_v8_callback_info_InContext, ZEND_ACC_PUBLIC)
227
110
PHP_FE_END
228
111
};
229
112
@@ -232,13 +115,14 @@ PHP_MINIT_FUNCTION (php_v8_callback_info) {
232
115
233
116
INIT_NS_CLASS_ENTRY (ce, PHP_V8_NS, " CallbackInfo" , php_v8_callback_info_methods);
234
117
this_ce = zend_register_internal_class (&ce);
235
- this_ce->create_object = php_v8_callback_info_ctor;
236
118
237
119
memcpy (&php_v8_callback_info_object_handlers, zend_get_std_object_handlers (), sizeof (zend_object_handlers));
238
120
239
- php_v8_callback_info_object_handlers.offset = XtOffsetOf (php_v8_callback_info_t , std);
240
- php_v8_callback_info_object_handlers.free_obj = php_v8_callback_info_free;
241
- php_v8_callback_info_object_handlers.get_gc = php_v8_callback_info_gc;
121
+ zend_declare_property_null (this_ce, ZEND_STRL (" isolate" ), ZEND_ACC_PRIVATE);
122
+ zend_declare_property_null (this_ce, ZEND_STRL (" context" ), ZEND_ACC_PRIVATE);
123
+ zend_declare_property_null (this_ce, ZEND_STRL (" this" ), ZEND_ACC_PRIVATE);
124
+ zend_declare_property_null (this_ce, ZEND_STRL (" holder" ), ZEND_ACC_PRIVATE);
125
+ zend_declare_property_null (this_ce, ZEND_STRL (" return_value" ), ZEND_ACC_PRIVATE);
242
126
243
127
return SUCCESS;
244
128
}
0 commit comments