r53401 - in /branches/upstream/libjavascript-perl/current: Changes JavaScript.xs META.yml PJS_Class.c PJS_Context.c PJS_TypeConversion.c lib/JavaScript.pm lib/JavaScript/Context.pm lib/JavaScript/Generator.pm
jawnsy-guest at users.alioth.debian.org
jawnsy-guest at users.alioth.debian.org
Sun Feb 28 17:12:29 UTC 2010
Author: jawnsy-guest
Date: Sun Feb 28 17:12:06 2010
New Revision: 53401
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=53401
Log:
[svn-upgrade] Integrating new upstream version, libjavascript-perl (1.16)
Modified:
branches/upstream/libjavascript-perl/current/Changes
branches/upstream/libjavascript-perl/current/JavaScript.xs
branches/upstream/libjavascript-perl/current/META.yml
branches/upstream/libjavascript-perl/current/PJS_Class.c
branches/upstream/libjavascript-perl/current/PJS_Context.c
branches/upstream/libjavascript-perl/current/PJS_TypeConversion.c
branches/upstream/libjavascript-perl/current/lib/JavaScript.pm
branches/upstream/libjavascript-perl/current/lib/JavaScript/Context.pm
branches/upstream/libjavascript-perl/current/lib/JavaScript/Generator.pm
Modified: branches/upstream/libjavascript-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/Changes?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/Changes (original)
+++ branches/upstream/libjavascript-perl/current/Changes Sun Feb 28 17:12:06 2010
@@ -1,5 +1,9 @@
Revision history for Perl extension JavaScript.
+1.16 2010-02-20
+ - Fixed a bunch of memory leaks (Scott++ for reporting them)
+ - Added some missing private docs for jsc_set_pending_exception
+
1.15 2010-01-04
- It's now possible to set a pending exception in the context from Perl space (Scott McWhirter)
- can now set JS_LIB_NAME in environment prior to running perl Makefile.PL
Modified: branches/upstream/libjavascript-perl/current/JavaScript.xs
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/JavaScript.xs?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/JavaScript.xs (original)
+++ branches/upstream/libjavascript-perl/current/JavaScript.xs Sun Feb 28 17:12:06 2010
@@ -10,7 +10,7 @@
typedef PJS_PerlArray * JavaScript__PerlArray;
typedef PJS_PerlHash * JavaScript__PerlHash;
-typedef PJS_PerlSub * Javascript__PerlSub;
+typedef PJS_PerlSub * JavaScript__PerlSub;
typedef PJS_Class * JavaScript__PerlClass;
typedef PJS_Function * JavaScript__PerlFunction;
typedef PJS_Context * JavaScript__Context;
@@ -541,7 +541,7 @@
JavaScript::PerlArray obj;
CODE:
if (obj->av != NULL) {
- av_undef(obj->av);
+ SvREFCNT_dec(obj->av);
}
obj->av = NULL;
Safefree(obj);
@@ -572,11 +572,19 @@
JavaScript::PerlHash obj;
CODE:
if (obj->hv != NULL) {
- hv_undef(obj->hv);
+ SvREFCNT_dec(obj->hv);
}
obj->hv = NULL;
Safefree(obj);
+MODULE = JavaScript PACKAGE = JavaScript::PerlSub
+
+void
+DESTROY(obj)
+ JavaScript::PerlSub obj;
+ CODE:
+ Safefree(obj);
+
MODULE = JavaScript PACKAGE = JavaScript::PerlClass
void
Modified: branches/upstream/libjavascript-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/META.yml?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/META.yml (original)
+++ branches/upstream/libjavascript-perl/current/META.yml Sun Feb 28 17:12:06 2010
@@ -1,6 +1,6 @@
--- #YAML:1.0
name: JavaScript
-version: 1.15
+version: 1.16
abstract: Perl extension for executing embedded JavaScript
author:
- Claes Jakobsson <claesjac at cpan.org>
Modified: branches/upstream/libjavascript-perl/current/PJS_Class.c
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/PJS_Class.c?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/PJS_Class.c (original)
+++ branches/upstream/libjavascript-perl/current/PJS_Class.c Sun Feb 28 17:12:06 2010
@@ -49,7 +49,6 @@
void PJS_free_class(PJS_Class *pcls) {
PJS_Function *method;
PJS_Property *property;
-
if (pcls == NULL) {
return;
}
@@ -61,7 +60,7 @@
if (pcls->pkg != NULL) {
Safefree(pcls->pkg);
}
-
+
method = pcls->methods;
while (method != NULL) {
PJS_Function *next = method->_next;
@@ -80,10 +79,11 @@
PJS_free_JSPropertySpec(pcls->ps);
PJS_free_JSPropertySpec(pcls->static_ps);
- if (pcls->flags & PJS_FREE_JSCLASS) {
+ /* Seems like SM handles this part for us */
+/* if (pcls->flags & PJS_FREE_JSCLASS) {
Safefree(pcls->clasp->name);
Safefree(pcls->clasp);
- }
+ } */
Safefree(pcls);
}
@@ -159,7 +159,7 @@
PJS_construct_perl_object, 0,
pcls->ps /* ps */, pcls->fs,
pcls->static_ps /* static_ps */, pcls->static_fs /* static_fs */);
-
+
if (pcls->proto == NULL) {
PJS_free_class(pcls);
croak("Failed to initialize class in context");
@@ -175,16 +175,19 @@
void PJS_store_class(PJS_Context *pcx, PJS_Class *cls) {
/* Add class to list of classes in contexts */
SV *sv = newSV(0);
- sv_setref_pv(sv, "JavaScript::PerlClass", (void*) cls);
+ sv_setref_pv(sv, "JavaScript::PerlClass", (void*) cls);
if (cls->clasp->name != NULL) {
- SvREFCNT_inc(sv);
- hv_store(pcx->class_by_name, cls->clasp->name, strlen(cls->clasp->name), sv, 0);
+ if(hv_store(pcx->class_by_name, cls->clasp->name, strlen(cls->clasp->name), sv, 0) == NULL) {
+ /* TODO: better error here */
+ croak("Failed to store class: %s in class_by_name in context", cls->clasp->name);
+ return;
+ }
}
if (cls->pkg != NULL) {
- SvREFCNT_inc(sv);
- hv_store(pcx->class_by_package, cls->pkg, strlen(cls->pkg), sv, 0);
+ SvREFCNT_inc(sv);
+ hv_store(pcx->class_by_package, cls->pkg, strlen(cls->pkg), sv, 0);
}
}
@@ -218,7 +221,7 @@
}
/* Check if we are allowed to instanciate this class */
- if ((pcls->flags & PJS_CLASS_NO_INSTANCE)) {
+ if (pcls->flags & PJS_CLASS_NO_INSTANCE) {
JS_ReportError(cx, "Class '%s' can't be instanciated", pcls->clasp->name);
return JS_FALSE;
}
@@ -233,7 +236,7 @@
JS_SetPrivate(cx, obj, (void *) rsv);
}
-
+
return JS_TRUE;
}
Modified: branches/upstream/libjavascript-perl/current/PJS_Context.c
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/PJS_Context.c?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/PJS_Context.c (original)
+++ branches/upstream/libjavascript-perl/current/PJS_Context.c Sun Feb 28 17:12:06 2010
@@ -142,18 +142,18 @@
}
if (pcx->function_by_name) {
- hv_undef(pcx->function_by_name);
+ SvREFCNT_dec(pcx->function_by_name);
pcx->function_by_name = NULL;
}
if (pcx->class_by_name) {
- hv_undef(pcx->class_by_name);
+ SvREFCNT_dec(pcx->class_by_name);
pcx->class_by_name = NULL;
}
if (pcx->class_by_package) {
- hv_undef(pcx->class_by_package);
- pcx->class_by_package = NULL;
+ SvREFCNT_dec(pcx->class_by_package);
+ pcx->class_by_package = NULL;
}
/* Destory context */
Modified: branches/upstream/libjavascript-perl/current/PJS_TypeConversion.c
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/PJS_TypeConversion.c?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/PJS_TypeConversion.c (original)
+++ branches/upstream/libjavascript-perl/current/PJS_TypeConversion.c Sun Feb 28 17:12:06 2010
@@ -381,7 +381,7 @@
SV *content = sv_2mortal(newRV_noinc(newSViv(PTR2IV(object))));
SV *pcx = sv_2mortal(newSViv(PTR2IV(PJS_GET_CONTEXT(cx))));
jsval *x;
-
+
Newz(1, x, 1, jsval);
if (x == NULL) {
croak("Failed to allocate memory for jsval");
@@ -395,7 +395,7 @@
sv_2mortal(newSViv(PTR2IV(x))), NULL));
return JS_TRUE;
}
-
+
destroy_hv = 0;
if (!seen) {
seen = newHV();
@@ -420,7 +420,7 @@
}
if (destroy_hv) {
- hv_undef(seen);
+ SvREFCNT_dec(seen);
}
}
else {
@@ -483,7 +483,7 @@
jsval value;
SV *val_sv;
- SV *js_key_sv = newSV(0);
+ SV *js_key_sv = sv_newmortal();
char *js_key = JS_GetStringBytes(JSVAL_TO_STRING(key));
sv_setpv(js_key_sv, js_key);
Modified: branches/upstream/libjavascript-perl/current/lib/JavaScript.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/lib/JavaScript.pm?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/lib/JavaScript.pm (original)
+++ branches/upstream/libjavascript-perl/current/lib/JavaScript.pm Sun Feb 28 17:12:06 2010
@@ -23,7 +23,7 @@
our %EXPORT_TAGS = ( all => [@EXPORT_OK] );
-our $VERSION = "1.15";
+our $VERSION = "1.16";
our $MAXBYTES = 1024 ** 2;
Modified: branches/upstream/libjavascript-perl/current/lib/JavaScript/Context.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/lib/JavaScript/Context.pm?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/lib/JavaScript/Context.pm (original)
+++ branches/upstream/libjavascript-perl/current/lib/JavaScript/Context.pm Sun Feb 28 17:12:06 2010
@@ -559,6 +559,10 @@
The handler is called when a script branches backwards during execution, when a function returns and the end of the script. To continue execution the handler must return a true value. To abort execution either throw an exception or return a false value.
+=item set_pending_exception ( $value )
+
+Converts the I<$value> to JavaScript and sets it as the pending exception for the context.
+
=item get_version ( )
Returns the runtime version of the context as a string, for exmaple C<1.7> or or C<ECMAv3>.
@@ -686,6 +690,10 @@
Return the address of the context for identification purposes.
+=item jsc_set_pending_exception ( PJS_Context *context, SV *exception )
+
+Set a pending exception on the context
+
=back
=end PRIVATE
Modified: branches/upstream/libjavascript-perl/current/lib/JavaScript/Generator.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjavascript-perl/current/lib/JavaScript/Generator.pm?rev=53401&op=diff
==============================================================================
--- branches/upstream/libjavascript-perl/current/lib/JavaScript/Generator.pm (original)
+++ branches/upstream/libjavascript-perl/current/lib/JavaScript/Generator.pm Sun Feb 28 17:12:06 2010
@@ -16,5 +16,45 @@
return $NF->( $self );
}
+1;
+__END__
-1;
+=head1 NAME
+
+JavaScript::Generator - Boxed Perl object of a JavaScript generator
+
+=head1 DESCRIPTION
+
+Generators were introduced in JavaScript 1.7. When you 'yield' from JS you'll be returned
+an instance of this class that you can use to retrieve the next value from the generator.
+
+For example
+
+ function fib() {
+ var i = 0, j = 1;
+ while (true) {
+ yield i;
+ var t = i;
+ i = j;
+ j += t;
+ }
+ }
+
+ var g = fib();
+ for (var i = 0; i < 10; i++) {
+ document.write(g.next() + "<br>\n");
+ }
+
+=head1 INTERFACE
+
+=head2 INSTANCE METHODS
+
+=over 4
+
+=item next
+
+Retrieve the next value.
+
+=back
+
+=cut
More information about the Pkg-perl-cvs-commits
mailing list