0
0
mirror of https://github.com/phpv8/v8js.git synced 2024-11-14 15:18:46 +00:00
Commit Graph

149 Commits

Author SHA1 Message Date
Stefan Siegl
68a579f3ae Delete global PHP object on shutdown
Deleting the global object implicitly deletes all the properties,
i.e. PHP objects we previously attached to it (and for which we
increased the reference counter).

Since the following idle notifications trigger the weak callbacks,
the references on the PHP objects are finally decreased.
2013-10-27 00:41:47 +02:00
Stefan Siegl
18b129b128 Trigger garbage collection within Isolate::Scope
Before the idle notifications to V8 were sent without a special
Isolate entered, which results in V8 using it's default isolate
(which we don't use at all).  Hence those were pretty useless
anyways (if they were called, which was unlikely).

Besides V8 seems to not trigger the weak object callbacks if
the isolate is destroyed, hence the PHP objects we add-ref'ed
before will leak.

Therefore this removes the previous idle notification logic
and forces garbage collection from the V8Js object destructor.
2013-10-27 00:41:47 +02:00
Stefan Siegl
c3512587ac Initialize v8js_globals manually only if ZTS is enabled.
If ZTS is disabled, the v8js_globals instance is declared right
in the BSS and hence automatically initialized by C++ compiler.
Most of the variables are just zeroed.

If ZTS is enabled however, v8js_globals just points to a freshly
allocated, unitialized piece of memory, hence we need to
initialize all fields on our own.  Likewise on shutdown we have to
run the destructors manually.
2013-10-27 00:29:50 +02:00
Stefan Siegl
16934c2254 Don't manually call destructors on v8js_globals.
v8js_globals is declared at the beginning of v8js.cc and hence
it's constructors and destructors are run automatically.
2013-10-26 23:57:49 +02:00
Patrick Reilly
1906a8e6b6 Merge pull request #66 from cscott/mem-leaks
Fix init/shutdown of v8js_globals.
2013-10-26 14:26:34 -07:00
C. Scott Ananian
39cc821f91 Store tsrm_ls in php_v8js_ctx.
This avoids the need to ever do a (slow) TSRMLS_FETCH().
2013-10-26 02:07:12 -04:00
C. Scott Ananian
527e636b25 Fix init/shutdown of v8js_globals.
The mutex/map/stack constructor/destructors weren't being properly called.
2013-10-26 02:04:57 -04:00
C. Scott Ananian
303f3f52b5 Refactor template cache into php_v8js_ctx.
Reduce map lookups by adding internal object field pointing to function
template.  Use hidden field to allow easy unwrapping of PHP objects.
2013-10-25 17:40:51 -04:00
C. Scott Ananian
52d8946b89 Add isolate parameter to V8JS_* macros.
This avoids unnecessary calls to Isolate::GetCurrent() in the implementation.
By standardizing on the V8JS_SYM and V8JS_STR macros we also standardize on
UTF-8 encoding for v8 strings.
2013-10-25 16:46:07 -04:00
C. Scott Ananian
0e1c6ef5e9 Clean up allocation/deallocation of php_v8js_ctx.
Use the constructor and destructor functions (don't just cross our fingers
and hope that zeroing out memory will work).
2013-10-25 14:18:50 -04:00
C. Scott Ananian
abadda147c Don't rethrow outer exception if report_uncaught is false.
This would cause the exception to stick around and the next time JavaScript
is executed, this exception would be (anomalously) thrown.
2013-10-25 14:17:40 -04:00
Stefan Siegl
bd9483080d Don't re-wrap PHP objects from V8 to V8Object 2013-10-21 20:00:58 +02:00
Stefan Siegl
61eee4cbd6 TSRM/ZTS fixes. 2013-10-19 23:04:35 +00:00
Stefan Siegl
8eb5721c35 Copy default_properties to new object (PHP 5.3) 2013-10-19 02:52:19 +02:00
Stefan Siegl
c77cdf4b6f Export initially initialized public properties to V8
Before a property was exported to V8 if it was assigned a value
during normal code execution.  However if the value was assigned
(hard coded) on class level it wasn't exported.
2013-10-19 02:36:19 +02:00
Stefan Siegl
257233be51 Make php_v8js_write_property export only public properties
Before a property would have been exported, even if a derived
class declared it either private or protected.
2013-10-19 02:22:13 +02:00
Stefan Siegl
d6a4a3c960 Call object_properties_init on newly created V8Js object. 2013-10-17 23:32:16 +02:00
Anatol Belski
c0290d4a17 fix version macros name 2013-10-15 17:42:02 +02:00
Stefan Siegl
d69f2be50a Add v8 debug support 2013-10-13 11:36:57 +02:00
C. Scott Ananian
035e6faa8b Implement property_exists()/isset()/empty() on wrapped JavaScript objects.
Fixes issue #32.
2013-10-05 11:56:42 -04:00
Stefan Siegl
12e5e01920 Remove Locker from timer thread 2013-10-03 16:57:18 +02:00
Stefan Siegl
619231913c Adapt to new v8::Persistent API, support V8 >= 3.21.12 2013-10-03 16:27:04 +02:00
Stefan Siegl
f90650d630 Create temporary HandleScope to get & call methods likewise, closes #33 2013-10-03 01:15:51 +02:00
Stefan Siegl
1f4caaeead Create temporary HandleScope while reading properties 2013-10-03 01:05:03 +02:00
Stefan Siegl
662e491e1f Pass back v8 functions, don't re-wrap 2013-10-03 00:34:50 +02:00
Anatol Belski
35685ed96c TSRM fixes 2013-09-28 21:49:58 +02:00
Patrick Reilly
dc1475a3ad updated package for beta release and switch license to MIT 2013-09-28 10:17:33 -07:00
Stefan Siegl
ffa42cdfaf Replaced deprecated v8 api calls with newer equivalents 2013-07-08 00:58:19 +02:00
Stefan Siegl
6eeb6fe9d6 Use v8::Isolate version of v8::Context::New 2013-07-07 22:36:56 +02:00
Stefan Siegl
a951b82a40 Use persistent context + Dispose 2013-06-10 16:57:56 +02:00
Stefan Siegl
6106f46d4c Remove leaked temp_context allocation 2013-06-08 01:44:13 +02:00
Patrick Reilly
98638c78db fix for format '%d' expects argument of type 'int', but argument 2 has type 'size_t {aka long unsigned int}' [-Wformat] 2013-05-16 16:59:41 -07:00
Patrick Reilly
6f44220328 fix merge conflict 2013-05-09 15:55:30 -07:00
Simon Best
ef8620f0c2 Fix to start timer thread when there is a memory limit but no time limit. 2013-04-14 12:23:39 +01:00
Simon Best
e778b6d7af Fix for SetFatalErrorHandler. This needs to be called for every context isolate. 2013-04-14 11:19:50 +01:00
Simon Best
8d8c671aa0 V8 isolates need to be passed into all variable accessor and conversion functions. 2013-04-14 00:36:05 +01:00
Simon Best
8ae7606338 Refactor CommonJS modules functionality to store state in the extension globals and context as appropriate. 2013-04-13 00:00:27 +01:00
Simon Best
46e509c0a9 Use the PHP memory management functions emalloc and efree. 2013-04-12 16:49:07 +01:00
Simon Best
147b743d4c Removed v8::V8::Dispose call because it was causing SIGTRAPs in some exit scenarios. This is probably due to using the debug version of V8, but the documentation states that it's not necessary to call this anyway. 2013-04-11 22:57:25 +01:00
Simon Best
93df3411d9 Merged CommonJS modules functionality. 2013-04-11 17:15:55 +01:00
Simon Best
e05f811954 Renamed V8JsException to V8JsScriptException and added V8JsTimeLimitException and V8JsMemoryLimitException classes. 2013-04-11 00:23:47 +01:00
Simon Best
9d9ad831b8 Implemented memory limit checking. Increased stability for V8 execution isolates. 2013-04-11 00:08:05 +01:00
Simon Best
15dc9e157b Script timeout thread to forcefully terminate the current thread of V8 execution in the corresponding isolate.
Note that threads are implemented using std::thread which is only available in C++0x. The relevant compile flags have been added but compiler support has not been tested and is therefore not guaranteed.
2013-04-09 22:52:42 +01:00
Simon Best
84baa7614a First working version of CommonJS modules. 2013-03-24 16:27:13 +00:00
Patrick Reilly
5811659e88 add new version number 2013-03-21 14:41:31 -07:00
Patrick Reilly
dfbd5f0c0c Fixed build in 5.4+ 2012-07-06 17:12:53 -07:00
Dylan Arnold
157fe13c0e Fixes to build in PHP 5.4.3 2012-05-10 22:47:39 +12:00
Patrick Reilly
7593cbcc59 Update copyright information 2012-04-27 16:41:32 +00:00
preilly
30e1d22863 Initial import 2012-04-27 16:26:15 +00:00