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