johnson 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.autotest +14 -0
- data/CHANGELOG.rdoc +11 -0
- data/Manifest.txt +370 -0
- data/README.rdoc +60 -0
- data/Rakefile +42 -0
- data/bin/johnson +108 -0
- data/docs/MINGW32.mk +124 -0
- data/docs/cross-compile.txt +38 -0
- data/ext/spidermonkey/context.c +115 -0
- data/ext/spidermonkey/context.h +19 -0
- data/ext/spidermonkey/conversions.c +320 -0
- data/ext/spidermonkey/conversions.h +18 -0
- data/ext/spidermonkey/debugger.c +226 -0
- data/ext/spidermonkey/debugger.h +9 -0
- data/ext/spidermonkey/extconf.rb +30 -0
- data/ext/spidermonkey/extensions.c +37 -0
- data/ext/spidermonkey/extensions.h +12 -0
- data/ext/spidermonkey/global.c +40 -0
- data/ext/spidermonkey/global.h +11 -0
- data/ext/spidermonkey/idhash.c +16 -0
- data/ext/spidermonkey/idhash.h +8 -0
- data/ext/spidermonkey/immutable_node.c +1153 -0
- data/ext/spidermonkey/immutable_node.c.erb +523 -0
- data/ext/spidermonkey/immutable_node.h +22 -0
- data/ext/spidermonkey/jroot.h +187 -0
- data/ext/spidermonkey/js_land_proxy.c +610 -0
- data/ext/spidermonkey/js_land_proxy.h +20 -0
- data/ext/spidermonkey/ruby_land_proxy.c +543 -0
- data/ext/spidermonkey/ruby_land_proxy.h +17 -0
- data/ext/spidermonkey/runtime.c +330 -0
- data/ext/spidermonkey/runtime.h +25 -0
- data/ext/spidermonkey/spidermonkey.c +20 -0
- data/ext/spidermonkey/spidermonkey.h +29 -0
- data/johnson.gemspec +44 -0
- data/js/johnson/cli.js +30 -0
- data/js/johnson/prelude.js +80 -0
- data/lib/johnson.rb +55 -0
- data/lib/johnson/cli.rb +7 -0
- data/lib/johnson/cli/options.rb +67 -0
- data/lib/johnson/error.rb +4 -0
- data/lib/johnson/nodes.rb +7 -0
- data/lib/johnson/nodes/binary_node.rb +65 -0
- data/lib/johnson/nodes/for.rb +14 -0
- data/lib/johnson/nodes/for_in.rb +12 -0
- data/lib/johnson/nodes/function.rb +13 -0
- data/lib/johnson/nodes/list.rb +28 -0
- data/lib/johnson/nodes/node.rb +68 -0
- data/lib/johnson/nodes/ternary_node.rb +20 -0
- data/lib/johnson/parser.rb +21 -0
- data/lib/johnson/parser/syntax_error.rb +13 -0
- data/lib/johnson/runtime.rb +63 -0
- data/lib/johnson/spidermonkey/context.rb +10 -0
- data/lib/johnson/spidermonkey/debugger.rb +67 -0
- data/lib/johnson/spidermonkey/immutable_node.rb +282 -0
- data/lib/johnson/spidermonkey/js_land_proxy.rb +62 -0
- data/lib/johnson/spidermonkey/mutable_tree_visitor.rb +242 -0
- data/lib/johnson/spidermonkey/ruby_land_proxy.rb +54 -0
- data/lib/johnson/spidermonkey/runtime.rb +103 -0
- data/lib/johnson/version.rb +3 -0
- data/lib/johnson/visitable.rb +16 -0
- data/lib/johnson/visitors.rb +5 -0
- data/lib/johnson/visitors/dot_visitor.rb +169 -0
- data/lib/johnson/visitors/ecma_visitor.rb +323 -0
- data/lib/johnson/visitors/enumerating_visitor.rb +15 -0
- data/lib/johnson/visitors/sexp_visitor.rb +174 -0
- data/lib/johnson/visitors/visitor.rb +91 -0
- data/lib/rails/init.rb +37 -0
- data/lib/tasks/gem.rake +9 -0
- data/lib/tasks/parsing.rake +37 -0
- data/lib/tasks/testing.rake +36 -0
- data/lib/tasks/vendor.rake +20 -0
- data/test/helper.rb +55 -0
- data/test/johnson/browser_test.rb +43 -0
- data/test/johnson/conversions/array_test.rb +32 -0
- data/test/johnson/conversions/boolean_test.rb +17 -0
- data/test/johnson/conversions/callable_test.rb +34 -0
- data/test/johnson/conversions/file_test.rb +15 -0
- data/test/johnson/conversions/nil_test.rb +20 -0
- data/test/johnson/conversions/number_test.rb +34 -0
- data/test/johnson/conversions/regexp_test.rb +24 -0
- data/test/johnson/conversions/string_test.rb +26 -0
- data/test/johnson/conversions/struct_test.rb +15 -0
- data/test/johnson/conversions/symbol_test.rb +19 -0
- data/test/johnson/conversions/thread_test.rb +24 -0
- data/test/johnson/error_test.rb +9 -0
- data/test/johnson/extensions_test.rb +56 -0
- data/test/johnson/nodes/array_literal_test.rb +57 -0
- data/test/johnson/nodes/array_node_test.rb +26 -0
- data/test/johnson/nodes/binary_node_test.rb +61 -0
- data/test/johnson/nodes/bracket_access_test.rb +16 -0
- data/test/johnson/nodes/delete_test.rb +11 -0
- data/test/johnson/nodes/do_while_test.rb +12 -0
- data/test/johnson/nodes/dot_accessor_test.rb +15 -0
- data/test/johnson/nodes/export_test.rb +9 -0
- data/test/johnson/nodes/for_test.rb +54 -0
- data/test/johnson/nodes/function_test.rb +71 -0
- data/test/johnson/nodes/if_test.rb +41 -0
- data/test/johnson/nodes/import_test.rb +13 -0
- data/test/johnson/nodes/label_test.rb +19 -0
- data/test/johnson/nodes/let_test.rb +31 -0
- data/test/johnson/nodes/object_literal_test.rb +110 -0
- data/test/johnson/nodes/return_test.rb +16 -0
- data/test/johnson/nodes/semi_test.rb +8 -0
- data/test/johnson/nodes/switch_test.rb +55 -0
- data/test/johnson/nodes/ternary_test.rb +25 -0
- data/test/johnson/nodes/throw_test.rb +9 -0
- data/test/johnson/nodes/try_node_test.rb +59 -0
- data/test/johnson/nodes/typeof_test.rb +11 -0
- data/test/johnson/nodes/unary_node_test.rb +23 -0
- data/test/johnson/nodes/void_test.rb +11 -0
- data/test/johnson/nodes/while_test.rb +26 -0
- data/test/johnson/nodes/with_test.rb +10 -0
- data/test/johnson/prelude_test.rb +56 -0
- data/test/johnson/runtime_test.rb +64 -0
- data/test/johnson/spidermonkey/context_test.rb +21 -0
- data/test/johnson/spidermonkey/immutable_node_test.rb +34 -0
- data/test/johnson/spidermonkey/js_land_proxy_test.rb +236 -0
- data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +240 -0
- data/test/johnson/spidermonkey/runtime_test.rb +17 -0
- data/test/johnson/version_test.rb +13 -0
- data/test/johnson/visitors/dot_visitor_test.rb +39 -0
- data/test/johnson/visitors/enumerating_visitor_test.rb +12 -0
- data/test/johnson_test.rb +16 -0
- data/test/parser_test.rb +276 -0
- data/vendor/spidermonkey/.cvsignore +9 -0
- data/vendor/spidermonkey/Makefile.in +449 -0
- data/vendor/spidermonkey/Makefile.ref +365 -0
- data/vendor/spidermonkey/README.html +820 -0
- data/vendor/spidermonkey/SpiderMonkey.rsp +12 -0
- data/vendor/spidermonkey/Y.js +19 -0
- data/vendor/spidermonkey/build.mk +43 -0
- data/vendor/spidermonkey/config.mk +192 -0
- data/vendor/spidermonkey/config/AIX4.1.mk +65 -0
- data/vendor/spidermonkey/config/AIX4.2.mk +64 -0
- data/vendor/spidermonkey/config/AIX4.3.mk +65 -0
- data/vendor/spidermonkey/config/Darwin.mk +83 -0
- data/vendor/spidermonkey/config/Darwin1.3.mk +81 -0
- data/vendor/spidermonkey/config/Darwin1.4.mk +41 -0
- data/vendor/spidermonkey/config/Darwin5.2.mk +81 -0
- data/vendor/spidermonkey/config/Darwin5.3.mk +81 -0
- data/vendor/spidermonkey/config/HP-UXB.10.10.mk +77 -0
- data/vendor/spidermonkey/config/HP-UXB.10.20.mk +77 -0
- data/vendor/spidermonkey/config/HP-UXB.11.00.mk +80 -0
- data/vendor/spidermonkey/config/IRIX.mk +87 -0
- data/vendor/spidermonkey/config/IRIX5.3.mk +44 -0
- data/vendor/spidermonkey/config/IRIX6.1.mk +44 -0
- data/vendor/spidermonkey/config/IRIX6.2.mk +44 -0
- data/vendor/spidermonkey/config/IRIX6.3.mk +44 -0
- data/vendor/spidermonkey/config/IRIX6.5.mk +44 -0
- data/vendor/spidermonkey/config/Linux_All.mk +103 -0
- data/vendor/spidermonkey/config/Mac_OS10.0.mk +82 -0
- data/vendor/spidermonkey/config/OSF1V4.0.mk +72 -0
- data/vendor/spidermonkey/config/OSF1V5.0.mk +69 -0
- data/vendor/spidermonkey/config/SunOS4.1.4.mk +101 -0
- data/vendor/spidermonkey/config/SunOS5.10.mk +50 -0
- data/vendor/spidermonkey/config/SunOS5.3.mk +91 -0
- data/vendor/spidermonkey/config/SunOS5.4.mk +92 -0
- data/vendor/spidermonkey/config/SunOS5.5.1.mk +44 -0
- data/vendor/spidermonkey/config/SunOS5.5.mk +87 -0
- data/vendor/spidermonkey/config/SunOS5.6.mk +89 -0
- data/vendor/spidermonkey/config/SunOS5.7.mk +44 -0
- data/vendor/spidermonkey/config/SunOS5.8.mk +44 -0
- data/vendor/spidermonkey/config/SunOS5.9.mk +44 -0
- data/vendor/spidermonkey/config/WINNT4.0.mk +117 -0
- data/vendor/spidermonkey/config/WINNT5.0.mk +117 -0
- data/vendor/spidermonkey/config/WINNT5.1.mk +117 -0
- data/vendor/spidermonkey/config/WINNT5.2.mk +117 -0
- data/vendor/spidermonkey/config/WINNT6.0.mk +117 -0
- data/vendor/spidermonkey/config/dgux.mk +64 -0
- data/vendor/spidermonkey/editline/Makefile.ref +144 -0
- data/vendor/spidermonkey/editline/README +83 -0
- data/vendor/spidermonkey/editline/editline.3 +175 -0
- data/vendor/spidermonkey/editline/editline.c +1369 -0
- data/vendor/spidermonkey/editline/editline.h +135 -0
- data/vendor/spidermonkey/editline/sysunix.c +182 -0
- data/vendor/spidermonkey/editline/unix.h +82 -0
- data/vendor/spidermonkey/fdlibm/.cvsignore +7 -0
- data/vendor/spidermonkey/fdlibm/Makefile.in +127 -0
- data/vendor/spidermonkey/fdlibm/Makefile.ref +192 -0
- data/vendor/spidermonkey/fdlibm/e_acos.c +147 -0
- data/vendor/spidermonkey/fdlibm/e_acosh.c +105 -0
- data/vendor/spidermonkey/fdlibm/e_asin.c +156 -0
- data/vendor/spidermonkey/fdlibm/e_atan2.c +165 -0
- data/vendor/spidermonkey/fdlibm/e_atanh.c +110 -0
- data/vendor/spidermonkey/fdlibm/e_cosh.c +133 -0
- data/vendor/spidermonkey/fdlibm/e_exp.c +202 -0
- data/vendor/spidermonkey/fdlibm/e_fmod.c +184 -0
- data/vendor/spidermonkey/fdlibm/e_gamma.c +71 -0
- data/vendor/spidermonkey/fdlibm/e_gamma_r.c +70 -0
- data/vendor/spidermonkey/fdlibm/e_hypot.c +173 -0
- data/vendor/spidermonkey/fdlibm/e_j0.c +524 -0
- data/vendor/spidermonkey/fdlibm/e_j1.c +523 -0
- data/vendor/spidermonkey/fdlibm/e_jn.c +315 -0
- data/vendor/spidermonkey/fdlibm/e_lgamma.c +71 -0
- data/vendor/spidermonkey/fdlibm/e_lgamma_r.c +347 -0
- data/vendor/spidermonkey/fdlibm/e_log.c +184 -0
- data/vendor/spidermonkey/fdlibm/e_log10.c +134 -0
- data/vendor/spidermonkey/fdlibm/e_pow.c +386 -0
- data/vendor/spidermonkey/fdlibm/e_rem_pio2.c +222 -0
- data/vendor/spidermonkey/fdlibm/e_remainder.c +120 -0
- data/vendor/spidermonkey/fdlibm/e_scalb.c +89 -0
- data/vendor/spidermonkey/fdlibm/e_sinh.c +122 -0
- data/vendor/spidermonkey/fdlibm/e_sqrt.c +497 -0
- data/vendor/spidermonkey/fdlibm/fdlibm.h +273 -0
- data/vendor/spidermonkey/fdlibm/fdlibm.mak +1453 -0
- data/vendor/spidermonkey/fdlibm/fdlibm.mdp +0 -0
- data/vendor/spidermonkey/fdlibm/k_cos.c +135 -0
- data/vendor/spidermonkey/fdlibm/k_rem_pio2.c +354 -0
- data/vendor/spidermonkey/fdlibm/k_sin.c +114 -0
- data/vendor/spidermonkey/fdlibm/k_standard.c +785 -0
- data/vendor/spidermonkey/fdlibm/k_tan.c +170 -0
- data/vendor/spidermonkey/fdlibm/s_asinh.c +101 -0
- data/vendor/spidermonkey/fdlibm/s_atan.c +175 -0
- data/vendor/spidermonkey/fdlibm/s_cbrt.c +133 -0
- data/vendor/spidermonkey/fdlibm/s_ceil.c +120 -0
- data/vendor/spidermonkey/fdlibm/s_copysign.c +72 -0
- data/vendor/spidermonkey/fdlibm/s_cos.c +118 -0
- data/vendor/spidermonkey/fdlibm/s_erf.c +356 -0
- data/vendor/spidermonkey/fdlibm/s_expm1.c +267 -0
- data/vendor/spidermonkey/fdlibm/s_fabs.c +70 -0
- data/vendor/spidermonkey/fdlibm/s_finite.c +71 -0
- data/vendor/spidermonkey/fdlibm/s_floor.c +121 -0
- data/vendor/spidermonkey/fdlibm/s_frexp.c +99 -0
- data/vendor/spidermonkey/fdlibm/s_ilogb.c +85 -0
- data/vendor/spidermonkey/fdlibm/s_isnan.c +74 -0
- data/vendor/spidermonkey/fdlibm/s_ldexp.c +66 -0
- data/vendor/spidermonkey/fdlibm/s_lib_version.c +73 -0
- data/vendor/spidermonkey/fdlibm/s_log1p.c +211 -0
- data/vendor/spidermonkey/fdlibm/s_logb.c +79 -0
- data/vendor/spidermonkey/fdlibm/s_matherr.c +64 -0
- data/vendor/spidermonkey/fdlibm/s_modf.c +132 -0
- data/vendor/spidermonkey/fdlibm/s_nextafter.c +124 -0
- data/vendor/spidermonkey/fdlibm/s_rint.c +131 -0
- data/vendor/spidermonkey/fdlibm/s_scalbn.c +107 -0
- data/vendor/spidermonkey/fdlibm/s_signgam.c +40 -0
- data/vendor/spidermonkey/fdlibm/s_significand.c +68 -0
- data/vendor/spidermonkey/fdlibm/s_sin.c +118 -0
- data/vendor/spidermonkey/fdlibm/s_tan.c +112 -0
- data/vendor/spidermonkey/fdlibm/s_tanh.c +122 -0
- data/vendor/spidermonkey/fdlibm/w_acos.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_acosh.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_asin.c +80 -0
- data/vendor/spidermonkey/fdlibm/w_atan2.c +79 -0
- data/vendor/spidermonkey/fdlibm/w_atanh.c +81 -0
- data/vendor/spidermonkey/fdlibm/w_cosh.c +77 -0
- data/vendor/spidermonkey/fdlibm/w_exp.c +88 -0
- data/vendor/spidermonkey/fdlibm/w_fmod.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_gamma.c +85 -0
- data/vendor/spidermonkey/fdlibm/w_gamma_r.c +81 -0
- data/vendor/spidermonkey/fdlibm/w_hypot.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_j0.c +105 -0
- data/vendor/spidermonkey/fdlibm/w_j1.c +106 -0
- data/vendor/spidermonkey/fdlibm/w_jn.c +128 -0
- data/vendor/spidermonkey/fdlibm/w_lgamma.c +85 -0
- data/vendor/spidermonkey/fdlibm/w_lgamma_r.c +81 -0
- data/vendor/spidermonkey/fdlibm/w_log.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_log10.c +81 -0
- data/vendor/spidermonkey/fdlibm/w_pow.c +99 -0
- data/vendor/spidermonkey/fdlibm/w_remainder.c +77 -0
- data/vendor/spidermonkey/fdlibm/w_scalb.c +95 -0
- data/vendor/spidermonkey/fdlibm/w_sinh.c +77 -0
- data/vendor/spidermonkey/fdlibm/w_sqrt.c +77 -0
- data/vendor/spidermonkey/javascript-trace.d +73 -0
- data/vendor/spidermonkey/js.c +3951 -0
- data/vendor/spidermonkey/js.mdp +0 -0
- data/vendor/spidermonkey/js.msg +308 -0
- data/vendor/spidermonkey/js3240.rc +79 -0
- data/vendor/spidermonkey/jsOS240.def +654 -0
- data/vendor/spidermonkey/jsapi.c +5836 -0
- data/vendor/spidermonkey/jsapi.h +2624 -0
- data/vendor/spidermonkey/jsarena.c +450 -0
- data/vendor/spidermonkey/jsarena.h +318 -0
- data/vendor/spidermonkey/jsarray.c +2996 -0
- data/vendor/spidermonkey/jsarray.h +127 -0
- data/vendor/spidermonkey/jsatom.c +1045 -0
- data/vendor/spidermonkey/jsatom.h +442 -0
- data/vendor/spidermonkey/jsbit.h +253 -0
- data/vendor/spidermonkey/jsbool.c +176 -0
- data/vendor/spidermonkey/jsbool.h +73 -0
- data/vendor/spidermonkey/jsclist.h +139 -0
- data/vendor/spidermonkey/jscntxt.c +1348 -0
- data/vendor/spidermonkey/jscntxt.h +1120 -0
- data/vendor/spidermonkey/jscompat.h +57 -0
- data/vendor/spidermonkey/jsconfig.h +248 -0
- data/vendor/spidermonkey/jsconfig.mk +181 -0
- data/vendor/spidermonkey/jscpucfg.c +396 -0
- data/vendor/spidermonkey/jscpucfg.h +212 -0
- data/vendor/spidermonkey/jsdate.c +2390 -0
- data/vendor/spidermonkey/jsdate.h +124 -0
- data/vendor/spidermonkey/jsdbgapi.c +1802 -0
- data/vendor/spidermonkey/jsdbgapi.h +464 -0
- data/vendor/spidermonkey/jsdhash.c +868 -0
- data/vendor/spidermonkey/jsdhash.h +592 -0
- data/vendor/spidermonkey/jsdtoa.c +3167 -0
- data/vendor/spidermonkey/jsdtoa.h +130 -0
- data/vendor/spidermonkey/jsdtracef.c +317 -0
- data/vendor/spidermonkey/jsdtracef.h +77 -0
- data/vendor/spidermonkey/jsemit.c +6909 -0
- data/vendor/spidermonkey/jsemit.h +741 -0
- data/vendor/spidermonkey/jsexn.c +1371 -0
- data/vendor/spidermonkey/jsexn.h +96 -0
- data/vendor/spidermonkey/jsfile.c +2736 -0
- data/vendor/spidermonkey/jsfile.h +56 -0
- data/vendor/spidermonkey/jsfile.msg +90 -0
- data/vendor/spidermonkey/jsfun.c +2634 -0
- data/vendor/spidermonkey/jsfun.h +254 -0
- data/vendor/spidermonkey/jsgc.c +3562 -0
- data/vendor/spidermonkey/jsgc.h +403 -0
- data/vendor/spidermonkey/jshash.c +476 -0
- data/vendor/spidermonkey/jshash.h +151 -0
- data/vendor/spidermonkey/jsify.pl +485 -0
- data/vendor/spidermonkey/jsinterp.c +7007 -0
- data/vendor/spidermonkey/jsinterp.h +525 -0
- data/vendor/spidermonkey/jsinvoke.c +43 -0
- data/vendor/spidermonkey/jsiter.c +1067 -0
- data/vendor/spidermonkey/jsiter.h +122 -0
- data/vendor/spidermonkey/jskeyword.tbl +124 -0
- data/vendor/spidermonkey/jskwgen.c +460 -0
- data/vendor/spidermonkey/jslibmath.h +266 -0
- data/vendor/spidermonkey/jslock.c +1309 -0
- data/vendor/spidermonkey/jslock.h +313 -0
- data/vendor/spidermonkey/jslocko.asm +60 -0
- data/vendor/spidermonkey/jslog2.c +94 -0
- data/vendor/spidermonkey/jslong.c +264 -0
- data/vendor/spidermonkey/jslong.h +412 -0
- data/vendor/spidermonkey/jsmath.c +567 -0
- data/vendor/spidermonkey/jsmath.h +57 -0
- data/vendor/spidermonkey/jsnum.c +1239 -0
- data/vendor/spidermonkey/jsnum.h +283 -0
- data/vendor/spidermonkey/jsobj.c +5282 -0
- data/vendor/spidermonkey/jsobj.h +709 -0
- data/vendor/spidermonkey/jsopcode.c +5245 -0
- data/vendor/spidermonkey/jsopcode.h +394 -0
- data/vendor/spidermonkey/jsopcode.tbl +523 -0
- data/vendor/spidermonkey/jsotypes.h +202 -0
- data/vendor/spidermonkey/jsparse.c +6704 -0
- data/vendor/spidermonkey/jsparse.h +511 -0
- data/vendor/spidermonkey/jsprf.c +1262 -0
- data/vendor/spidermonkey/jsprf.h +150 -0
- data/vendor/spidermonkey/jsproto.tbl +128 -0
- data/vendor/spidermonkey/jsprvtd.h +267 -0
- data/vendor/spidermonkey/jspubtd.h +744 -0
- data/vendor/spidermonkey/jsregexp.c +4364 -0
- data/vendor/spidermonkey/jsregexp.h +183 -0
- data/vendor/spidermonkey/jsreops.tbl +145 -0
- data/vendor/spidermonkey/jsscan.c +2012 -0
- data/vendor/spidermonkey/jsscan.h +387 -0
- data/vendor/spidermonkey/jsscope.c +1957 -0
- data/vendor/spidermonkey/jsscope.h +418 -0
- data/vendor/spidermonkey/jsscript.c +1832 -0
- data/vendor/spidermonkey/jsscript.h +287 -0
- data/vendor/spidermonkey/jsshell.msg +50 -0
- data/vendor/spidermonkey/jsstddef.h +83 -0
- data/vendor/spidermonkey/jsstr.c +5005 -0
- data/vendor/spidermonkey/jsstr.h +641 -0
- data/vendor/spidermonkey/jstypes.h +475 -0
- data/vendor/spidermonkey/jsutil.c +345 -0
- data/vendor/spidermonkey/jsutil.h +157 -0
- data/vendor/spidermonkey/jsxdrapi.c +800 -0
- data/vendor/spidermonkey/jsxdrapi.h +218 -0
- data/vendor/spidermonkey/jsxml.c +8476 -0
- data/vendor/spidermonkey/jsxml.h +349 -0
- data/vendor/spidermonkey/lock_SunOS.s +119 -0
- data/vendor/spidermonkey/perfect.js +39 -0
- data/vendor/spidermonkey/plify_jsdhash.sed +36 -0
- data/vendor/spidermonkey/prmjtime.c +846 -0
- data/vendor/spidermonkey/prmjtime.h +103 -0
- data/vendor/spidermonkey/resource.h +15 -0
- data/vendor/spidermonkey/rules.mk +197 -0
- data/vendor/spidermonkey/win32.order +384 -0
- metadata +513 -0
data/Rakefile
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "hoe"
|
|
3
|
+
require "rake/extensiontask"
|
|
4
|
+
|
|
5
|
+
require "./lib/johnson/version.rb"
|
|
6
|
+
|
|
7
|
+
HOE = Hoe.new "johnson", Johnson::VERSION do |p|
|
|
8
|
+
p.developer "John Barnette", "jbarnette@rubyforge.org"
|
|
9
|
+
p.developer "Aaron Patterson", "aaron.patterson@gmail.com"
|
|
10
|
+
p.developer "Yehuda Katz", "wycats@gmail.com"
|
|
11
|
+
p.developer "Matthew Draper", "matthew@trebex.net"
|
|
12
|
+
|
|
13
|
+
p.history_file = "CHANGELOG.rdoc"
|
|
14
|
+
p.readme_file = "README.rdoc"
|
|
15
|
+
p.summary = "Johnson wraps JavaScript in a loving Ruby embrace."
|
|
16
|
+
p.url = "http://github.com/jbarnette/johnson/wikis"
|
|
17
|
+
|
|
18
|
+
p.extra_rdoc_files = [p.readme_file]
|
|
19
|
+
p.test_globs = %w(test/**/*_test.rb)
|
|
20
|
+
|
|
21
|
+
p.clean_globs << "lib/johnson/spidermonkey.bundle"
|
|
22
|
+
p.clean_globs << "tmp"
|
|
23
|
+
p.clean_globs << "vendor/spidermonkey/**/*.OBJ"
|
|
24
|
+
p.clean_globs << "ext/**/*.{o,so,bundle,a,log}"
|
|
25
|
+
|
|
26
|
+
p.extra_deps << "rake"
|
|
27
|
+
p.extra_dev_deps << "rake-compiler"
|
|
28
|
+
p.spec_extras = { :extensions => %w(Rakefile) }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Rake::ExtensionTask.new "spidermonkey", HOE.spec do |ext|
|
|
32
|
+
ext.lib_dir = "lib/johnson"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
task :test => :compile
|
|
36
|
+
|
|
37
|
+
Dir["lib/tasks/*.rake"].each { |f| load f }
|
|
38
|
+
|
|
39
|
+
# HACK: If Rake is running as part of the gem install, clear out the
|
|
40
|
+
# default task and make the extensions compile instead.
|
|
41
|
+
|
|
42
|
+
Rake::Task[:default].prerequisites.replace %w(compile) if ENV["RUBYARCHDIR"]
|
data/bin/johnson
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", "lib")))
|
|
4
|
+
|
|
5
|
+
require "readline"
|
|
6
|
+
require "johnson"
|
|
7
|
+
|
|
8
|
+
RUNTIME = js = Johnson::Runtime.new
|
|
9
|
+
RUNTIME.evaluate(Johnson::CLI::JS)
|
|
10
|
+
|
|
11
|
+
EXIT_VERBS = [nil] + %w(exit quit)
|
|
12
|
+
|
|
13
|
+
local_binding = binding
|
|
14
|
+
ruby_readline = []
|
|
15
|
+
|
|
16
|
+
def copy_history
|
|
17
|
+
new_history = []
|
|
18
|
+
until Readline::HISTORY.empty?
|
|
19
|
+
new_history.push(Readline::HISTORY.pop)
|
|
20
|
+
end
|
|
21
|
+
new_history
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def paste_history(old_history)
|
|
25
|
+
until old_history.empty?
|
|
26
|
+
Readline::HISTORY << old_history.pop
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def handle_exit(input)
|
|
31
|
+
if EXIT_VERBS.include?(input)
|
|
32
|
+
puts if input.nil?
|
|
33
|
+
exit
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def rescued(&block)
|
|
38
|
+
yield
|
|
39
|
+
rescue Exception => e
|
|
40
|
+
exit if SystemExit === e
|
|
41
|
+
|
|
42
|
+
puts e.message
|
|
43
|
+
puts e.backtrace.reject { |l| l =~ /bin\/johnson/ }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def eval_in_js(expression)
|
|
47
|
+
rescued { puts "=> " + RUNTIME.evaluate(expression, "(console)").inspect }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def eval_in_ruby(expression, bind_to)
|
|
51
|
+
rescued { puts "=> " + eval(expression, bind_to).inspect }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
options = Johnson::CLI::Options.parse!(ARGV)
|
|
55
|
+
|
|
56
|
+
options.load_paths.each { |d| $LOAD_PATH << d }
|
|
57
|
+
options.paths_to_require.each { |p| RUNTIME.evaluate("Johnson.require('#{p}')") }
|
|
58
|
+
options.files_to_preload.each { |f| RUNTIME.load(f) }
|
|
59
|
+
|
|
60
|
+
unless options.expressions.empty?
|
|
61
|
+
options.expressions.each { |e| RUNTIME.evaluate(e, '-e') }
|
|
62
|
+
exit if options.files_to_evaluate.empty?
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
unless options.files_to_evaluate.empty?
|
|
66
|
+
RUNTIME[:arguments] = options.arguments
|
|
67
|
+
|
|
68
|
+
options.files_to_evaluate.each do |file|
|
|
69
|
+
RUNTIME.load(file)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
exit
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
loop do
|
|
76
|
+
input = Readline.readline("js> ", true)
|
|
77
|
+
handle_exit(input)
|
|
78
|
+
|
|
79
|
+
if input =~ /^rb\s+(.+)$/
|
|
80
|
+
eval_in_ruby($1, local_binding)
|
|
81
|
+
next
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
if input == "rb"
|
|
85
|
+
js_readline = copy_history
|
|
86
|
+
paste_history(ruby_readline)
|
|
87
|
+
|
|
88
|
+
loop do
|
|
89
|
+
input = Readline.readline("rb> ", true)
|
|
90
|
+
handle_exit(input)
|
|
91
|
+
|
|
92
|
+
break if input == "js"
|
|
93
|
+
|
|
94
|
+
if input =~ /^js\s+(.+)$/
|
|
95
|
+
eval_in_js($1)
|
|
96
|
+
next
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
eval_in_ruby(input, local_binding)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
ruby_readline = copy_history
|
|
103
|
+
paste_history(js_readline)
|
|
104
|
+
next
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
eval_in_js(input)
|
|
108
|
+
end
|
data/docs/MINGW32.mk
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# -*- Mode: makefile -*-
|
|
2
|
+
#
|
|
3
|
+
#
|
|
4
|
+
# Based on patch submitted to mozilla.dev.tech.js-engine by 'Andy':
|
|
5
|
+
# http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/16972946bf7df82e
|
|
6
|
+
#
|
|
7
|
+
#
|
|
8
|
+
# ***** BEGIN LICENSE BLOCK *****
|
|
9
|
+
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
10
|
+
#
|
|
11
|
+
# The contents of this file are subject to the Mozilla Public License Version
|
|
12
|
+
# 1.1 (the "License"); you may not use this file except in compliance with
|
|
13
|
+
# the License. You may obtain a copy of the License at
|
|
14
|
+
# http://www.mozilla.org/MPL/
|
|
15
|
+
#
|
|
16
|
+
# Software distributed under the License is distributed on an "AS IS" basis,
|
|
17
|
+
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
18
|
+
# for the specific language governing rights and limitations under the
|
|
19
|
+
# License.
|
|
20
|
+
#
|
|
21
|
+
# The Original Code is Mozilla Communicator client code, released
|
|
22
|
+
# March 31, 1998.
|
|
23
|
+
#
|
|
24
|
+
# The Initial Developer of the Original Code is
|
|
25
|
+
# Netscape Communications Corporation.
|
|
26
|
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
|
27
|
+
# the Initial Developer. All Rights Reserved.
|
|
28
|
+
#
|
|
29
|
+
# Contributor(s):
|
|
30
|
+
#
|
|
31
|
+
# Alternatively, the contents of this file may be used under the terms of
|
|
32
|
+
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
33
|
+
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
34
|
+
# in which case the provisions of the GPL or the LGPL are applicable instead
|
|
35
|
+
# of those above. If you wish to allow use of your version of this file only
|
|
36
|
+
# under the terms of either the GPL or the LGPL, and not to allow others to
|
|
37
|
+
# use your version of this file under the terms of the MPL, indicate your
|
|
38
|
+
# decision by deleting the provisions above and replace them with the notice
|
|
39
|
+
# and other provisions required by the GPL or the LGPL. If you do not delete
|
|
40
|
+
# the provisions above, a recipient may use your version of this file under
|
|
41
|
+
# the terms of any one of the MPL, the GPL or the LGPL.
|
|
42
|
+
#
|
|
43
|
+
# ***** END LICENSE BLOCK *****
|
|
44
|
+
|
|
45
|
+
#
|
|
46
|
+
# Config for all versions of Mingw (copy and modified from Linux)
|
|
47
|
+
#
|
|
48
|
+
|
|
49
|
+
AR = i586-mingw32msvc-ar
|
|
50
|
+
CC = i586-mingw32msvc-gcc
|
|
51
|
+
LD = i586-mingw32msvc-ld
|
|
52
|
+
CCC = i586-mingw32msvc-g++
|
|
53
|
+
|
|
54
|
+
CFLAGS += -Wall -Wno-format
|
|
55
|
+
#OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DEXPORT_JS_API
|
|
56
|
+
OS_CFLAGS = -D_X86_=1 -DXP_WIN -DXP_WIN32 -DWIN32 -D_WINDOWS -D_WIN32 $(WIN_CFLAGS) -DEXPORT_JS_API
|
|
57
|
+
JSDLL_CFLAGS = -DEXPORT_JS_API # not work, dunno why?
|
|
58
|
+
SO_SUFFIX = dll
|
|
59
|
+
# libgcc.a:__divdi3 kernel32:DebugBreak,GetSystemTimeAsFileTime
|
|
60
|
+
# winmm:timeBeginPeriod,timeEndPeriod
|
|
61
|
+
WINLIBS = -lmsvcrt -lm -lkernel32 -lwinmm /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/libgcc.a
|
|
62
|
+
#LDFLAGS += $(WINLIBS) # dont work. rewrite by Makefile.ref
|
|
63
|
+
OTHER_LIBS += $(WINLIBS)
|
|
64
|
+
|
|
65
|
+
RANLIB = echo
|
|
66
|
+
MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS)
|
|
67
|
+
|
|
68
|
+
# These don't work :(
|
|
69
|
+
LIBRARY = $(OBJDIR)/js32.lib
|
|
70
|
+
SHARED_LIBRARY = $(OBJDIR)/js32.dll
|
|
71
|
+
PROGRAM = $(OBJDIR)/js.exe
|
|
72
|
+
|
|
73
|
+
#.c.o:
|
|
74
|
+
# $(CC) -c -MD $*.d $(CFLAGS) $<
|
|
75
|
+
|
|
76
|
+
CPU_ARCH = $(shell uname -m)
|
|
77
|
+
# don't filter in x86-64 architecture
|
|
78
|
+
ifneq (x86_64,$(CPU_ARCH))
|
|
79
|
+
ifeq (86,$(findstring 86,$(CPU_ARCH)))
|
|
80
|
+
CPU_ARCH = x86
|
|
81
|
+
OS_CFLAGS+= -DX86_LINUX
|
|
82
|
+
|
|
83
|
+
ifeq (gcc, $(CC))
|
|
84
|
+
# if using gcc on x86, check version for opt bug
|
|
85
|
+
# (http://bugzilla.mozilla.org/show_bug.cgi?id=24892)
|
|
86
|
+
GCC_VERSION := $(shell gcc -v 2>&1 | grep version | awk '{ print $$3 }')
|
|
87
|
+
GCC_LIST:=$(sort 2.91.66 $(GCC_VERSION) )
|
|
88
|
+
|
|
89
|
+
ifeq (2.91.66, $(firstword $(GCC_LIST)))
|
|
90
|
+
CFLAGS+= -DGCC_OPT_BUG
|
|
91
|
+
endif
|
|
92
|
+
endif
|
|
93
|
+
endif
|
|
94
|
+
endif
|
|
95
|
+
|
|
96
|
+
GFX_ARCH = x
|
|
97
|
+
|
|
98
|
+
OS_LIBS = -lm -lc
|
|
99
|
+
|
|
100
|
+
ASFLAGS += -x assembler-with-cpp
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
ifeq ($(CPU_ARCH),alpha)
|
|
104
|
+
|
|
105
|
+
# Ask the C compiler on alpha linux to let us work with denormalized
|
|
106
|
+
# double values, which are required by the ECMA spec.
|
|
107
|
+
|
|
108
|
+
OS_CFLAGS += -mieee
|
|
109
|
+
endif
|
|
110
|
+
|
|
111
|
+
# Use the editline library to provide line-editing support.
|
|
112
|
+
#JS_EDITLINE = 1 // not support by Mingw
|
|
113
|
+
|
|
114
|
+
ifeq ($(CPU_ARCH),x86_64)
|
|
115
|
+
# Use VA_COPY() standard macro on x86-64
|
|
116
|
+
# FIXME: better use it everywhere
|
|
117
|
+
OS_CFLAGS += -DHAVE_VA_COPY
|
|
118
|
+
endif
|
|
119
|
+
|
|
120
|
+
ifeq ($(CPU_ARCH),x86_64)
|
|
121
|
+
# We need PIC code for shared libraries
|
|
122
|
+
# FIXME: better patch rules.mk & fdlibm/Makefile*
|
|
123
|
+
OS_CFLAGS += -DPIC -fPIC
|
|
124
|
+
endif
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
CROSS-COMPILING FOR WINDOWS
|
|
3
|
+
|
|
4
|
+
Based on http://eigenclass.org/hiki.rb?cross+compiling+rcovrt
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
*) Install the MinGW cross-compiler
|
|
8
|
+
|
|
9
|
+
Debian: apt-get install mingw32 mingw32-binutils mingw32-runtime
|
|
10
|
+
|
|
11
|
+
*) Download & extract a ruby distribution archive
|
|
12
|
+
|
|
13
|
+
*) Double the backslashes in the ALT_SEPARATOR definition in Makefile.in
|
|
14
|
+
|
|
15
|
+
*) Build & install it:
|
|
16
|
+
|
|
17
|
+
env ac_cv_func_getpgrp_void=no \
|
|
18
|
+
ac_cv_func_setpgrp_void=yes \
|
|
19
|
+
rb_cv_negative_time_t=no \
|
|
20
|
+
ac_cv_func_memcmp_working=yes \
|
|
21
|
+
rb_cv_binary_elf=no \
|
|
22
|
+
./configure \
|
|
23
|
+
--host=i586-mingw32msvc \
|
|
24
|
+
--target=i386-mingw32 \
|
|
25
|
+
--build=i686-linux \
|
|
26
|
+
--prefix=~/ruby-mingw32
|
|
27
|
+
|
|
28
|
+
make ruby
|
|
29
|
+
|
|
30
|
+
make install
|
|
31
|
+
|
|
32
|
+
*) Build the extension (rake will build spidermonkey for you)
|
|
33
|
+
|
|
34
|
+
# Remove any native binaries that are already built
|
|
35
|
+
rake clean
|
|
36
|
+
|
|
37
|
+
rake build CROSS=MINGW32 CROSSLIB=~/ruby-mingw32/lib/ruby/1.8/i386-mingw32
|
|
38
|
+
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#include "context.h"
|
|
2
|
+
#include "conversions.h"
|
|
3
|
+
#include "global.h"
|
|
4
|
+
#include "extensions.h"
|
|
5
|
+
#include "idhash.h"
|
|
6
|
+
#include "jsdbgapi.h"
|
|
7
|
+
|
|
8
|
+
// callback for JS_SetErrorReporter
|
|
9
|
+
static void report_js_error(JSContext* js, const char* message, JSErrorReport* UNUSED(report))
|
|
10
|
+
{
|
|
11
|
+
// first we find ourselves
|
|
12
|
+
VALUE self = (VALUE)JS_GetContextPrivate(js);
|
|
13
|
+
|
|
14
|
+
// then we find our bridge
|
|
15
|
+
JohnsonContext* context;
|
|
16
|
+
Data_Get_Struct(self, JohnsonContext, context);
|
|
17
|
+
|
|
18
|
+
// NOTE: SpiderMonkey REALLY doesn't like being interrupted. If we
|
|
19
|
+
// jump over to Ruby and raise here, segfaults and such ensue.
|
|
20
|
+
// Instead, we store the exception (if any) and the error message
|
|
21
|
+
// on the context. They're dealt with in the if (!ok) block of evaluate().
|
|
22
|
+
|
|
23
|
+
strncpy(context->msg, message, MAX_EXCEPTION_MESSAGE_SIZE);
|
|
24
|
+
JS_GetPendingException(context->js, &context->ex);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// callback for JS_SetBranchCallback
|
|
28
|
+
static JSBool branch_callback(JSContext* js, JSScript* UNUSED(script))
|
|
29
|
+
{
|
|
30
|
+
static unsigned long branch_counter = 0;
|
|
31
|
+
if( ++branch_counter % 0x1000 == 0 )
|
|
32
|
+
JS_MaybeGC( js );
|
|
33
|
+
return JS_TRUE;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* call-seq:
|
|
38
|
+
* native_initialize(options={})
|
|
39
|
+
*
|
|
40
|
+
* Initializes the native spidermonkey values.
|
|
41
|
+
*/
|
|
42
|
+
static VALUE
|
|
43
|
+
initialize_native(VALUE self, VALUE rb_runtime, VALUE UNUSED(options))
|
|
44
|
+
{
|
|
45
|
+
JohnsonContext* context;
|
|
46
|
+
JohnsonRuntime* runtime;
|
|
47
|
+
|
|
48
|
+
Data_Get_Struct(self, JohnsonContext, context);
|
|
49
|
+
Data_Get_Struct(rb_runtime, JohnsonRuntime, runtime);
|
|
50
|
+
|
|
51
|
+
if ((context->js = JS_NewContext(runtime->js, 8192L)))
|
|
52
|
+
{
|
|
53
|
+
// See if the runtime already has a shared global object.
|
|
54
|
+
JSObject* global = runtime->global;
|
|
55
|
+
|
|
56
|
+
// If it does, use it. If not,
|
|
57
|
+
if (!global)
|
|
58
|
+
// create one of our global objects.
|
|
59
|
+
global = johnson_create_global_object(context->js);
|
|
60
|
+
|
|
61
|
+
// Manually set the context's global object.
|
|
62
|
+
JS_SetGlobalObject(context->js, global);
|
|
63
|
+
JS_SetErrorReporter(context->js, report_js_error);
|
|
64
|
+
JS_SetBranchCallback(context->js, branch_callback);
|
|
65
|
+
JS_SetContextPrivate(context->js, (void *)self);
|
|
66
|
+
|
|
67
|
+
JS_SetOptions(context->js, JS_GetOptions(context->js)
|
|
68
|
+
#ifdef JSOPTION_DONT_REPORT_UNCAUGHT
|
|
69
|
+
| JSOPTION_DONT_REPORT_UNCAUGHT
|
|
70
|
+
#endif
|
|
71
|
+
#ifdef JSOPTION_VAROBJFIX
|
|
72
|
+
| JSOPTION_VAROBJFIX
|
|
73
|
+
#endif
|
|
74
|
+
// #ifdef JSOPTION_XML
|
|
75
|
+
// | JSOPTION_XML
|
|
76
|
+
// #endif
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
// Success.
|
|
80
|
+
return init_spidermonkey_extensions(context, self);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (context->js) JS_DestroyContext(context->js);
|
|
84
|
+
|
|
85
|
+
rb_raise(rb_eRuntimeError, "Failed to initialize SpiderMonkey context");
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
///////////////////////////////////////////////////////////////////////////
|
|
89
|
+
//// INFRASTRUCTURE BELOW HERE ////////////////////////////////////////////
|
|
90
|
+
///////////////////////////////////////////////////////////////////////////
|
|
91
|
+
|
|
92
|
+
static VALUE allocate(VALUE klass)
|
|
93
|
+
{
|
|
94
|
+
JohnsonContext* context = calloc(1L, sizeof(JohnsonContext));
|
|
95
|
+
return Data_Wrap_Struct(klass, 0, 0, context);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
void init_Johnson_SpiderMonkey_Context(VALUE spidermonkey)
|
|
99
|
+
{
|
|
100
|
+
/* HACK: These comments are *only* to make RDoc happy.
|
|
101
|
+
VALUE johnson = rb_define_module("Johnson");
|
|
102
|
+
VALUE spidermonkey = rb_define_module_under(johnson, "SpiderMonkey");
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
/* This is the private context used for SpiderMonkey. */
|
|
106
|
+
VALUE context = rb_define_class_under(spidermonkey, "Context", rb_cObject);
|
|
107
|
+
|
|
108
|
+
rb_define_alloc_func(context, allocate);
|
|
109
|
+
rb_define_private_method(context, "initialize_native", initialize_native, 2);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
VALUE Johnson_SpiderMonkey_JSLandProxy()
|
|
113
|
+
{
|
|
114
|
+
return rb_eval_string("Johnson::SpiderMonkey::JSLandProxy");
|
|
115
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#ifndef JOHNSON_SPIDERMONKEY_CONTEXT_H
|
|
2
|
+
#define JOHNSON_SPIDERMONKEY_CONTEXT_H
|
|
3
|
+
|
|
4
|
+
#include "spidermonkey.h"
|
|
5
|
+
|
|
6
|
+
#define MAX_EXCEPTION_MESSAGE_SIZE 2048L
|
|
7
|
+
|
|
8
|
+
typedef struct {
|
|
9
|
+
JSContext *js;
|
|
10
|
+
|
|
11
|
+
jsval ex; // an exception value
|
|
12
|
+
char msg[MAX_EXCEPTION_MESSAGE_SIZE]; // the 'backup' message
|
|
13
|
+
|
|
14
|
+
} JohnsonContext;
|
|
15
|
+
|
|
16
|
+
void init_Johnson_SpiderMonkey_Context(VALUE spidermonkey);
|
|
17
|
+
VALUE Johnson_SpiderMonkey_JSLandProxy();
|
|
18
|
+
|
|
19
|
+
#endif
|