@@ -34,24 +34,24 @@ extern "C" {
3434#include < v8.h>
3535
3636/* Callback for PHP methods and functions */
37- static v8::Handle <v8::Value> php_v8js_php_callback ( const v8::Arguments &args ) /* {{{ */
37+ static void php_v8js_php_callback ( const v8::FunctionCallbackInfo <v8::Value>& info ) /* {{{ */
3838{
3939 v8::Handle<v8::Value> return_value;
40- zval *value = reinterpret_cast <zval *>(args .This ()->GetAlignedPointerFromInternalField (0 ));
41- v8::Isolate *isolate = reinterpret_cast <v8::Isolate *>(args .This ()->GetAlignedPointerFromInternalField (1 ));
40+ zval *value = reinterpret_cast <zval *>(info .This ()->GetAlignedPointerFromInternalField (0 ));
41+ v8::Isolate *isolate = reinterpret_cast <v8::Isolate *>(info .This ()->GetAlignedPointerFromInternalField (1 ));
4242 zend_function *method_ptr;
4343 zend_fcall_info fci;
4444 zend_fcall_info_cache fcc;
4545 zval fname, *retval_ptr = NULL , **argv = NULL ;
4646 TSRMLS_FETCH ();
4747 zend_class_entry *ce = Z_OBJCE_P (value);
48- zend_uint argc = args .Length (), min_num_args = 0 , max_num_args = 0 ;
48+ zend_uint argc = info .Length (), min_num_args = 0 , max_num_args = 0 ;
4949 char *error;
5050 int error_len, i, flags = V8JS_FLAG_NONE;
5151
5252 /* Set method_ptr from v8::External or fetch the closure invoker */
53- if (!args .Data ().IsEmpty () && args .Data ()->IsExternal ()) {
54- method_ptr = static_cast <zend_function *>(v8::External::Cast (*args .Data ())->Value ());
53+ if (!info .Data ().IsEmpty () && info .Data ()->IsExternal ()) {
54+ method_ptr = static_cast <zend_function *>(v8::External::Cast (*info .Data ())->Value ());
5555 } else {
5656 method_ptr = zend_get_closure_invoke_method (value TSRMLS_CC);
5757 }
@@ -90,7 +90,8 @@ static v8::Handle<v8::Value> php_v8js_php_callback(const v8::Arguments &args) /*
9090 efree (method_ptr);
9191 }
9292 efree (error);
93- return return_value;
93+ info.GetReturnValue ().Set (return_value);
94+ return ;
9495 }
9596
9697 /* Convert parameters passed from V8 */
@@ -100,7 +101,7 @@ static v8::Handle<v8::Value> php_v8js_php_callback(const v8::Arguments &args) /*
100101 argv = (zval **) safe_emalloc (argc, sizeof (zval *), 0 );
101102 for (i = 0 ; i < argc; i++) {
102103 MAKE_STD_ZVAL (argv[i]);
103- if (v8js_to_zval (args [i], argv[i], flags, isolate TSRMLS_CC) == FAILURE) {
104+ if (v8js_to_zval (info [i], argv[i], flags, isolate TSRMLS_CC) == FAILURE) {
104105 fci.param_count ++;
105106 error_len = spprintf (&error, 0 , " converting parameter #%d passed to %s() failed" , i + 1 , method_ptr->common .function_name );
106107 return_value = V8JS_THROW (Error, error, error_len);
@@ -141,7 +142,7 @@ static v8::Handle<v8::Value> php_v8js_php_callback(const v8::Arguments &args) /*
141142 return_value = V8JS_NULL;
142143 }
143144
144- return return_value;
145+ info. GetReturnValue (). Set ( return_value) ;
145146}
146147/* }}} */
147148
@@ -167,50 +168,53 @@ static int _php_v8js_is_assoc_array(HashTable *myht TSRMLS_DC) /* {{{ */
167168}
168169/* }}} */
169170
170- static v8::Handle <v8::Value> php_v8js_property_caller ( const v8::Arguments &args ) /* {{{ */
171+ static void php_v8js_property_caller ( const v8::FunctionCallbackInfo <v8::Value>& info ) /* {{{ */
171172{
172- v8::Local<v8::Object> self = args .Holder ();
173- v8::Local<v8::String> cname = args .Callee ()->GetName ()->ToString ();
173+ v8::Local<v8::Object> self = info .Holder ();
174+ v8::Local<v8::String> cname = info .Callee ()->GetName ()->ToString ();
174175 v8::Local<v8::Value> value;
175- v8::Local<v8::String> cb_func = v8::Local<v8::String>::Cast (args .Data ());
176+ v8::Local<v8::String> cb_func = v8::Local<v8::String>::Cast (info .Data ());
176177
177178 value = self->GetHiddenValue (cb_func);
178179
179180 if (!value.IsEmpty () && value->IsFunction ())
180181 {
181- int argc = args .Length (), i = 0 ;
182+ int argc = info .Length (), i = 0 ;
182183 v8::Local<v8::Value> *argv = new v8::Local<v8::Value>[argc];
183184 v8::Local<v8::Function> cb = v8::Local<v8::Function>::Cast (value);
184185
185186 if (cb_func->Equals (V8JS_SYM (ZEND_INVOKE_FUNC_NAME))) {
186187 for (; i < argc; ++i) {
187- argv[i] = args [i];
188+ argv[i] = info [i];
188189 }
189190 value = cb->Call (self, argc, argv);
190191 }
191192 else /* __call() */
192193 {
193194 v8::Local<v8::Array> argsarr = v8::Array::New (argc);
194195 for (; i < argc; ++i) {
195- argsarr->Set (i, args [i]);
196+ argsarr->Set (i, info [i]);
196197 }
197198 v8::Local<v8::Value> argsv[2 ] = { cname, argsarr };
198199 value = cb->Call (self, 2 , argsv);
199200 }
200201 }
201202
202- if (args .IsConstructCall ()) {
203+ if (info .IsConstructCall ()) {
203204 if (!value.IsEmpty () && !value->IsNull ()) {
204- return value;
205+ info.GetReturnValue ().Set (value);
206+ return ;
205207 }
206- return self;
208+
209+ info.GetReturnValue ().Set (self);
210+ return ;
207211 }
208212
209- return value;
213+ info. GetReturnValue (). Set ( value) ;
210214}
211215/* }}} */
212216
213- static v8::Handle<v8::Value> php_v8js_property_getter (v8::Local<v8::String> property, const v8::AccessorInfo &info) /* {{{ */
217+ static void php_v8js_property_getter (v8::Local<v8::String> property, const v8::PropertyCallbackInfo<v8::Value> &info) /* {{{ */
214218{
215219 v8::Local<v8::Object> self = info.Holder ();
216220 v8::Local<v8::Value> value;
@@ -220,7 +224,8 @@ static v8::Handle<v8::Value> php_v8js_property_getter(v8::Local<v8::String> prop
220224 value = self->GetRealNamedProperty (property);
221225
222226 if (!value.IsEmpty ()) {
223- return value;
227+ info.GetReturnValue ().Set (value);
228+ return ;
224229 }
225230
226231 /* If __get() is set for PHP object, call it */
@@ -236,21 +241,23 @@ static v8::Handle<v8::Value> php_v8js_property_getter(v8::Local<v8::String> prop
236241 v8::Local<v8::FunctionTemplate> cb_t = v8::FunctionTemplate::New (php_v8js_property_caller, V8JS_SYM (ZEND_CALL_FUNC_NAME));
237242 cb = cb_t ->GetFunction ();
238243 cb->SetName (property);
239- return cb;
244+ info.GetReturnValue ().Set (cb);
245+ return ;
240246 }
241247
242- return value;
248+ info. GetReturnValue (). Set ( value) ;
243249}
244250/* }}} */
245251
246- static v8::Handle<v8::Integer> php_v8js_property_query (v8::Local<v8::String> property, const v8::AccessorInfo &info) /* {{{ */
252+ static void php_v8js_property_query (v8::Local<v8::String> property, const v8::PropertyCallbackInfo<v8::Integer> &info) /* {{{ */
247253{
248254 v8::Local<v8::Object> self = info.Holder ();
249255 v8::Local<v8::Value> value;
250256
251257 /* Return early if property is set in JS object */
252258 if (self->HasRealNamedProperty (property)) {
253- return V8JS_INT (v8::ReadOnly);
259+ info.GetReturnValue ().Set (V8JS_INT (v8::ReadOnly));
260+ return ;
254261 }
255262
256263 value = self->GetHiddenValue (V8JS_SYM (ZEND_ISSET_FUNC_NAME));
@@ -260,7 +267,7 @@ static v8::Handle<v8::Integer> php_v8js_property_query(v8::Local<v8::String> pro
260267 value = cb->Call (self, 1 , argv);
261268 }
262269
263- return ( !value.IsEmpty () && value->IsTrue ()) ? V8JS_INT (v8::ReadOnly) : v8::Local<v8::Integer>();
270+ info. GetReturnValue (). Set (( !value.IsEmpty () && value->IsTrue ()) ? V8JS_INT (v8::ReadOnly) : v8::Local<v8::Integer>() );
264271}
265272/* }}} */
266273
0 commit comments