r9506 - in /trunk/libjavascript-perl: Changes JavaScript.h JavaScript.xs MANIFEST META.yml PJS_Call.c PJS_Call.h PJS_Context.c PJS_Exceptions.h PJS_Runtime.h PJS_TypeConversion.c calls.c debian/changelog t/29-exceptions.t
ntyni-guest at users.alioth.debian.org
ntyni-guest at users.alioth.debian.org
Sat Nov 17 18:58:06 UTC 2007
Author: ntyni-guest
Date: Sat Nov 17 18:58:06 2007
New Revision: 9506
URL: http://svn.debian.org/wsvn/?sc=1&rev=9506
Log:
* New upstream release
Added:
trunk/libjavascript-perl/PJS_Call.c
- copied, changed from r8645, trunk/libjavascript-perl/calls.c
trunk/libjavascript-perl/PJS_Call.h
Removed:
trunk/libjavascript-perl/calls.c
Modified:
trunk/libjavascript-perl/Changes
trunk/libjavascript-perl/JavaScript.h
trunk/libjavascript-perl/JavaScript.xs
trunk/libjavascript-perl/MANIFEST
trunk/libjavascript-perl/META.yml
trunk/libjavascript-perl/PJS_Context.c
trunk/libjavascript-perl/PJS_Exceptions.h
trunk/libjavascript-perl/PJS_Runtime.h
trunk/libjavascript-perl/PJS_TypeConversion.c
trunk/libjavascript-perl/debian/changelog
trunk/libjavascript-perl/t/29-exceptions.t
Modified: trunk/libjavascript-perl/Changes
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/Changes?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/Changes (original)
+++ trunk/libjavascript-perl/Changes Sat Nov 17 18:58:06 2007
@@ -1,6 +1,7 @@
Revision history for Perl extension JavaScript.
-1.04 Tue Apr 17 2007
+1.04 Sat Nov 17 2007
+ - Skip exception tests on engines less than 1.7 since these seem to be broken.
- Free memory allocated by JS_smprintf when converting from utf8 strings (spotted by Ash Berlin)
- Don't call js_ValueToXMLString but instead call JS method "toXMLString" on the object [rt.cpan.org #26411]
- Convert 64bit Perl ints to JSDouble if they are too big to fit in JS ints [rt.cpan.org #26474] (Niko Tyni)
Modified: trunk/libjavascript-perl/JavaScript.h
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/JavaScript.h?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/JavaScript.h (original)
+++ trunk/libjavascript-perl/JavaScript.h Sat Nov 17 18:58:06 2007
@@ -18,6 +18,7 @@
#include "JavaScript_Env.h"
+#include "PJS_Call.h"
#include "PJS_Types.h"
#include "PJS_Runtime.h"
#include "PJS_Context.h"
@@ -28,40 +29,6 @@
#include "PJS_TypeConversion.h"
#include "PJS_Common.h"
-/* Function prototypes */
-
-/* pjs_property.c */
-
-/* pjs_function.c */
-
-/* pjs_class.c */
-PJS_EXTERN JSBool
-perl_call_jsfunc(JSContext *, JSObject *, uintN , jsval *, jsval *);
-
-PJS_EXTERN JSBool
-PJS_call_javascript_function(PJS_Context *, jsval , SV *, jsval *);
-
-PJS_EXTERN I32
-perl_call_sv_with_jsvals(JSContext *, JSObject *, SV *, SV *, uintN , jsval *, jsval *);
-
-PJS_EXTERN I32
-perl_call_sv_with_jsvals_rsv(JSContext *, JSObject *, SV *, SV *, uintN , jsval *, SV **);
-
-PJS_EXTERN SV *
-PJS_call_perl_method(const char *, ...);
-
-PJS_EXTERN void
-PJS_report_exception(PJS_Context *);
-
-PJS_EXTERN JSBool
-PJS_invoke_perl_function(JSContext *, JSObject *, uintN, jsval *, jsval *);
-
-PJS_EXTERN JSTrapStatus
-PJS_trap_handler(JSContext *, JSScript *, jsbytecode *, jsval *, void *);
-
-PJS_EXTERN JSTrapStatus
-PJS_perl_trap_handler(JSContext *, JSScript *, jsbytecode *, jsval *, void *);
-
#ifdef __cplusplus
}
#endif
Modified: trunk/libjavascript-perl/JavaScript.xs
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/JavaScript.xs?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/JavaScript.xs (original)
+++ trunk/libjavascript-perl/JavaScript.xs Sat Nov 17 18:58:06 2007
@@ -265,8 +265,10 @@
jsc_free_root(cx, root)
PJS_Context *cx;
SV *root;
- CODE:
- jsval *x = INT2PTR(jsval *, SvIV(root));
+ PREINIT:
+ jsval *x;
+ CODE:
+ x = INT2PTR(jsval *, SvIV(root));
JS_RemoveRoot(PJS_GetJSContext(cx), x);
jsval
@@ -334,6 +336,7 @@
AV *av;
SV *val, *value;
IV tmp;
+ JSObject *jsobj;
CODE:
tmp = SvIV((SV *) SvRV(PJS_call_perl_method("content", afunc, NULL)));
func = INT2PTR(JSFunction *,tmp);
@@ -349,7 +352,7 @@
if (PJS_ConvertPerlToJSType(PJS_GetJSContext(cx), NULL, JS_GetGlobalObject(PJS_GetJSContext(cx)), rcx, &context) == JS_FALSE) {
croak("cannot convert JS context to JSVAL");
}
- JSObject *jsobj = JSVAL_TO_OBJECT(context);
+ jsobj = JSVAL_TO_OBJECT(context);
if (strlen(class) > 0) {
if( JS_GetProperty(PJS_GetJSContext(cx), JS_GetGlobalObject(PJS_GetJSContext(cx)), class, &aval) == JS_FALSE ) {
Modified: trunk/libjavascript-perl/MANIFEST
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/MANIFEST?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/MANIFEST (original)
+++ trunk/libjavascript-perl/MANIFEST Sat Nov 17 18:58:06 2007
@@ -1,39 +1,39 @@
+CREDITS
Changes
+JavaScript.h
+JavaScript.xs
MANIFEST
+META.yml
Makefile.PL
+PJS_Call.c
+PJS_Call.h
+PJS_Class.c
+PJS_Class.h
+PJS_Common.h
+PJS_Context.c
+PJS_Context.h
+PJS_Exceptions.c
+PJS_Exceptions.h
+PJS_Function.c
+PJS_Function.h
+PJS_Property.c
+PJS_Property.h
+PJS_Runtime.c
+PJS_Runtime.h
+PJS_Script.h
+PJS_TypeConversion.c
+PJS_TypeConversion.h
+PJS_Types.h
README
-CREDITS
TODO
lib/JavaScript.pm
+lib/JavaScript/Boxed.pm
lib/JavaScript/Context.pm
-lib/JavaScript/Boxed.pm
lib/JavaScript/Error.pm
lib/JavaScript/Function.pm
lib/JavaScript/Runtime.pm
lib/JavaScript/Script.pm
lib/Test/JavaScript/More.pm
-JavaScript.xs
-PJS_Context.c
-PJS_Context.h
-PJS_Exceptions.h
-PJS_Exceptions.c
-PJS_Property.c
-PJS_Property.h
-PJS_Class.c
-PJS_Class.h
-PJS_Function.c
-PJS_Function.h
-PJS_Script.h
-PJS_Types.h
-calls.c
-exceptions.c
-PJS_TypeConversion.c
-PJS_TypeConversion.h
-PJS_Runtime.c
-PJS_Runtime.h
-PJS_Common.h
-JavaScript.h
-typemap
t/00-init.t
t/01-types-from-js.t
t/02-types-from-perl.t
@@ -41,8 +41,8 @@
t/04-prototypes.t
t/05-deep-assign.t
t/06-bind-object.t
+t/07-eval-file.js
t/07-eval-file.t
-t/07-eval-file.js
t/08-can.t
t/09-script.t
t/10-round-trip.t
@@ -65,6 +65,6 @@
t/28-test-javascript-more.t
t/29-exceptions.t
t/99-bottles-of-beer.t
+t/pod-coverage.t
t/pod.t
-t/pod-coverage.t
-META.yml Module meta-data (added by MakeMaker)
+typemap
Modified: trunk/libjavascript-perl/META.yml
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/META.yml?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/META.yml (original)
+++ trunk/libjavascript-perl/META.yml Sat Nov 17 18:58:06 2007
@@ -1,12 +1,15 @@
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
-name: JavaScript
-version: 1.00
-version_from: lib/JavaScript.pm
-installdirs: site
-requires:
+--- #YAML:1.0
+name: JavaScript
+version: 1.04
+abstract: Perl extension for executing embedded JavaScript
+license: perl
+generated_by: ExtUtils::MakeMaker version 6.36
+distribution_type: module
+requires:
Test::Exception: 0
Test::More: 0
-
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.17
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.2.html
+ version: 1.2
+author:
+ - Claes Jakobsson <claesjac at cpan.org>
Copied: trunk/libjavascript-perl/PJS_Call.c (from r8645, trunk/libjavascript-perl/calls.c)
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/PJS_Call.c?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/calls.c (original)
+++ trunk/libjavascript-perl/PJS_Call.c Sat Nov 17 18:58:06 2007
@@ -1,4 +1,12 @@
-#include "JavaScript.h"
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#include "JavaScript_Env.h"
+
+#include "PJS_Call.h"
+#include "PJS_Context.h"
+#include "PJS_TypeConversion.h"
SV *PJS_call_perl_method(const char *method, ...) {
dSP;
Added: trunk/libjavascript-perl/PJS_Call.h
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/PJS_Call.h?rev=9506&op=file
==============================================================================
--- trunk/libjavascript-perl/PJS_Call.h (added)
+++ trunk/libjavascript-perl/PJS_Call.h Sat Nov 17 18:58:06 2007
@@ -1,0 +1,35 @@
+/*!
+ @header PJS_Call.h
+ @abstract Types and functions related to calling methods and functions
+*/
+
+#ifndef __PJS_CALL_H__
+#define __PJS_CALL_H__
+
+#ifdef _cplusplus
+extern "C" {
+#endif
+
+#include "perl.h"
+
+#include "JavaScript_Env.h"
+
+#include "PJS_Types.h"
+#include "PJS_Common.h"
+
+PJS_EXTERN SV *
+PJS_call_perl_method(const char *, ...);
+
+PJS_EXTERN I32
+perl_call_sv_with_jsvals_rsv(JSContext *, JSObject *, SV *, SV *, uintN, jsval *, SV **);
+
+PJS_EXTERN I32
+perl_call_sv_with_jsvals(JSContext *, JSObject *, SV *, SV *, uintN, jsval *, jsval *);
+
+PJS_EXTERN JSBool
+PJS_call_javascript_function(PJS_Context *, jsval, SV *, jsval *);
+
+PJS_EXTERN JSBool
+perl_call_jsfunc(JSContext *, JSObject *, uintN, jsval *, jsval *);
+
+#endif
Modified: trunk/libjavascript-perl/PJS_Context.c
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/PJS_Context.c?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/PJS_Context.c (original)
+++ trunk/libjavascript-perl/PJS_Context.c Sat Nov 17 18:58:06 2007
@@ -122,20 +122,24 @@
Free memory occupied by PJS_Context structure
*/
void PJS_DestroyContext(PJS_Context *pcx) {
+ PJS_Function *pfunc, *pfunc_next;
+ PJS_Class *pcls, *pcls_next;
+
if (pcx == NULL) {
return;
}
+ pfunc = pcx->functions;
+
/* Check if we have any bound functions */
- PJS_Function *pfunc = pcx->functions, *pfunc_next;
while (pfunc != NULL) {
pfunc_next = pfunc->_next;
PJS_DestroyFunction(pfunc);
pfunc = pfunc_next;
}
+ pcls = pcx->classes;
/* Check if we have any bound classes */
- PJS_Class *pcls = pcx->classes, *pcls_next;
while (pcls != NULL) {
pcls_next = pcls->_next;
PJS_free_class(pcls);
Modified: trunk/libjavascript-perl/PJS_Exceptions.h
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/PJS_Exceptions.h?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/PJS_Exceptions.h (original)
+++ trunk/libjavascript-perl/PJS_Exceptions.h Sat Nov 17 18:58:06 2007
@@ -13,7 +13,15 @@
#include "perl.h"
#include "JavaScript_Env.h"
-
+
+#include "PJS_Context.h"
+
+PJS_EXTERN void
+PJS_report_exception(PJS_Context *);
+
+PJS_EXTERN void
+PJS_error_handler(JSContext *, const char *, JSErrorReport *);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/libjavascript-perl/PJS_Runtime.h
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/PJS_Runtime.h?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/PJS_Runtime.h (original)
+++ trunk/libjavascript-perl/PJS_Runtime.h Sat Nov 17 18:58:06 2007
@@ -74,6 +74,12 @@
PJS_EXTERN void
PJS_RemoveTrapHandler(PJS_Runtime *fromRuntime, PJS_TrapHandler *trapHandler);
+PJS_EXTERN JSTrapStatus
+PJS_trap_handler(JSContext *, JSScript *, jsbytecode *, jsval *, void *);
+
+PJS_EXTERN JSTrapStatus
+PJS_perl_trap_handler(JSContext *, JSScript *, jsbytecode *, jsval *, void *);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/libjavascript-perl/PJS_TypeConversion.c
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/PJS_TypeConversion.c?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/PJS_TypeConversion.c (original)
+++ trunk/libjavascript-perl/PJS_TypeConversion.c Sat Nov 17 18:58:06 2007
@@ -1,5 +1,6 @@
#include "JavaScript.h"
+#include "PJS_Call.h"
#include "PJS_Context.h"
JSBool checkSeen( JSContext *cx, JSObject *seen, SV *ref, jsval *rval ) {
@@ -113,19 +114,8 @@
/* Most likely it's an hash that is returned */
if(type == SVt_PVHV) {
+ JSObject *new_obj;
HV *hv = (HV *) SvRV(ref);
-
- if ( checkSeen( cx, seen, (SV*)hv, rval ) == JS_TRUE )
- return JS_TRUE;
-
- JSObject *new_obj;
- new_obj = JS_NewObject(cx, NULL, NULL, NULL);
- if(new_obj == NULL)
- croak("Failed to create new JavaScript object");
-
- setSeen( cx, seen, (SV*)hv, OBJECT_TO_JSVAL(new_obj) );
-
- /* Assign properties, lets iterate over the hash */
I32 items;
HE *key;
char *keyname;
@@ -133,7 +123,17 @@
STRLEN keylen;
SV *keyval;
jsval elem;
-
+
+ if ( checkSeen( cx, seen, (SV*)hv, rval ) == JS_TRUE )
+ return JS_TRUE;
+
+ new_obj = JS_NewObject(cx, NULL, NULL, NULL);
+ if(new_obj == NULL)
+ croak("Failed to create new JavaScript object");
+
+ setSeen( cx, seen, (SV*)hv, OBJECT_TO_JSVAL(new_obj) );
+
+ /* Assign properties, lets iterate over the hash */
items = hv_iterinit(hv);
while((key = hv_iternext(hv)) != NULL) {
@@ -190,16 +190,15 @@
*rval = OBJECT_TO_JSVAL(new_obj);
} else if(type == SVt_PVAV) {
- /* Then it's probablly an array */
- AV *av = (AV *) SvRV(ref);
-
- if ( checkSeen( cx, seen, (SV*)av, rval ) == JS_TRUE )
- return JS_TRUE;
-
jsint av_length;
jsint cnt;
jsval *elems;
JSObject *arr_obj;
+ /* Then it's probablly an array */
+ AV *av = (AV *) SvRV(ref);
+
+ if ( checkSeen( cx, seen, (SV*)av, rval ) == JS_TRUE )
+ return JS_TRUE;
arr_obj = JS_NewArrayObject(cx, 0, NULL);
@@ -290,6 +289,10 @@
else {
if (JSVAL_IS_OBJECT(v)) {
JSObject *object = JSVAL_TO_OBJECT(v);
+ int destroy_hv;
+ SV **used;
+ char hkey[32];
+ int klen;
/* stringify object with a default value for now, such as
String. We might want to actually tie the object in the
@@ -307,8 +310,9 @@
if (OBJECT_IS_XML(cx,object)) {
/* We can't use private functions so let's call the toString method on the object */
jsval tv;
+ JSString *xmlstring;
JS_CallFunctionName(cx, object, "toXMLString", 0, NULL, &tv);
- JSString *xmlstring = JS_ValueToString(cx,tv);
+ xmlstring = JS_ValueToString(cx,tv);
sv_setpv(*sv, JS_GetStringBytes(xmlstring));
SvUTF8_on(*sv);
return JS_TRUE;
@@ -350,15 +354,13 @@
}
}
- int destroy_hv = 0;
+ destroy_hv = 0;
if (!seen) {
seen = newHV();
destroy_hv = 1;
}
- SV **used;
- char hkey[32];
- int klen = snprintf(hkey, 32, "%p", object);
+ klen = snprintf(hkey, 32, "%p", object);
if ((used = hv_fetch(seen, hkey, klen, 0)) != NULL) {
sv_setsv(*sv, *used);
return JS_TRUE;
@@ -405,10 +407,11 @@
JS_GetArrayLength(cx, object, &jsarrlen);
for(index = 0; index < jsarrlen; index++) {
- JS_GetElement(cx, object, index, &elem);
-
SV *elem_sv;
+
+ JS_GetElement(cx, object, index, &elem);
elem_sv = newSV(0);
+
JSVALToSV(cx, seen, elem, &elem_sv);
av_push(av, elem_sv);
}
@@ -436,6 +439,7 @@
if(JSVAL_IS_STRING(key)) {
jsval value;
+ SV *val_sv;
SV *js_key_sv = newSV(0);
char *js_key = JS_GetStringBytes(JSVAL_TO_STRING(key));
@@ -452,7 +456,6 @@
croak("this can't happen.");
}
- SV *val_sv;
val_sv = newSV(0);
JSVALToSV(cx, seen, value, &val_sv);
hv_store_ent(hv, js_key_sv, val_sv, 0);
Modified: trunk/libjavascript-perl/debian/changelog
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/debian/changelog?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/debian/changelog (original)
+++ trunk/libjavascript-perl/debian/changelog Sat Nov 17 18:58:06 2007
@@ -1,3 +1,9 @@
+libjavascript-perl (1.04-1) UNRELEASED; urgency=low
+
+ * New upstream release
+
+ -- Niko Tyni <ntyni at iki.fi> Sat, 17 Nov 2007 20:13:38 +0200
+
libjavascript-perl (1.04~svn20070804r469-1) UNRELEASED; urgency=low
UNRELEASED only because it would be nice to have an ack from
Modified: trunk/libjavascript-perl/t/29-exceptions.t
URL: http://svn.debian.org/wsvn/trunk/libjavascript-perl/t/29-exceptions.t?rev=9506&op=diff
==============================================================================
--- trunk/libjavascript-perl/t/29-exceptions.t (original)
+++ trunk/libjavascript-perl/t/29-exceptions.t Sat Nov 17 18:58:06 2007
@@ -1,10 +1,18 @@
#!perl
use strict;
-use Test::More tests => 17;
-
-use Data::Dumper;
+use Test::More;
use JavaScript;
+
+BEGIN {
+ # Skip these test if we don't have JavaScript 1.7 or later
+ my $version = (JavaScript::get_engine_version())[1];
+ $version =~ s/\.\d$// if $version =~ /\d+\.\d+\.\d+$/;
+ plan skip_all => "Engine version 1.7 or later require" if $version < 1.7;
+}
+
+plan tests => 17;
+
my $runtime = new JavaScript::Runtime();
my $context = $runtime->create_context();
@@ -70,7 +78,7 @@
EOP
is($ret, undef);
-like($@, qr/at main line 67 in 1/);
+like($@, qr/at main line 75 in 1/);
$ret = $context->eval(<<EOP);
More information about the Pkg-perl-cvs-commits
mailing list