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

133 Commits

Author SHA1 Message Date
Stefan Siegl
cd28b5c320 v8js_class: add size checks + precission down casts 2017-03-10 22:51:15 +01:00
Stefan Siegl
8625f70e2e Merge pull request #255 from TysonAndre/use-non-zend_string-v2
Use an non-interned zend_string for registerExtension on ZTS
2016-08-13 11:46:45 +02:00
Tyson Andre
efad52d739 Use an non-interned zend_string for registerExtension on ZTS
(There are no interned strings in ZTS, see the definition of
 zend_new_interned_string_int)

On NTS, strings must be non-interned in order to last until module shutdown.
interned strings are cleaned up before module shutdown.
2016-08-12 15:38:47 -07:00
Stefan Siegl
880b17a45c Merge pull request #243 from stesie/code-cleanup
fix compiler warnings
2016-08-12 15:41:27 +02:00
Stefan Siegl
5ae48bbda7 Fix refcounting, use zval_ptr_dtor, closes #250 2016-08-12 01:02:56 +02:00
Stefan Siegl
157f34521e fix compiler warnings 2016-07-03 22:32:03 +02:00
Stefan Siegl
c459acd1ef Merge remote-tracking branch 'origin/master' into php7 2016-07-02 22:59:33 +02:00
Stefan Siegl
3278be8bee Add 'indent-tabs-mode: t' to file variables 2016-07-02 22:48:45 +02:00
Stefan Siegl
2e5a565237 Remove (meanwhile) unreferenced local variables 2016-05-26 21:53:17 +02:00
Stefan Siegl
d75ec1deeb add parens around binary and expression 2016-05-26 21:37:12 +02:00
Stefan Siegl
a3161f6d9d fix arginfo_v8js_wakeup assignment 2016-05-26 21:36:54 +02:00
Stefan Siegl
e9e90bac65 Merge remote-tracking branch 'origin/master' into php7
Conflicts:
      config.w32
      package.xml
      php_v8js_macros.h
      v8js.cc
      v8js_array_access.cc
      v8js_class.cc
      v8js_convert.cc
      v8js_exceptions.cc
      v8js_object_export.cc
      v8js_timer.cc
      v8js_v8.cc
      v8js_v8object_class.cc
2016-05-22 22:30:19 +02:00
Stefan Siegl
05b96a96b8 Use internal fields instead of GetHiddenValue/SetHiddenValue
The latter were deprecated and removed in V8 5.2
2016-05-22 15:20:52 +02:00
Stefan Siegl
d4d8ccc4f6 Fix #ifdef change, don't call SetArrayBufferAllocator 2016-05-22 15:20:05 +02:00
Stefan Siegl
4fea8f4fb9 Require V8 4.6.76 or higher
... and hence remove all #ifdef hell.  Those versions didn't have
security support by Google anyhow, and it helps to drastically
shrink the test matrix.
2016-05-11 16:50:37 +02:00
Stefan Siegl
c804b16e4c fix compiler warnings 2016-03-26 12:11:11 +01:00
Stefan Siegl
12903ca269 add V8Js::setAverageObjectSize method 2016-03-08 09:28:16 +01:00
Stefan Siegl
25cf46aa0c Use zend_string with zend_parse_parameters 2016-03-05 22:43:57 +01:00
Stefan Siegl
bf6effba63 Merge remote-tracking branch 'origin/master' into php7 2016-03-05 22:21:42 +01:00
Stefan Siegl
930b450d99 refcount on snapshot_blob zval 2016-03-05 17:12:36 +01:00
Stefan Siegl
8e3e0c91b5 Add ZEND_ARG_INFO for V8Js::__construct 5th arg: snapshot_blob 2016-03-05 17:12:36 +01:00
Stefan Siegl
d0e78019aa Allow snapshot creation & use with V8 > 4.3.7
This does *not* seem to depend on whether V8 itself was compiled
with support for snapshots or not.

Therefore use PHP_V8_USE_EXTERNAL_STARTUP_DATA only to mark
whether we need to provide external snapshot data to V8.
2016-03-05 17:12:36 +01:00
Stefan Siegl
a1cdd7537b Fix conditional compilation for snapshot=off 2016-02-28 20:29:53 +01:00
Stefan Siegl
2c8ef2aa66 conditionally compile in snapshot functionality 2016-02-28 17:54:00 +01:00
Stefan Siegl
b405a34690 Allow to create snapshots and re-use them 2016-02-28 17:00:47 +01:00
Stefan Siegl
d438624a3d Don't export V8Js methods even if overwritten 2016-01-09 19:11:30 +01:00
Stefan Siegl
1e86e2c9f7 Don't export methods of V8Js object to V8 2016-01-09 19:02:58 +01:00
Stefan Siegl
3508f0c8e7 export public methods of classes derived from \V8Js, closes #183 2016-01-08 15:42:43 +01:00
Stefan Siegl
98205461be Reorder includes for Visual Studio 2015, closes #194
C++ headers need to go first, since PHP headers redefine
"inline" which causes trouble with the C++ header files.
2016-01-06 09:01:35 +00:00
Stefan Siegl
a83c49266e defer bailout until std::function dtor
std::function allocates some heap memory, at least with some
implementations and expects the dtor to run.  Hence defer the
bailout until the dtor ran.
2016-01-01 19:10:04 +01:00
Stefan Siegl
8de27fd2ce free v8::Persistent<v8::Script> on bailout 2016-01-01 00:01:49 +01:00
Stefan Siegl
362eb0b806 Merge pull request #190 from stesie/warn-only-on-v8-errors
Don't abort PHP on fatal V8 errors, just warn about it
2015-12-31 21:42:00 +01:00
Stefan Siegl
2d34adb91f Merge remote-tracking branch 'origin/master'
This primarily ports features introduced with V8Js 0.4.0
to the PHP7 branch.
2015-12-31 20:25:24 +01:00
Stefan Siegl
de23e8dba4 Don't abort PHP on fatal V8 errors, just warn about it
This way the PHP script can handle V8 errors gracefully
(and e.g. provide feedback to the user).

This especially changes behaviour when circular extension
dependencies happen (PHP code can go on, just V8 fails
to start).  This also fixes memory leaks of V8 and V8Js
itself caused by bailing out directly otherwise.
2015-12-30 17:53:46 +01:00
Stefan Siegl
67a9de01bd Allow custom module normalisation 2015-12-06 13:55:13 +01:00
Stefan Siegl
3085db6aeb Merge remote-tracking branch 'origin/master' into php7 2015-10-11 19:51:59 +02:00
Stefan Siegl
b38c31b521 Remove v8::Debug agent stuff
Debug Agent support was removed from V8 with 3.28 line which
is pretty old meanwhile.
2015-10-11 19:47:22 +02:00
Stefan Siegl
5cba44ccd0 Merge remote-tracking branch 'origin/master' into php7
Conflicts:
	README.md
	v8js.cc
	v8js_class.cc
	v8js_exceptions.cc
	v8js_object_export.cc
	v8js_v8.cc
	v8js_v8object_class.cc
2015-10-11 02:09:59 +02:00
Stefan Siegl
9827224471 Don't pass cache_slot to standard handlers
With the cache_slot being filled by the write-handler passing
on the cache_slot, succeeding write calls are not passed on to
our write but handled directly by the executor instead
(in zend_assign_to_object)
2015-10-05 21:41:48 +02:00
Stefan Siegl
b8726409f4 Throw V8JsException if v8 context cannot be created
We used to reset This to NULL, which never reallt was supposed to work
and PHP doc explicitly tell to not touch EX(This)
2015-10-03 00:01:12 +02:00
Stefan Siegl
0a93aa2306 Fix object name setting 2015-10-02 22:29:54 +02:00
Stefan Siegl
c6136ec3d2 Fix globals ptr passing wrt. timer thread 2015-09-28 22:03:24 +02:00
Stefan Siegl
74440ed9f7 Move V8JSG extensions and v8_flags to process globals 2015-09-26 21:39:26 +02:00
Stefan Siegl
83f51e5021 Merge pull request #156 from stesie/php-exception-behaviour
PHP->JS exception propagation
2015-09-23 19:40:23 +02:00
Stefan Siegl
e995708d6d PHP7 adapt: fix export of public properties on derived classes 2015-09-03 23:12:19 +02:00
Stefan Siegl
71f4b7ba05 Cache pseudo-Array FunctionTemplate as well 2015-09-01 15:53:21 +02:00
Stefan Siegl
486eb697f8 PHP7 adapt: fix getExtensions return array keys 2015-08-30 15:33:51 +02:00
Stefan Siegl
cfb1756fd7 PHP7 adapt: fix double free 2015-08-30 02:19:48 +02:00
Stefan Siegl
794da39882 PHP7 adapt: handle ZEND_WRONG_PROPERTY_INFO special ptr 2015-08-30 02:08:38 +02:00
Stefan Siegl
19a67118b5 PHP7 adapt: fix zend_register_resource/compileString 2015-08-29 21:56:29 +02:00
Stefan Siegl
a91d2bc413 PHP7 adapt: fix registerExtension 2015-08-29 21:45:59 +02:00
Stefan Siegl
eca7656b7d PHP7 adapt: fix setModuleLoader 2015-08-29 21:00:13 +02:00
Stefan Siegl
b21acf770a PHP7 adapt: no fallback property_info any longer 2015-08-29 20:19:44 +02:00
Stefan Siegl
fe7e097d10 PHP7 adapt: use zend_string 2015-08-29 20:19:04 +02:00
Stefan Siegl
a0f3c2302c PHP7 adapt: initialize c->std.handlers as needed 2015-08-29 18:52:30 +02:00
Stefan Siegl
5477d780a3 PHP7 adapt v8js_v8object_class.cc 2015-08-29 16:47:37 +02:00
Stefan Siegl
916e068c4a PHP7 adapt v8js_object_export.cc 2015-08-29 11:57:53 +02:00
Stefan Siegl
78dd0a9ff0 Cache v8::FunctionTemplates created by v8js_named_property_callback 2015-08-27 14:46:27 +02:00
Stefan Siegl
b8c9badddb Adapt v8js_class.cc to PHP7 API 2015-08-25 23:38:09 +02:00
Stefan Siegl
3fa38e7b87 v8js_class.cc pt.2 for PHP7, zend_object_store_get_object stuff & script resource 2015-08-25 00:24:04 +02:00
Stefan Siegl
a10e601af3 adapt v8js_ctx custom object creation to PHP7 API 2015-08-24 22:19:15 +02:00
Stefan Siegl
f6105ff3cf v8js_class pt.1: pending_exception, module_loader, weak_objects, jsext 2015-08-24 22:05:27 +02:00
Stefan Siegl
8389e126b5 adapt to changed ZVAL_STRING/ZVAL_STRINGL/RETVAL_STRINGL macros 2015-08-23 21:14:49 +02:00
Stefan Siegl
45f7e18624 Remove conditional compilation for PHP_VERSION_ID < 7.0.0 2015-08-23 21:10:47 +02:00
Stefan Siegl
f7c33539c2 Improve PHP->JS->PHP exception back propagation 2015-08-23 15:09:21 +02:00
Stefan Siegl
462eb623b3 Allow PHP exception to JS propagation 2015-08-22 15:16:02 +02:00
Stefan Siegl
829bac9ddc Merge pull request #150 from stesie/issue-140
Fix module caching & memory leaks
2015-08-03 08:40:26 +02:00
Stefan Siegl
0deb7d1802 Track list of valid script object in ctx
We don't know whether the V8Js object dtor or the script (resource)
dtor is called first.  Nevertheless they depend on each other as
we must not simply Reset the persistent v8::Script if the v8::Isolate
was disposed before.

Now the V8Js dtor iterates over all script resources and resets the
persistent v8::Script instances; leaving an invalidated resource
object (which cannot be called anymore).
2015-08-02 23:35:47 +02:00
Stefan Siegl
cb7a1b8d6a Dispose persisted v8::Script object on resource dtor (memory leak) 2015-08-02 22:36:23 +02:00
Stefan Siegl
1f56c8e43c Don't only run dtor, really delete the object 2015-08-02 21:26:18 +02:00
Stefan Siegl
dd4996cd56 delete v8::Extension instance on shutdown 2015-08-02 19:42:42 +02:00
Stefan Siegl
3d89f0250d Provide key compare function for modules_loaded
Without the compare function std::map simply compares one
pointer to another.  However we need to compare the actual
strings.

Besides we must not efree normalised_module_id on return
of require method, since the pointer was added to
modules_loaded (and is valid until destruction of V8Js
class); instead it is now freed during V8Js object destruction.
2015-08-01 17:49:11 +02:00
Stefan Siegl
22e90d1c50 Call v8::V8::SetArrayBufferAllocator for v8 4.4.10 & higher 2015-07-25 17:28:08 +02:00
Stefan Siegl
493e448bae Provide ArrayBufferAllocator for v8 4.4.44 (and later) 2015-07-25 16:04:25 +02:00
Stefan Siegl
e67f1f4c9c Fix handling of failed context creation, closes #136 2015-05-01 11:43:24 +02:00
Stefan Siegl
3726d233b8 return SUCCESS from PHP_MINIT_FUNCTION 2015-03-12 12:22:01 +01:00
Stefan Siegl
90c3b9db5f Fix debug build; move debug stuff into seperate files 2015-03-11 14:06:21 +01:00
Stefan Siegl
7b926a3d06 ForceDelete was removed, use normal Delete 2015-03-10 15:09:41 +01:00
Stefan Siegl
5b4aaa64f1 More php_v8js_ prefix cleanup 2014-12-13 01:37:25 +01:00
Stefan Siegl
2954de2db5 Remove php_ prefix to struct & type names 2014-12-13 01:18:42 +01:00
Stefan Siegl
d269809d8b Move types from php_v8js_macros.h to new headers 2014-12-13 00:43:19 +01:00
Stefan Siegl
f987cc7b4c Rename php_v8js_objects -> v8js_v8objects
* drop php_ prefix, currently used inconsistently anyways
* change "object" to "v8object" to clarify it's a JS object wrapped
  to a V8Object instance
2014-12-13 00:13:03 +01:00
Stefan Siegl
5ea36016fe code cleanup, part 1
Splits longish v8js.cc file into pieces.  It used to contain the
definitions of all V8Js exception classes, the V8Js class itself as
well as the V8Object/V8Function classes... besides the module setup
code itself.

This change factors out all exception class definitions into a
seperate pair of files (v8js_exceptions.*).

The V8Js class definition itself is moved to v8js_class.* pair,
with the v8 init & call code moved to v8js_v8.* pair
and the watchdog timer to v8js_timer.* pair.

The V8Object/V8Function code was moved to v8js_v8object_class.*
pair, not differentiating between the two like before.
2014-12-13 00:11:02 +01:00