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
8e84f99830
Adapt v8js.cc to PHP7 API
2015-08-24 21:35:29 +02:00
Stefan Siegl
2d0aa9b2cc
adapt PHPJS_OBJECT_KEY from zval* to zend_object*
2015-08-24 21:13:35 +02:00
Stefan Siegl
5acc64610d
Adapt v8js_array_access.cc to PHP7 API
2015-08-24 20:43:24 +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
cef7b0beba
Remove #include of no-more-existing file
2015-08-23 20:22:46 +02:00
Stefan Siegl
790735f04a
Fix tests/php_exceptions_005.phpt
2015-08-23 19:30:47 +02:00
Stefan Siegl
c033000aea
Fix tests/exception_propagation_2.phpt
...
The test relied on weird behaviour that PHP exceptions shouldn't stop
JavaScript code execution. Since JavaScript execution is now stopped,
the JavaScript catch handler is not executed anymore.
2015-08-23 18:05:46 +02:00
Stefan Siegl
829a98e064
Mention (new) exception behaviour in README
2015-08-23 17:56:26 +02:00
Stefan Siegl
b7dde1b1db
Handle thrown PHP objects, that are no exceptions
2015-08-23 17:40:27 +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
f7a592052f
Store flags in v8js_ctx class instead of v8 hidden value
2015-08-21 16:12:12 +02:00
Stefan Siegl
187b97060f
Stop JS execution on PHP exceptions, refs #144
2015-08-21 15:55:52 +02:00
Stefan Siegl
e07ea80805
Update README.Linux.md common pitfalls
...
* recent V8 versions need to be compiled with snnapshot=off to be usable
* use more meaningful destination path
2015-08-19 10:46:48 +02:00
Stefan Siegl
94fb367b15
Merge pull request #154 from rosmo/libplatform-x64
...
Check lib64 dir for libplatform as well.
2015-08-12 18:59:40 +02:00
Taneli Leppa
9f082a057b
Check lib64 dir for libplatform as well.
2015-08-12 18:26:23 +03:00
Stefan Siegl
35e5fbb1fc
Don't call V8::ShutdownPlatform for V8 < 3.29.36
2015-08-08 12:12:18 +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
204cc0fa6a
Merge pull request #151 from stesie/mem-leaks-001
...
Memory Leak Fixes
2015-08-03 08:40:20 +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
981f502303
ignore run-tests.php valgrind result files
2015-08-02 19:43:58 +02:00
Stefan Siegl
dd4996cd56
delete v8::Extension instance on shutdown
2015-08-02 19:42:42 +02:00
Stefan Siegl
4650273c90
Shutdown V8 on GSHUTDOWN
2015-08-02 19:42:03 +02:00
Stefan Siegl
5018192123
Move libplatform.h include farther down
...
If it is included before php.h, PHP_V8_API_VERSION is not
defined if V8Js is built as a PHP built-in extension.
2015-08-02 18:15:28 +02:00
Stefan Siegl
6bbe4d932b
remove useless zero-initializations (immediately overridden afterwards)
2015-08-01 19:58:44 +02:00
Stefan Siegl
441f7b7fab
v8js_commonjs_split_terms: use pointer comparison instead of strlen
...
The strlen usage on term obviously was wrong here, since the term
string is not null-terminated at that place.
2015-08-01 19:54:23 +02:00
Stefan Siegl
cedcac1318
skip useless estrdup/efree cycle
...
The garbage collector cannot free the object as it is allocated
on the local stack.
2015-08-01 19:45:21 +02:00
Stefan Siegl
f61c11f995
declare base & identifier const
2015-08-01 19:41:50 +02:00
Stefan Siegl
ea3ec4bd65
Fix commonjs memory leaks (and increase test coverage to 100%)
2015-08-01 19:30:55 +02:00
Stefan Siegl
bfc6b29989
Use emalloc/estrdup/efree in v8js_commonjs.cc + fix memory leak
2015-08-01 19:07:45 +02:00
Stefan Siegl
3324490a79
test issue_127_001.phpt doesn't depend on ext_json
2015-08-01 18:47:44 +02:00
Stefan Siegl
2ce7e420a7
Fix use-after-free on module reuse
2015-08-01 18:11:39 +02:00
Stefan Siegl
d8e239a756
test per isolate module cache seperation
2015-08-01 17:57:57 +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
754d398ec9
Move v8js_commonjs.cc forward declarations in .h file
2015-08-01 17:09:48 +02:00
Stefan Siegl
8c5716f502
Bump version to 0.2.1
2015-07-26 00:07:58 +02:00
Stefan Siegl
3fff469174
Remove stray V8JS_DEBUG define
...
Currently it just enables RSHUTDOWN code that should print
memory usage statistics. However the code implements API calls
that aren't supported anymore (for a long time).
2015-07-25 23:40:50 +02:00
Stefan Siegl
b30ee1e09b
auto-add CXXFLAG -Wno-c++11-narrowing if possible
2015-07-25 21:36:34 +02:00
Stefan Siegl
cdcfb973a7
Merge pull request #148 from stesie/test-fail-old-v8
...
skip extensions_error test for v8 version < 3.30
2015-07-25 20:48:25 +02:00
Stefan Siegl
f6eacd59d0
Merge pull request #147 from stesie/issue-135
...
Enter endless loop after V8::TerminateExecution call, fixes #135
2015-07-25 20:43:38 +02:00
Stefan Siegl
34242c5d60
skip extensions_error test for v8 version < 3.30
2015-07-25 18:16:04 +02:00
Stefan Siegl
72cb2da9ba
Enter endless loop after V8::TerminateExecution call, fixes #135
...
The V8::TerminateExecution does *not* immediately terminate execution
as its name might suggest. It just marks the given isolate as
"to terminate" and the execution thread checks - from time to time -
whether to terminate. For v8 itself this is not problematic as
the call is thought to stop long-running scripts executed in the
browser context.
As v8js exposes this function to JavaScript with the exit() method,
this behaviour is confusing. In order to stop code execution right
at the exit() call, v8js enters an endless loop and waits for v8
to terminate execution within it.
2015-07-25 17:42:32 +02:00
Stefan Siegl
eafa458620
Merge pull request #146 from stesie/use-arraybufferallocator
...
Provide v8::ArrayBufferAllocator as needed
2015-07-25 17:40:06 +02:00
Stefan Siegl
22e90d1c50
Call v8::V8::SetArrayBufferAllocator for v8 4.4.10 & higher
2015-07-25 17:28:08 +02:00