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
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "/../../helper"))
|
2
|
+
|
3
|
+
module Johnson
|
4
|
+
module SpiderMonkey
|
5
|
+
class RuntimeTest < Johnson::TestCase
|
6
|
+
def setup
|
7
|
+
@runtime = Johnson::SpiderMonkey::Runtime.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_can_create_more_than_one_without_barfing
|
11
|
+
assert_nothing_raised {
|
12
|
+
Johnson::SpiderMonkey::Runtime.new
|
13
|
+
}
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "/../helper"))
|
2
|
+
|
3
|
+
module Johnson
|
4
|
+
class VersionTest < Johnson::TestCase
|
5
|
+
def test_has_a_version
|
6
|
+
assert_not_nil(Johnson::VERSION)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_has_a_spidermonkey_version
|
10
|
+
assert_not_nil(Johnson::SpiderMonkey::VERSION)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "/../../helper"))
|
2
|
+
|
3
|
+
class DotVisitorTest < Test::Unit::TestCase
|
4
|
+
def test_var_foo
|
5
|
+
dot = Johnson.parse('var foo;').to_dot
|
6
|
+
assert_equal(3, dot.nodes.length)
|
7
|
+
assert_equal(2, dot.links.length)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_for
|
11
|
+
dot = Johnson.parse('for(var x = 0; x < 10; x++) { }').to_dot
|
12
|
+
assert_equal(12, dot.nodes.length)
|
13
|
+
assert_equal(11, dot.links.length)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_for_in
|
17
|
+
dot = Johnson.parse('for(var x in johnson(1,2,"asdf")) { }').to_dot
|
18
|
+
assert_equal(11, dot.nodes.length)
|
19
|
+
assert_equal(10, dot.links.length)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_try
|
23
|
+
dot = Johnson.parse('try { var x = 10; } finally { var x = 20; }').to_dot
|
24
|
+
assert_equal(12, dot.nodes.length)
|
25
|
+
assert_equal(11, dot.links.length)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_try_catch
|
29
|
+
dot = Johnson.parse('try { var x = 10; } catch(a) { var x = 20; x++; }').to_dot
|
30
|
+
assert_equal(16, dot.nodes.length)
|
31
|
+
assert_equal(15, dot.links.length)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_function
|
35
|
+
dot = Johnson.parse("var foo = function(a,b) { }").to_dot
|
36
|
+
assert_equal(6, dot.nodes.length)
|
37
|
+
assert_equal(5, dot.links.length)
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "/../../helper"))
|
2
|
+
|
3
|
+
class EnumeratingVisitorTest < Test::Unit::TestCase
|
4
|
+
def test_for
|
5
|
+
ast = Johnson.parse('for(var x = 0; x < 10; x++) { }')
|
6
|
+
counter = 0
|
7
|
+
ast.each do |node|
|
8
|
+
counter += 1
|
9
|
+
end
|
10
|
+
assert_equal(12, counter)
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
2
|
+
|
3
|
+
class JohnsonTest < Test::Unit::TestCase
|
4
|
+
def test_shortcut_evaluate
|
5
|
+
assert_equal(4, Johnson.evaluate("2 + 2"))
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_can_provide_context_vars_to_evaluate
|
9
|
+
assert_equal(4, Johnson.evaluate("2 + foo", :foo => 2))
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_evaluate_uses_a_new_runtime_each_time
|
13
|
+
assert_equal(4, Johnson.evaluate("foo", :foo => 4))
|
14
|
+
assert_raise(Johnson::Error) { Johnson.evaluate("foo") }
|
15
|
+
end
|
16
|
+
end
|
data/test/parser_test.rb
ADDED
@@ -0,0 +1,276 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
2
|
+
|
3
|
+
require 'stringio'
|
4
|
+
class ParserTest < Test::Unit::TestCase
|
5
|
+
include Johnson::Nodes
|
6
|
+
def setup
|
7
|
+
@parser = Johnson::Parser
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_parser_init
|
11
|
+
assert @parser
|
12
|
+
tree = @parser.parse(StringIO.new(""))
|
13
|
+
assert_kind_of SourceElements, tree
|
14
|
+
assert_equal 0, tree.line
|
15
|
+
assert_equal 0, tree.column
|
16
|
+
assert_sexp([], tree)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_exception_raised
|
20
|
+
assert_raises(Johnson::Parser::SyntaxError) {
|
21
|
+
@parser.parse('if(')
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_exception_has_info
|
26
|
+
begin
|
27
|
+
@parser.parse('if(')
|
28
|
+
rescue Johnson::Parser::SyntaxError => ex
|
29
|
+
assert_equal(1, ex.line_number)
|
30
|
+
assert_equal('', ex.file_name)
|
31
|
+
assert_equal('syntax error', ex.message)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_exception_has_filename
|
36
|
+
begin
|
37
|
+
@parser.parse('if(', 'test.js')
|
38
|
+
rescue Johnson::Parser::SyntaxError => ex
|
39
|
+
assert_equal(1, ex.line_number)
|
40
|
+
assert_equal('test.js', ex.file_name)
|
41
|
+
assert_equal('syntax error', ex.message)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_exception_has_linenum
|
46
|
+
begin
|
47
|
+
@parser.parse('if(', 'test.js', 10)
|
48
|
+
rescue Johnson::Parser::SyntaxError => ex
|
49
|
+
assert_equal(10, ex.line_number)
|
50
|
+
assert_equal('test.js', ex.file_name)
|
51
|
+
assert_equal('syntax error', ex.message)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_variable_declaration_no_init
|
56
|
+
assert_sexp(
|
57
|
+
[[:var, [[:name, 'foo']]]],
|
58
|
+
@parser.parse('var foo;')
|
59
|
+
)
|
60
|
+
assert_ecma('var foo;', @parser.parse('var foo;'))
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_new_foo
|
64
|
+
assert_sexp([[:var, [[:assign, [:name, "a"], [:new, [[:name, "foo"]]]]]]],
|
65
|
+
@parser.parse('var a = new foo;'))
|
66
|
+
assert_sexp([[:new, [[:name, "foo"]]]],
|
67
|
+
@parser.parse('new foo;'))
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_function_call
|
71
|
+
assert_sexp([[:bracket_access,
|
72
|
+
[:function_call, [[:name, "bar"]]],
|
73
|
+
[:lit, 1]]],
|
74
|
+
@parser.parse('bar()[1];'))
|
75
|
+
assert_ecma('bar()[1];', @parser.parse('bar()[1]'))
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_postfix_inc
|
79
|
+
assert_sexp([[:postfix_inc, [:name, "x"]]],
|
80
|
+
@parser.parse('x++;'))
|
81
|
+
assert_ecma('x++;', @parser.parse('x++;'))
|
82
|
+
assert_sexp([[:postfix_inc, [:dot_accessor, [:name, "x"], [:name, "foo"]]]],
|
83
|
+
@parser.parse('foo.x++;'))
|
84
|
+
assert_ecma('foo.x++;', @parser.parse('foo.x++;'))
|
85
|
+
assert_sexp([[:postfix_inc, [:bracket_access, [:name, "x"], [:lit, 1]]]],
|
86
|
+
@parser.parse('x[1]++;'))
|
87
|
+
assert_ecma('x[1]++;', @parser.parse('x[1]++;'))
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_prefix_inc
|
91
|
+
assert_sexp([[:prefix_inc, [:name, "x"]]],
|
92
|
+
@parser.parse('++x;'))
|
93
|
+
assert_ecma('++x;', @parser.parse('++x;'))
|
94
|
+
assert_sexp([[:prefix_inc, [:dot_accessor, [:name, "x"], [:name, "foo"]]]],
|
95
|
+
@parser.parse('++foo.x;'))
|
96
|
+
assert_ecma('++foo.x;', @parser.parse('++foo.x;'))
|
97
|
+
assert_sexp([[:prefix_inc, [:bracket_access, [:name, "x"], [:lit, 1]]]],
|
98
|
+
@parser.parse('++x[1];'))
|
99
|
+
assert_ecma('++x[1];', @parser.parse('++x[1];'))
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_postfix_dec
|
103
|
+
assert_sexp([[:postfix_dec, [:name, "x"]]],
|
104
|
+
@parser.parse('x--;'))
|
105
|
+
assert_ecma('x--;', @parser.parse('x--;'))
|
106
|
+
assert_sexp([[:postfix_dec, [:dot_accessor, [:name, "x"], [:name, "foo"]]]],
|
107
|
+
@parser.parse('foo.x--;'))
|
108
|
+
assert_ecma('foo.x--;', @parser.parse('foo.x--;'))
|
109
|
+
assert_sexp([[:postfix_dec, [:bracket_access, [:name, "x"], [:lit, 1]]]],
|
110
|
+
@parser.parse('x[1]--;'))
|
111
|
+
assert_ecma('x[1]--;', @parser.parse('x[1]--;'))
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_prefix_dec
|
115
|
+
assert_sexp([[:prefix_dec, [:name, "x"]]],
|
116
|
+
@parser.parse('--x;'))
|
117
|
+
assert_ecma('--x;', @parser.parse('--x;'))
|
118
|
+
assert_sexp([[:prefix_dec, [:dot_accessor, [:name, "x"], [:name, "foo"]]]],
|
119
|
+
@parser.parse('--foo.x;'))
|
120
|
+
assert_ecma('--foo.x;', @parser.parse('--foo.x;'))
|
121
|
+
assert_sexp([[:prefix_dec, [:bracket_access, [:name, "x"], [:lit, 1]]]],
|
122
|
+
@parser.parse('--x[1];'))
|
123
|
+
assert_ecma('--x[1];', @parser.parse('--x[1];'))
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_expr_comma
|
127
|
+
assert_sexp([[:comma,
|
128
|
+
[[:op_equal, [:name, 'i'], [:lit, 10]],
|
129
|
+
[:op_equal, [:name, 'j'], [:lit, 11]]]]],
|
130
|
+
@parser.parse('i = 10, j = 11;')
|
131
|
+
)
|
132
|
+
assert_ecma('i = 10, j = 11;', @parser.parse('i = 10, j = 11'))
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_primary_expr_paren
|
136
|
+
assert_sexp(
|
137
|
+
[[:var,
|
138
|
+
[[:assign, [:name, "a"], [:paren, [:lit, 10]]]]
|
139
|
+
]],
|
140
|
+
@parser.parse('var a = (10);'))
|
141
|
+
assert_ecma('var a = (10);', @parser.parse('var a = (10);'))
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_parser_var_ints
|
145
|
+
assert @parser
|
146
|
+
tree = @parser.parse(StringIO.new("var foo = 10, bar = 1;"))
|
147
|
+
assert_kind_of SourceElements, tree
|
148
|
+
assert_kind_of VarStatement, tree.value.first
|
149
|
+
assert_sexp(
|
150
|
+
[[:var,
|
151
|
+
[
|
152
|
+
[:assign, [:name, "foo"], [:lit, 10]],
|
153
|
+
[:assign, [:name, "bar"], [:lit, 1]],
|
154
|
+
]]],
|
155
|
+
tree
|
156
|
+
)
|
157
|
+
assert_ecma('var foo = 10, bar = 1;',
|
158
|
+
@parser.parse('var foo = 10, bar = 1'))
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_parser_var_string_lit
|
162
|
+
assert @parser
|
163
|
+
tree = @parser.parse(StringIO.new("var foo = 'hello world';"))
|
164
|
+
assert_sexp(
|
165
|
+
[[:var,
|
166
|
+
[
|
167
|
+
[:assign, [:name, "foo"], [:str, 'hello world']],
|
168
|
+
]]],
|
169
|
+
tree
|
170
|
+
)
|
171
|
+
assert_ecma('var foo = "hello world";',
|
172
|
+
@parser.parse('var foo = "hello world"'))
|
173
|
+
end
|
174
|
+
|
175
|
+
def test_accessor_as_square_brace
|
176
|
+
assert_ecma("foo['hello-world'];",
|
177
|
+
@parser.parse("foo['hello-world']"))
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_paren_around_function
|
181
|
+
assert_ecma("(function() { }).foo();",
|
182
|
+
@parser.parse('(function() { }).foo()'))
|
183
|
+
assert_ecma("(function() { })();",
|
184
|
+
@parser.parse('(function() { })()'))
|
185
|
+
end
|
186
|
+
|
187
|
+
def test_parser_var_nil_lit
|
188
|
+
assert @parser
|
189
|
+
tree = @parser.parse(StringIO.new("var foo = null;"))
|
190
|
+
assert_sexp(
|
191
|
+
[[:var,
|
192
|
+
[
|
193
|
+
[:assign, [:name, "foo"], [:nil]],
|
194
|
+
]]],
|
195
|
+
tree
|
196
|
+
)
|
197
|
+
assert_ecma('var foo = null;', @parser.parse('var foo = null'))
|
198
|
+
end
|
199
|
+
|
200
|
+
def test_parser_var_true_lit
|
201
|
+
assert @parser
|
202
|
+
tree = @parser.parse(StringIO.new("var foo = true;"))
|
203
|
+
assert_sexp(
|
204
|
+
[[:var,
|
205
|
+
[
|
206
|
+
[:assign, [:name, "foo"], [:true]],
|
207
|
+
]]],
|
208
|
+
tree
|
209
|
+
)
|
210
|
+
assert_ecma('var foo = true;', @parser.parse('var foo = true'))
|
211
|
+
end
|
212
|
+
|
213
|
+
def test_parser_var_false_lit
|
214
|
+
assert @parser
|
215
|
+
tree = @parser.parse(StringIO.new("var foo = false;"))
|
216
|
+
assert_sexp(
|
217
|
+
[[:var,
|
218
|
+
[
|
219
|
+
[:assign, [:name, "foo"], [:false]],
|
220
|
+
]]],
|
221
|
+
tree
|
222
|
+
)
|
223
|
+
assert_ecma('var foo = false;', @parser.parse('var foo = false'))
|
224
|
+
end
|
225
|
+
|
226
|
+
def test_parser_var_this_lit
|
227
|
+
assert @parser
|
228
|
+
tree = @parser.parse(StringIO.new("var foo = this;"))
|
229
|
+
assert_sexp(
|
230
|
+
[[:var,
|
231
|
+
[
|
232
|
+
[:assign, [:name, "foo"], [:this]],
|
233
|
+
]]],
|
234
|
+
tree
|
235
|
+
)
|
236
|
+
assert_ecma('var foo = this;', @parser.parse('var foo = this'))
|
237
|
+
end
|
238
|
+
|
239
|
+
def test_parser_var_regex_lit
|
240
|
+
assert @parser
|
241
|
+
tree = @parser.parse(StringIO.new("var foo = /abc/;"))
|
242
|
+
assert_sexp(
|
243
|
+
[[:var,
|
244
|
+
[
|
245
|
+
[:assign, [:name, "foo"], [:lit, "/abc/"]],
|
246
|
+
]]],
|
247
|
+
tree
|
248
|
+
)
|
249
|
+
assert_ecma('var foo = /abc/;', @parser.parse('var foo = /abc/'))
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_parser_var_float
|
253
|
+
assert @parser
|
254
|
+
tree = @parser.parse(StringIO.new("var foo = 10, bar = 1.1;"))
|
255
|
+
assert_kind_of SourceElements, tree
|
256
|
+
assert_kind_of VarStatement, tree.value.first
|
257
|
+
assert_sexp(
|
258
|
+
[[:var,
|
259
|
+
[
|
260
|
+
[:assign, [:name, "foo"], [:lit, 10]],
|
261
|
+
[:assign, [:name, "bar"], [:lit, 1.1]],
|
262
|
+
]]],
|
263
|
+
tree
|
264
|
+
)
|
265
|
+
assert_ecma('var foo = 10, bar = 1.1;',
|
266
|
+
@parser.parse('var foo = 10, bar = 1.1'))
|
267
|
+
end
|
268
|
+
|
269
|
+
def assert_sexp(expected, node)
|
270
|
+
assert_equal(expected, node.to_sexp)
|
271
|
+
end
|
272
|
+
|
273
|
+
def assert_ecma(expected, node)
|
274
|
+
assert_equal(expected, node.to_ecma)
|
275
|
+
end
|
276
|
+
end
|
@@ -0,0 +1,449 @@
|
|
1
|
+
# -*- Mode: makefile -*-
|
2
|
+
#
|
3
|
+
# ***** BEGIN LICENSE BLOCK *****
|
4
|
+
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
5
|
+
#
|
6
|
+
# The contents of this file are subject to the Mozilla Public License Version
|
7
|
+
# 1.1 (the "License"); you may not use this file except in compliance with
|
8
|
+
# the License. You may obtain a copy of the License at
|
9
|
+
# http://www.mozilla.org/MPL/
|
10
|
+
#
|
11
|
+
# Software distributed under the License is distributed on an "AS IS" basis,
|
12
|
+
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
13
|
+
# for the specific language governing rights and limitations under the
|
14
|
+
# License.
|
15
|
+
#
|
16
|
+
# The Original Code is Mozilla Communicator client code, released
|
17
|
+
# March 31, 1998.
|
18
|
+
#
|
19
|
+
# The Initial Developer of the Original Code is
|
20
|
+
# Netscape Communications Corporation.
|
21
|
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
22
|
+
# the Initial Developer. All Rights Reserved.
|
23
|
+
#
|
24
|
+
# Contributor(s):
|
25
|
+
#
|
26
|
+
# Alternatively, the contents of this file may be used under the terms of
|
27
|
+
# either of the GNU General Public License Version 2 or later (the "GPL"),
|
28
|
+
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
29
|
+
# in which case the provisions of the GPL or the LGPL are applicable instead
|
30
|
+
# of those above. If you wish to allow use of your version of this file only
|
31
|
+
# under the terms of either the GPL or the LGPL, and not to allow others to
|
32
|
+
# use your version of this file under the terms of the MPL, indicate your
|
33
|
+
# decision by deleting the provisions above and replace them with the notice
|
34
|
+
# and other provisions required by the GPL or the LGPL. If you do not delete
|
35
|
+
# the provisions above, a recipient may use your version of this file under
|
36
|
+
# the terms of any one of the MPL, the GPL or the LGPL.
|
37
|
+
#
|
38
|
+
# ***** END LICENSE BLOCK *****
|
39
|
+
|
40
|
+
DEPTH = ../..
|
41
|
+
topsrcdir = @top_srcdir@
|
42
|
+
srcdir = @srcdir@
|
43
|
+
VPATH = @srcdir@
|
44
|
+
|
45
|
+
include $(DEPTH)/config/autoconf.mk
|
46
|
+
|
47
|
+
MODULE = js
|
48
|
+
LIBRARY_NAME = mozjs
|
49
|
+
LIB_IS_C_ONLY = 1
|
50
|
+
GRE_MODULE = 1
|
51
|
+
|
52
|
+
ifdef GNU_CC
|
53
|
+
ifdef INTEL_CC
|
54
|
+
# icc gets special optimize flags
|
55
|
+
ifdef MOZ_PROFILE_GENERATE
|
56
|
+
MODULE_OPTIMIZE_FLAGS = -O0
|
57
|
+
else
|
58
|
+
MODULE_OPTIMIZE_FLAGS = -O2 -ip
|
59
|
+
#XXX: do we want different INTERP_OPTIMIZER flags here?
|
60
|
+
endif
|
61
|
+
else
|
62
|
+
MODULE_OPTIMIZE_FLAGS = -Os -fstrict-aliasing $(MOZ_OPTIMIZE_SIZE_TWEAK)
|
63
|
+
# Special optimization flags for jsinterp.c
|
64
|
+
INTERP_OPTIMIZER = -O3 -fstrict-aliasing
|
65
|
+
endif
|
66
|
+
else
|
67
|
+
ifeq ($(OS_ARCH),SunOS)
|
68
|
+
MODULE_OPTIMIZE_FLAGS = -xO4
|
69
|
+
endif
|
70
|
+
ifeq ($(OS_ARCH),WINNT)
|
71
|
+
MODULE_OPTIMIZE_FLAGS = -O2 -GL
|
72
|
+
endif
|
73
|
+
endif
|
74
|
+
|
75
|
+
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
|
76
|
+
LIBRARY_NAME = js$(MOZ_BITS)$(VERSION_NUMBER)
|
77
|
+
RESFILE = js$(MOZ_BITS)40.res
|
78
|
+
endif
|
79
|
+
|
80
|
+
PACKAGE_FILE = js.pkg
|
81
|
+
|
82
|
+
# JavaScript must be built shared, even for static builds, as it is used by
|
83
|
+
# other modules which are always built shared. Failure to do so results in
|
84
|
+
# the js code getting copied into xpinstall and jsd as well as mozilla-bin,
|
85
|
+
# and then the static data cells used for locking no longer work.
|
86
|
+
|
87
|
+
ifndef JS_STATIC_BUILD
|
88
|
+
FORCE_SHARED_LIB = 1
|
89
|
+
endif
|
90
|
+
|
91
|
+
CSRCS = \
|
92
|
+
jsapi.c \
|
93
|
+
jsarena.c \
|
94
|
+
jsarray.c \
|
95
|
+
jsatom.c \
|
96
|
+
jsbool.c \
|
97
|
+
jscntxt.c \
|
98
|
+
jsdate.c \
|
99
|
+
jsdbgapi.c \
|
100
|
+
jsdhash.c \
|
101
|
+
jsdtoa.c \
|
102
|
+
jsemit.c \
|
103
|
+
jsexn.c \
|
104
|
+
jsfun.c \
|
105
|
+
jsgc.c \
|
106
|
+
jshash.c \
|
107
|
+
jsinterp.c \
|
108
|
+
jsinvoke.c \
|
109
|
+
jsiter.c \
|
110
|
+
jslock.c \
|
111
|
+
jslog2.c \
|
112
|
+
jslong.c \
|
113
|
+
jsmath.c \
|
114
|
+
jsnum.c \
|
115
|
+
jsobj.c \
|
116
|
+
jsopcode.c \
|
117
|
+
jsparse.c \
|
118
|
+
jsprf.c \
|
119
|
+
jsregexp.c \
|
120
|
+
jsscan.c \
|
121
|
+
jsscope.c \
|
122
|
+
jsscript.c \
|
123
|
+
jsstr.c \
|
124
|
+
jsutil.c \
|
125
|
+
jsxdrapi.c \
|
126
|
+
jsxml.c \
|
127
|
+
prmjtime.c \
|
128
|
+
$(NULL)
|
129
|
+
|
130
|
+
ifdef HAVE_DTRACE
|
131
|
+
CSRCS += \
|
132
|
+
jsdtracef.c
|
133
|
+
endif
|
134
|
+
|
135
|
+
EXPORTS = \
|
136
|
+
jsautocfg.h \
|
137
|
+
jsautokw.h \
|
138
|
+
js.msg \
|
139
|
+
jsapi.h \
|
140
|
+
jsarray.h \
|
141
|
+
jsarena.h \
|
142
|
+
jsatom.h \
|
143
|
+
jsbit.h \
|
144
|
+
jsbool.h \
|
145
|
+
jsclist.h \
|
146
|
+
jscntxt.h \
|
147
|
+
jscompat.h \
|
148
|
+
jsconfig.h \
|
149
|
+
jsdate.h \
|
150
|
+
jsdbgapi.h \
|
151
|
+
jsdhash.h \
|
152
|
+
jsdtoa.h \
|
153
|
+
jsemit.h \
|
154
|
+
jsfun.h \
|
155
|
+
jsgc.h \
|
156
|
+
jshash.h \
|
157
|
+
jsinterp.h \
|
158
|
+
jsiter.h \
|
159
|
+
jslock.h \
|
160
|
+
jslong.h \
|
161
|
+
jsmath.h \
|
162
|
+
jsnum.h \
|
163
|
+
jsobj.h \
|
164
|
+
jsopcode.tbl \
|
165
|
+
jsopcode.h \
|
166
|
+
jsotypes.h \
|
167
|
+
jsparse.h \
|
168
|
+
jsprf.h \
|
169
|
+
jsproto.tbl \
|
170
|
+
jsprvtd.h \
|
171
|
+
jspubtd.h \
|
172
|
+
jsregexp.h \
|
173
|
+
jsscan.h \
|
174
|
+
jsscope.h \
|
175
|
+
jsscript.h \
|
176
|
+
jsstddef.h \
|
177
|
+
jsstr.h \
|
178
|
+
jstypes.h \
|
179
|
+
jsutil.h \
|
180
|
+
jsxdrapi.h \
|
181
|
+
jsxml.h \
|
182
|
+
$(NULL)
|
183
|
+
|
184
|
+
ifdef HAVE_DTRACE
|
185
|
+
EXPORTS += \
|
186
|
+
jsdtracef.h \
|
187
|
+
javascript-trace.h \
|
188
|
+
$(NULL)
|
189
|
+
endif
|
190
|
+
|
191
|
+
ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
|
192
|
+
EXPORTS += jscpucfg.h
|
193
|
+
endif
|
194
|
+
|
195
|
+
JS_SAFE_ARENA = 1
|
196
|
+
|
197
|
+
DASH_R = -r
|
198
|
+
|
199
|
+
ifneq (,$(filter OS2 WINCE WINNT,$(OS_ARCH)))
|
200
|
+
SDK_LIBRARY = $(IMPORT_LIBRARY)
|
201
|
+
else
|
202
|
+
SDK_LIBRARY = $(SHARED_LIBRARY)
|
203
|
+
endif
|
204
|
+
|
205
|
+
include $(topsrcdir)/config/config.mk
|
206
|
+
|
207
|
+
EXTRA_DSO_LDOPTS += $(NSPR_LIBS)
|
208
|
+
|
209
|
+
ifdef MOZ_MEMORY
|
210
|
+
ifeq ($(OS_ARCH),SunOS)
|
211
|
+
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DIST)/lib)
|
212
|
+
endif
|
213
|
+
endif
|
214
|
+
|
215
|
+
# When using gcc the assembly is inlined in the C-file (see jslock.c)
|
216
|
+
ifeq ($(OS_ARCH),SunOS)
|
217
|
+
ifneq (86,$(findstring 86,$(OS_TEST)))
|
218
|
+
ifndef GNU_CC
|
219
|
+
ASFILES = lock_$(OS_ARCH).s
|
220
|
+
endif
|
221
|
+
endif
|
222
|
+
endif
|
223
|
+
|
224
|
+
ifndef BUILD_OPT
|
225
|
+
MOCHAFILE = 1
|
226
|
+
endif
|
227
|
+
|
228
|
+
ifndef NSBUILDROOT
|
229
|
+
JSJAVA_STUBHEADERS = \
|
230
|
+
-I$(topsrcdir)/sun-java/include/_gen \
|
231
|
+
-I$(topsrcdir)/sun-java/netscape/javascript/_jri \
|
232
|
+
-I$(topsrcdir)/sun-java/netscape/security/_jri
|
233
|
+
else
|
234
|
+
JSJAVA_STUBHEADERS = -I$(JRI_GEN_DIR) -I$(JDK_GEN_DIR)
|
235
|
+
endif
|
236
|
+
|
237
|
+
JSJAVA_CFLAGS = \
|
238
|
+
-I$(topsrcdir)/sun-java/md-include \
|
239
|
+
-I$(topsrcdir)/sun-java/include \
|
240
|
+
$(JSJAVA_STUBHEADERS)
|
241
|
+
|
242
|
+
# Define keyword generator before rules.mk, see bug 323979 comment 50
|
243
|
+
|
244
|
+
HOST_SIMPLE_PROGRAMS += host_jskwgen$(HOST_BIN_SUFFIX)
|
245
|
+
GARBAGE += jsautokw.h host_jskwgen$(HOST_BIN_SUFFIX)
|
246
|
+
|
247
|
+
ifdef HAVE_DTRACE
|
248
|
+
ifneq ($(OS_ARCH),Darwin)
|
249
|
+
DTRACE_PROBE_OBJ = $(LIBRARY_NAME)-dtrace.$(OBJ_SUFFIX)
|
250
|
+
endif
|
251
|
+
MOZILLA_DTRACE_SRC = $(srcdir)/javascript-trace.d
|
252
|
+
endif
|
253
|
+
|
254
|
+
include $(topsrcdir)/config/rules.mk
|
255
|
+
|
256
|
+
DEFINES += -DEXPORT_JS_API
|
257
|
+
|
258
|
+
INCLUDES += -I$(srcdir)
|
259
|
+
|
260
|
+
# MSVC '-Gy' cc flag and '/OPT:REF' linker flag cause JS_GetArgument and
|
261
|
+
# JS_GetLocalVariable to be folded to the same address by the linker,
|
262
|
+
# leading to a crash on startup. See bug 151066. So, in optimized builds,
|
263
|
+
# add the /OPT:NOICF flag, which turns off 'identical COMDAT folding'.
|
264
|
+
#
|
265
|
+
# N.B.: 'identical COMDAT folding' that folds functions whose addresses
|
266
|
+
# are taken violates the ISO C and C++ standards.
|
267
|
+
ifndef MOZ_DEBUG
|
268
|
+
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
269
|
+
LDFLAGS += -OPT:NOICF
|
270
|
+
endif
|
271
|
+
endif
|
272
|
+
|
273
|
+
GARBAGE += jscpucfg.o jsautocfg.h jsautocfg.tmp jscpucfg
|
274
|
+
|
275
|
+
ifneq (,$(CROSS_COMPILE)$(filter-out WINNT,$(OS_ARCH)))
|
276
|
+
TARGETS += jscpucfg$(HOST_BIN_SUFFIX)
|
277
|
+
endif
|
278
|
+
|
279
|
+
ifdef JS_SAFE_ARENA
|
280
|
+
DEFINES += -DJS_USE_SAFE_ARENA
|
281
|
+
endif
|
282
|
+
|
283
|
+
ifdef JS_THREADSAFE
|
284
|
+
DEFINES += -DJS_THREADSAFE
|
285
|
+
endif
|
286
|
+
|
287
|
+
ifdef JS_NO_THIN_LOCKS
|
288
|
+
DEFINES += -DJS_USE_ONLY_NSPR_LOCKS
|
289
|
+
endif
|
290
|
+
|
291
|
+
ifdef JS_VERSION
|
292
|
+
DEFINES += -DJS_VERSION=$(JS_VERSION)
|
293
|
+
endif
|
294
|
+
|
295
|
+
ifneq ($(findstring -L,$(NSPR_LIBS)),)
|
296
|
+
NSPR_STATIC_PATH = $(subst -L,,$(findstring -L,$(NSPR_LIBS)))
|
297
|
+
else
|
298
|
+
NSPR_STATIC_PATH = $(DIST)/lib
|
299
|
+
endif
|
300
|
+
|
301
|
+
ifdef MOZ_SHARK
|
302
|
+
DEFINES += -DMOZ_SHARK
|
303
|
+
CFLAGS += -F/System/Library/PrivateFrameworks
|
304
|
+
LDFLAGS += -F/System/Library/PrivateFrameworks -framework CHUD
|
305
|
+
endif
|
306
|
+
|
307
|
+
LDFLAGS += $(pathsubst -l%,$(NSPR_STATIC_PATH)/%.a,$(NSPR_LIBS))
|
308
|
+
|
309
|
+
# BeOS and HP-UX do not require the extra linking of "-lm"
|
310
|
+
ifeq (,$(filter BeOS HP-UX WINNT WINCE OpenVMS,$(OS_ARCH)))
|
311
|
+
LDFLAGS += -lm
|
312
|
+
endif
|
313
|
+
|
314
|
+
# Prevent floating point errors caused by VC++ optimizations
|
315
|
+
ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
|
316
|
+
ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER)))
|
317
|
+
CFLAGS += -Op
|
318
|
+
else
|
319
|
+
CFLAGS += -fp:precise
|
320
|
+
endif
|
321
|
+
endif # WINNT
|
322
|
+
|
323
|
+
ifeq ($(OS_ARCH),FreeBSD)
|
324
|
+
LDFLAGS += -pthread
|
325
|
+
endif
|
326
|
+
ifeq ($(OS_ARCH),IRIX)
|
327
|
+
ifdef USE_N32
|
328
|
+
DASH_R += -n32
|
329
|
+
endif
|
330
|
+
endif
|
331
|
+
ifeq ($(OS_ARCH),Linux)
|
332
|
+
LDFLAGS += -ldl
|
333
|
+
endif
|
334
|
+
ifeq ($(OS_ARCH),OSF1)
|
335
|
+
LDFLAGS += -lc_r
|
336
|
+
endif
|
337
|
+
ifeq ($(OS_ARCH),SunOS)
|
338
|
+
ifeq ($(TARGET_CPU),sparc)
|
339
|
+
|
340
|
+
ifdef JS_ULTRASPARC_OPTS
|
341
|
+
DEFINES += -DULTRA_SPARC
|
342
|
+
ifdef GNU_CC
|
343
|
+
CFLAGS += -Wa,-xarch=v8plus,-DULTRA_SPARC,-P,-L,-D_ASM,-D__STDC__=0
|
344
|
+
CXXFLAGS += -Wa,-xarch=v8plus,-DULTRA_SPARC,-P,-L,-D_ASM,-D__STDC__=0,-K,PIC
|
345
|
+
else
|
346
|
+
ASFLAGS += -xarch=v8plus -DULTRA_SPARC -P -L -D_ASM -D__STDC__=0 -K PIC
|
347
|
+
endif # GNU_CC
|
348
|
+
endif # JS_ULTRASPARC_OPTS
|
349
|
+
|
350
|
+
endif
|
351
|
+
ifeq ($(OS_RELEASE),4.1)
|
352
|
+
LDFLAGS += -ldl -lnsl
|
353
|
+
else
|
354
|
+
LDFLAGS += -lposix4 -ldl -lnsl -lsocket
|
355
|
+
endif
|
356
|
+
endif
|
357
|
+
|
358
|
+
# Allow building jsinterp.c with special optimization flags
|
359
|
+
ifdef INTERP_OPTIMIZER
|
360
|
+
jsinterp.$(OBJ_SUFFIX): MODULE_OPTIMIZE_FLAGS=$(INTERP_OPTIMIZER)
|
361
|
+
endif
|
362
|
+
|
363
|
+
ifeq ($(OS_ARCH),IRIX)
|
364
|
+
ifndef GNU_CC
|
365
|
+
_COMPILE_CFLAGS = $(patsubst -O%,-O1,$(COMPILE_CFLAGS))
|
366
|
+
jsapi.o jsxdrapi.o jsarena.o jsarray.o jsatom.o jsemit.o jsfun.o jsinterp.o jsregexp.o jsparse.o jsopcode.o jsscript.o: %.o: %.c Makefile.in
|
367
|
+
$(REPORT_BUILD)
|
368
|
+
@$(MAKE_DEPS_AUTO_CC)
|
369
|
+
$(CC) -o $@ -c $(_COMPILE_CFLAGS) $<
|
370
|
+
endif
|
371
|
+
endif
|
372
|
+
|
373
|
+
# An AIX Optimization bug causes PR_dtoa() & JS_dtoa to produce wrong result.
|
374
|
+
# This suppresses optimization for this single compilation unit.
|
375
|
+
ifeq ($(OS_ARCH),AIX)
|
376
|
+
jsatom.o: jsatom.c Makefile.in
|
377
|
+
$(REPORT_BUILD)
|
378
|
+
@$(MAKE_DEPS_AUTO_CC)
|
379
|
+
$(CC) -o $@ -c $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(COMPILE_CFLAGS)) $<
|
380
|
+
jsdtoa.o: jsdtoa.c Makefile.in
|
381
|
+
$(REPORT_BUILD)
|
382
|
+
@$(MAKE_DEPS_AUTO_CC)
|
383
|
+
$(CC) -o $@ -c $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(COMPILE_CFLAGS)) $<
|
384
|
+
endif
|
385
|
+
|
386
|
+
jsopcode.h jsopcode.c: jsopcode.tbl
|
387
|
+
|
388
|
+
ifeq (,$(CROSS_COMPILE)$(filter-out WINNT,$(OS_ARCH)))
|
389
|
+
jsautocfg.h:
|
390
|
+
touch $@
|
391
|
+
else
|
392
|
+
ifeq ($(OS_ARCH),WINCE)
|
393
|
+
jsautocfg.h:
|
394
|
+
touch $@
|
395
|
+
else
|
396
|
+
jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX)
|
397
|
+
@rm -f $@ jsautocfg.tmp
|
398
|
+
./jscpucfg > jsautocfg.tmp
|
399
|
+
mv jsautocfg.tmp $@
|
400
|
+
endif
|
401
|
+
endif
|
402
|
+
|
403
|
+
# jscpucfg is a strange target
|
404
|
+
# Needs to be built with the host compiler but needs to include
|
405
|
+
# the mdcpucfg for the target so it needs the appropriate target defines
|
406
|
+
ifdef HOST_NSPR_MDCPUCFG
|
407
|
+
HOST_CC := $(HOST_CC) -DMDCPUCFG=$(TARGET_NSPR_MDCPUCFG)
|
408
|
+
HOST_CFLAGS := $(patsubst -DXP_%,,$(HOST_CFLAGS))
|
409
|
+
endif
|
410
|
+
|
411
|
+
ifdef CROSS_COMPILE
|
412
|
+
# jscpucfg needs to know when it's supposed to produce a config for the target
|
413
|
+
JSCPUCFG_DEFINES = $(ACDEFINES)
|
414
|
+
endif
|
415
|
+
|
416
|
+
ifeq ($(OS_ARCH),QNX)
|
417
|
+
ifneq ($(OS_TARGET),NTO)
|
418
|
+
# QNX's compiler apparently can't build a binary directly from a source file.
|
419
|
+
jscpucfg.o: jscpucfg.c Makefile.in
|
420
|
+
$(HOST_CC) $(HOST_CFLAGS) -c $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) -o $@ $<
|
421
|
+
|
422
|
+
jscpucfg: jscpucfg.o
|
423
|
+
$(HOST_CC) $(HOST_CFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) -o $@ $<
|
424
|
+
endif
|
425
|
+
else
|
426
|
+
ifeq ($(OS_ARCH),WINCE)
|
427
|
+
jscpucfg$(HOST_BIN_SUFFIX):
|
428
|
+
echo no need to build jscpucfg $<
|
429
|
+
else
|
430
|
+
jscpucfg$(HOST_BIN_SUFFIX): jscpucfg.c Makefile.in
|
431
|
+
$(HOST_CC) $(HOST_CFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) $(OUTOPTION)$@ $<
|
432
|
+
endif
|
433
|
+
endif
|
434
|
+
|
435
|
+
# Extra dependancies and rules for keyword switch code
|
436
|
+
jsscan.$(OBJ_SUFFIX): jsautokw.h jskeyword.tbl
|
437
|
+
|
438
|
+
host_jskwgen.$(OBJ_SUFFIX): jsconfig.h jskeyword.tbl
|
439
|
+
|
440
|
+
jsautokw.h: host_jskwgen$(HOST_BIN_SUFFIX)
|
441
|
+
./host_jskwgen$(HOST_BIN_SUFFIX) $@
|
442
|
+
|
443
|
+
ifdef HAVE_DTRACE
|
444
|
+
javascript-trace.h: $(srcdir)/javascript-trace.d
|
445
|
+
dtrace -h -s $(srcdir)/javascript-trace.d -o javascript-trace.h.in
|
446
|
+
sed 's/if _DTRACE_VERSION/ifdef INCLUDE_MOZILLA_DTRACE/' \
|
447
|
+
javascript-trace.h.in > javascript-trace.h
|
448
|
+
endif
|
449
|
+
|