johnson 1.2.0 → 2.0.0.pre0
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/CHANGELOG.rdoc +8 -0
- data/Manifest.txt +762 -48
- data/README.rdoc +2 -1
- data/Rakefile +90 -18
- data/ext/spidermonkey/conversions.c +9 -2
- data/ext/spidermonkey/ruby_land_proxy.c +1 -1
- data/ext/spidermonkey/runtime.h +1 -1
- data/ext/tracemonkey/context.cc +125 -0
- data/ext/tracemonkey/context.h +19 -0
- data/ext/tracemonkey/conversions.cc +365 -0
- data/ext/tracemonkey/conversions.h +32 -0
- data/ext/tracemonkey/debugger.cc +234 -0
- data/ext/tracemonkey/debugger.h +10 -0
- data/ext/tracemonkey/extconf.rb +37 -0
- data/ext/tracemonkey/extensions.cc +37 -0
- data/ext/tracemonkey/extensions.h +12 -0
- data/ext/tracemonkey/global.cc +40 -0
- data/ext/tracemonkey/global.h +11 -0
- data/ext/tracemonkey/idhash.cc +16 -0
- data/ext/tracemonkey/idhash.h +8 -0
- data/ext/tracemonkey/immutable_node.cc +1199 -0
- data/ext/tracemonkey/immutable_node.cc.erb +559 -0
- data/ext/tracemonkey/immutable_node.h +22 -0
- data/ext/tracemonkey/jroot.h +215 -0
- data/ext/tracemonkey/js_land_proxy.cc +620 -0
- data/ext/tracemonkey/js_land_proxy.h +20 -0
- data/ext/tracemonkey/ruby_land_proxy.cc +618 -0
- data/ext/tracemonkey/ruby_land_proxy.h +38 -0
- data/ext/tracemonkey/runtime.cc +454 -0
- data/ext/tracemonkey/runtime.h +27 -0
- data/ext/tracemonkey/split_global.cc +392 -0
- data/ext/tracemonkey/split_global.h +11 -0
- data/ext/tracemonkey/tracemonkey.cc +23 -0
- data/ext/tracemonkey/tracemonkey.h +32 -0
- data/lib/johnson.rb +12 -4
- data/lib/johnson/error.rb +5 -0
- data/lib/johnson/js/prelude.js +16 -1
- data/lib/johnson/parser.rb +2 -1
- data/lib/johnson/runtime.rb +87 -26
- data/lib/johnson/spidermonkey/runtime.rb +7 -16
- data/lib/johnson/tracemonkey.rb +13 -0
- data/lib/johnson/tracemonkey/context.rb +10 -0
- data/lib/johnson/tracemonkey/debugger.rb +67 -0
- data/lib/johnson/tracemonkey/immutable_node.rb +282 -0
- data/lib/johnson/tracemonkey/js_land_proxy.rb +64 -0
- data/lib/johnson/tracemonkey/mutable_tree_visitor.rb +242 -0
- data/lib/johnson/tracemonkey/ruby_land_proxy.rb +17 -0
- data/lib/johnson/tracemonkey/runtime.rb +80 -0
- data/test/{johnson_test.rb → generic/johnson_test.rb} +1 -1
- data/test/{parser_test.rb → generic/parser_test.rb} +1 -1
- data/test/helper.rb +23 -4
- data/test/johnson/{browser_test.rb → generic/browser_test.rb} +1 -1
- data/test/johnson/{conversions → generic/conversions}/array_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/boolean_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/callable_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/file_test.rb +1 -1
- data/test/johnson/generic/conversions/helper.rb +1 -0
- data/test/johnson/{conversions → generic/conversions}/nil_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/number_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/regexp_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/string_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/struct_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/symbol_test.rb +1 -1
- data/test/johnson/{conversions → generic/conversions}/thread_test.rb +1 -1
- data/test/johnson/{custom_conversions_test.rb → generic/custom_conversions_test.rb} +1 -1
- data/test/johnson/generic/default_test.rb +12 -0
- data/test/johnson/{error_test.rb → generic/error_test.rb} +1 -1
- data/test/johnson/{extensions_test.rb → generic/extensions_test.rb} +1 -1
- data/test/johnson/generic/helper.rb +1 -0
- data/test/johnson/{nodes → generic/nodes}/array_literal_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/array_node_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/binary_node_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/bracket_access_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/delete_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/do_while_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/dot_accessor_test.rb +1 -1
- data/test/johnson/generic/nodes/export_test.rb +11 -0
- data/test/johnson/{nodes → generic/nodes}/for_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/function_test.rb +1 -1
- data/test/johnson/generic/nodes/helper.rb +1 -0
- data/test/johnson/{nodes → generic/nodes}/if_test.rb +16 -6
- data/test/johnson/generic/nodes/import_test.rb +15 -0
- data/test/johnson/{nodes → generic/nodes}/label_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/let_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/object_literal_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/return_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/semi_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/switch_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/ternary_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/throw_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/try_node_test.rb +36 -6
- data/test/johnson/{nodes → generic/nodes}/typeof_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/unary_node_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/void_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/while_test.rb +1 -1
- data/test/johnson/{nodes → generic/nodes}/with_test.rb +1 -1
- data/test/johnson/{prelude_test.rb → generic/prelude_test.rb} +1 -1
- data/test/johnson/{runtime_test.rb → generic/runtime_test.rb} +3 -6
- data/test/johnson/generic/version_test.rb +13 -0
- data/test/johnson/{visitors → generic/visitors}/dot_visitor_test.rb +1 -1
- data/test/johnson/{visitors → generic/visitors}/enumerating_visitor_test.rb +1 -1
- data/test/johnson/generic/visitors/helper.rb +1 -0
- data/test/johnson/spidermonkey/js_land_proxy_test.rb +1 -5
- data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +11 -7
- data/test/johnson/tracemonkey/context_test.rb +21 -0
- data/test/johnson/tracemonkey/immutable_node_test.rb +34 -0
- data/test/johnson/tracemonkey/js_land_proxy_test.rb +273 -0
- data/test/johnson/tracemonkey/ruby_land_proxy_test.rb +274 -0
- data/test/johnson/tracemonkey/runtime_test.rb +41 -0
- data/test/johnson/tracemonkey/split_global_test.rb +32 -0
- data/vendor/spidermonkey/js.pkg +2 -0
- data/vendor/tracemonkey/Makefile.in +668 -0
- data/vendor/tracemonkey/Makefile.ref +483 -0
- data/vendor/tracemonkey/README.html +54 -0
- data/vendor/tracemonkey/SpiderMonkey.rsp +11 -0
- data/vendor/tracemonkey/Y.js +19 -0
- data/vendor/tracemonkey/aclocal.m4 +9 -0
- data/vendor/tracemonkey/bench.sh +5 -0
- data/vendor/tracemonkey/build/autoconf/acoutput-fast.pl +202 -0
- data/vendor/tracemonkey/build/autoconf/altoptions.m4 +154 -0
- data/vendor/tracemonkey/build/autoconf/config.guess +1537 -0
- data/vendor/tracemonkey/build/autoconf/config.sub +1595 -0
- data/vendor/tracemonkey/build/autoconf/install-sh +119 -0
- data/vendor/tracemonkey/build/autoconf/make-makefile +315 -0
- data/vendor/tracemonkey/build/autoconf/match-dir.sh +101 -0
- data/vendor/tracemonkey/build/autoconf/moznbytetype.m4 +136 -0
- data/vendor/tracemonkey/build/autoconf/nspr.m4 +82 -0
- data/vendor/tracemonkey/build/autoconf/pkg.m4 +59 -0
- data/vendor/tracemonkey/build/autoconf/update-makefile.sh +118 -0
- data/vendor/tracemonkey/build/cygwin-wrapper +75 -0
- data/vendor/tracemonkey/build/hcc +111 -0
- data/vendor/tracemonkey/build/hcpp +155 -0
- data/vendor/tracemonkey/build/unix/mddepend.pl +165 -0
- data/vendor/tracemonkey/build/unix/uniq.pl +63 -0
- data/vendor/tracemonkey/build/win32/pgomerge.py +40 -0
- data/vendor/tracemonkey/builtins.tbl +91 -0
- data/vendor/tracemonkey/call.js +13 -0
- data/vendor/tracemonkey/config.mk +206 -0
- data/vendor/tracemonkey/config/Makefile.in +106 -0
- data/vendor/tracemonkey/config/Moz/Milestone.pm +232 -0
- data/vendor/tracemonkey/config/autoconf.mk.in +362 -0
- data/vendor/tracemonkey/config/check-sync-dirs.py +103 -0
- data/vendor/tracemonkey/config/check-sync-exceptions +7 -0
- data/vendor/tracemonkey/config/config.mk +881 -0
- data/vendor/tracemonkey/config/fastcwd.pl +66 -0
- data/vendor/tracemonkey/config/gcc_hidden.h +2 -0
- data/vendor/tracemonkey/config/insure.mk +53 -0
- data/vendor/tracemonkey/config/make-system-wrappers.pl +59 -0
- data/vendor/tracemonkey/config/milestone.pl +112 -0
- data/vendor/tracemonkey/config/milestone.txt +13 -0
- data/vendor/tracemonkey/config/mkdepend/Makefile.in +84 -0
- data/vendor/tracemonkey/config/mkdepend/cppsetup.c +233 -0
- data/vendor/tracemonkey/config/mkdepend/def.h +184 -0
- data/vendor/tracemonkey/config/mkdepend/ifparser.c +551 -0
- data/vendor/tracemonkey/config/mkdepend/ifparser.h +83 -0
- data/vendor/tracemonkey/config/mkdepend/imakemdep.h +733 -0
- data/vendor/tracemonkey/config/mkdepend/include.c +337 -0
- data/vendor/tracemonkey/config/mkdepend/main.c +860 -0
- data/vendor/tracemonkey/config/mkdepend/mkdepend.man +382 -0
- data/vendor/tracemonkey/config/mkdepend/parse.c +686 -0
- data/vendor/tracemonkey/config/mkdepend/pr.c +124 -0
- data/vendor/tracemonkey/config/nfspwd.pl +50 -0
- data/vendor/tracemonkey/config/nsinstall.c +481 -0
- data/vendor/tracemonkey/config/nsinstall.py +155 -0
- data/vendor/tracemonkey/config/pathsub.c +247 -0
- data/vendor/tracemonkey/config/pathsub.h +74 -0
- data/vendor/tracemonkey/config/preprocessor.pl +671 -0
- data/vendor/tracemonkey/config/revdepth-nt.pl +48 -0
- data/vendor/tracemonkey/config/revdepth.pl +51 -0
- data/vendor/tracemonkey/config/rules.mk +2310 -0
- data/vendor/tracemonkey/config/static-checking-config.mk +21 -0
- data/vendor/tracemonkey/config/static-checking.js +92 -0
- data/vendor/tracemonkey/config/string-format.js +61 -0
- data/vendor/tracemonkey/config/system-headers +1035 -0
- data/vendor/tracemonkey/config/version.mk +85 -0
- data/vendor/tracemonkey/config/version_win.pl +442 -0
- data/vendor/tracemonkey/configure +14183 -0
- data/vendor/tracemonkey/configure.in +5363 -0
- data/vendor/tracemonkey/correct.sh +23 -0
- data/vendor/tracemonkey/correct/check-3d-morph.js +55 -0
- data/vendor/tracemonkey/correct/check-3d-raytrace.js +445 -0
- data/vendor/tracemonkey/correct/check-access-binary-trees.js +52 -0
- data/vendor/tracemonkey/correct/check-access-fannkuch.js +66 -0
- data/vendor/tracemonkey/correct/check-access-nbody.js +171 -0
- data/vendor/tracemonkey/correct/check-access-nsieve.js +40 -0
- data/vendor/tracemonkey/correct/check-bitops-3bit-bits-in-byte.js +35 -0
- data/vendor/tracemonkey/correct/check-bitops-bits-in-byte.js +24 -0
- data/vendor/tracemonkey/correct/check-bitops-bitwise-and.js +29 -0
- data/vendor/tracemonkey/correct/check-bitops-nsieve-bits.js +40 -0
- data/vendor/tracemonkey/correct/check-controlflow-recursive.js +27 -0
- data/vendor/tracemonkey/correct/check-date-format-tofte.js +302 -0
- data/vendor/tracemonkey/correct/check-date-format-xparb.js +421 -0
- data/vendor/tracemonkey/correct/check-mont.js +119 -0
- data/vendor/tracemonkey/dtoa.c +3335 -0
- data/vendor/tracemonkey/editline/Makefile.in +55 -0
- data/vendor/tracemonkey/editline/Makefile.ref +143 -0
- data/vendor/tracemonkey/editline/README +83 -0
- data/vendor/tracemonkey/editline/editline.3 +175 -0
- data/vendor/tracemonkey/editline/editline.c +1371 -0
- data/vendor/tracemonkey/editline/editline.h +135 -0
- data/vendor/tracemonkey/editline/sysunix.c +182 -0
- data/vendor/tracemonkey/editline/unix.h +82 -0
- data/vendor/tracemonkey/if.js +13 -0
- data/vendor/tracemonkey/imacro_asm.js.in +396 -0
- data/vendor/tracemonkey/imacros.c.out +1034 -0
- data/vendor/tracemonkey/imacros.jsasm +770 -0
- data/vendor/tracemonkey/javascript-trace.d +73 -0
- data/vendor/tracemonkey/jitstats.tbl +55 -0
- data/vendor/tracemonkey/js-config.h.in +82 -0
- data/vendor/tracemonkey/js-config.in +111 -0
- data/vendor/tracemonkey/js.mdp +0 -0
- data/vendor/tracemonkey/js.msg +312 -0
- data/vendor/tracemonkey/js3240.rc +79 -0
- data/vendor/tracemonkey/jsOS240.def +654 -0
- data/vendor/tracemonkey/jsapi.cpp +6005 -0
- data/vendor/tracemonkey/jsapi.h +2727 -0
- data/vendor/tracemonkey/jsarena.cpp +450 -0
- data/vendor/tracemonkey/jsarena.h +318 -0
- data/vendor/tracemonkey/jsarray.cpp +3664 -0
- data/vendor/tracemonkey/jsarray.h +238 -0
- data/vendor/tracemonkey/jsatom.cpp +1244 -0
- data/vendor/tracemonkey/jsatom.h +493 -0
- data/vendor/tracemonkey/jsbit.h +249 -0
- data/vendor/tracemonkey/jsbool.cpp +184 -0
- data/vendor/tracemonkey/jsbool.h +88 -0
- data/vendor/tracemonkey/jsbuiltins.cpp +415 -0
- data/vendor/tracemonkey/jsbuiltins.h +456 -0
- data/vendor/tracemonkey/jsclist.h +139 -0
- data/vendor/tracemonkey/jscntxt.cpp +1816 -0
- data/vendor/tracemonkey/jscntxt.h +1541 -0
- data/vendor/tracemonkey/jscompat.h +57 -0
- data/vendor/tracemonkey/jsconfig.mk +181 -0
- data/vendor/tracemonkey/jscpucfg.cpp +194 -0
- data/vendor/tracemonkey/jscpucfg.h +91 -0
- data/vendor/tracemonkey/jsdate.cpp +2465 -0
- data/vendor/tracemonkey/jsdate.h +129 -0
- data/vendor/tracemonkey/jsdbgapi.cpp +2017 -0
- data/vendor/tracemonkey/jsdbgapi.h +500 -0
- data/vendor/tracemonkey/jsdhash.cpp +876 -0
- data/vendor/tracemonkey/jsdhash.h +588 -0
- data/vendor/tracemonkey/jsdtoa.cpp +572 -0
- data/vendor/tracemonkey/jsdtoa.h +131 -0
- data/vendor/tracemonkey/jsdtracef.c +318 -0
- data/vendor/tracemonkey/jsdtracef.h +81 -0
- data/vendor/tracemonkey/jsemit.cpp +7292 -0
- data/vendor/tracemonkey/jsemit.h +802 -0
- data/vendor/tracemonkey/jsexn.cpp +1337 -0
- data/vendor/tracemonkey/jsexn.h +96 -0
- data/vendor/tracemonkey/jsfile.cpp +2747 -0
- data/vendor/tracemonkey/jsfile.h +56 -0
- data/vendor/tracemonkey/jsfile.msg +90 -0
- data/vendor/tracemonkey/jsfun.cpp +3089 -0
- data/vendor/tracemonkey/jsfun.h +366 -0
- data/vendor/tracemonkey/jsgc.cpp +3816 -0
- data/vendor/tracemonkey/jsgc.h +429 -0
- data/vendor/tracemonkey/jshash.cpp +477 -0
- data/vendor/tracemonkey/jshash.h +151 -0
- data/vendor/tracemonkey/jsify.pl +483 -0
- data/vendor/tracemonkey/jsinterp.cpp +7441 -0
- data/vendor/tracemonkey/jsinterp.h +666 -0
- data/vendor/tracemonkey/jsinvoke.cpp +42 -0
- data/vendor/tracemonkey/jsiter.cpp +1040 -0
- data/vendor/tracemonkey/jsiter.h +140 -0
- data/vendor/tracemonkey/jskeyword.tbl +124 -0
- data/vendor/tracemonkey/jskwgen.cpp +460 -0
- data/vendor/tracemonkey/jslibmath.h +69 -0
- data/vendor/tracemonkey/jslock.cpp +1512 -0
- data/vendor/tracemonkey/jslock.h +325 -0
- data/vendor/tracemonkey/jslocko.asm +60 -0
- data/vendor/tracemonkey/jslog2.cpp +111 -0
- data/vendor/tracemonkey/jslong.h +167 -0
- data/vendor/tracemonkey/jsmath.cpp +806 -0
- data/vendor/tracemonkey/jsmath.h +63 -0
- data/vendor/tracemonkey/jsnum.cpp +1374 -0
- data/vendor/tracemonkey/jsnum.h +280 -0
- data/vendor/tracemonkey/jsobj.cpp +6165 -0
- data/vendor/tracemonkey/jsobj.h +870 -0
- data/vendor/tracemonkey/json.cpp +1338 -0
- data/vendor/tracemonkey/json.h +108 -0
- data/vendor/tracemonkey/jsopcode.cpp +5484 -0
- data/vendor/tracemonkey/jsopcode.h +434 -0
- data/vendor/tracemonkey/jsopcode.tbl +591 -0
- data/vendor/tracemonkey/jsoplengen.cpp +121 -0
- data/vendor/tracemonkey/jsotypes.h +202 -0
- data/vendor/tracemonkey/jsparse.cpp +9257 -0
- data/vendor/tracemonkey/jsparse.h +900 -0
- data/vendor/tracemonkey/jsprf.cpp +1262 -0
- data/vendor/tracemonkey/jsprf.h +150 -0
- data/vendor/tracemonkey/jsproto.tbl +117 -0
- data/vendor/tracemonkey/jsprvtd.h +366 -0
- data/vendor/tracemonkey/jspubtd.h +585 -0
- data/vendor/tracemonkey/jsregexp.cpp +5051 -0
- data/vendor/tracemonkey/jsregexp.h +199 -0
- data/vendor/tracemonkey/jsreops.tbl +145 -0
- data/vendor/tracemonkey/jsscan.cpp +2040 -0
- data/vendor/tracemonkey/jsscan.h +467 -0
- data/vendor/tracemonkey/jsscope.cpp +1966 -0
- data/vendor/tracemonkey/jsscope.h +487 -0
- data/vendor/tracemonkey/jsscript.cpp +1932 -0
- data/vendor/tracemonkey/jsscript.h +345 -0
- data/vendor/tracemonkey/jsshell.msg +54 -0
- data/vendor/tracemonkey/jsstack.js +167 -0
- data/vendor/tracemonkey/jsstaticcheck.h +69 -0
- data/vendor/tracemonkey/jsstddef.h +87 -0
- data/vendor/tracemonkey/jsstdint.h +96 -0
- data/vendor/tracemonkey/jsstr.cpp +5277 -0
- data/vendor/tracemonkey/jsstr.h +702 -0
- data/vendor/tracemonkey/jstracer.cpp +10991 -0
- data/vendor/tracemonkey/jstracer.h +794 -0
- data/vendor/tracemonkey/jstypes.h +481 -0
- data/vendor/tracemonkey/jsutil.cpp +361 -0
- data/vendor/tracemonkey/jsutil.h +178 -0
- data/vendor/tracemonkey/jsversion.h +243 -0
- data/vendor/tracemonkey/jswince.asm +44 -0
- data/vendor/tracemonkey/jsxdrapi.cpp +800 -0
- data/vendor/tracemonkey/jsxdrapi.h +220 -0
- data/vendor/tracemonkey/jsxml.cpp +8327 -0
- data/vendor/tracemonkey/jsxml.h +305 -0
- data/vendor/tracemonkey/liveconnect/LiveConnect.dsp +157 -0
- data/vendor/tracemonkey/liveconnect/LiveConnectShell.dsp +120 -0
- data/vendor/tracemonkey/liveconnect/LiveConnectShell.dsw +44 -0
- data/vendor/tracemonkey/liveconnect/Makefile.in +105 -0
- data/vendor/tracemonkey/liveconnect/Makefile.ref +169 -0
- data/vendor/tracemonkey/liveconnect/README.html +712 -0
- data/vendor/tracemonkey/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
- data/vendor/tracemonkey/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
- data/vendor/tracemonkey/liveconnect/classes/Makefile.in +89 -0
- data/vendor/tracemonkey/liveconnect/classes/Makefile.ref +57 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/Makefile.ref +47 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSException.java +140 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
- data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
- data/vendor/tracemonkey/liveconnect/config/AIX4.1.mk +45 -0
- data/vendor/tracemonkey/liveconnect/config/AIX4.2.mk +45 -0
- data/vendor/tracemonkey/liveconnect/config/AIX4.3.mk +50 -0
- data/vendor/tracemonkey/liveconnect/config/HP-UXB.10.10.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/HP-UXB.10.20.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/HP-UXB.11.00.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/IRIX6.2.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/IRIX6.3.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/IRIX6.5.mk +43 -0
- data/vendor/tracemonkey/liveconnect/config/Linux_All.mk +73 -0
- data/vendor/tracemonkey/liveconnect/config/OSF1V4.0.mk +65 -0
- data/vendor/tracemonkey/liveconnect/config/OSF1V5.0.mk +62 -0
- data/vendor/tracemonkey/liveconnect/config/SunOS5.5.1.mk +55 -0
- data/vendor/tracemonkey/liveconnect/config/SunOS5.6.mk +39 -0
- data/vendor/tracemonkey/liveconnect/config/SunOS5.7.mk +39 -0
- data/vendor/tracemonkey/liveconnect/config/SunOS5.8.mk +39 -0
- data/vendor/tracemonkey/liveconnect/config/WINNT4.0.mk +53 -0
- data/vendor/tracemonkey/liveconnect/jsj.c +886 -0
- data/vendor/tracemonkey/liveconnect/jsj.msg +98 -0
- data/vendor/tracemonkey/liveconnect/jsj_JSObject.c +1377 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaArray.c +474 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaClass.c +737 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaMember.c +191 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaObject.c +1079 -0
- data/vendor/tracemonkey/liveconnect/jsj_JavaPackage.c +569 -0
- data/vendor/tracemonkey/liveconnect/jsj_array.c +207 -0
- data/vendor/tracemonkey/liveconnect/jsj_class.c +770 -0
- data/vendor/tracemonkey/liveconnect/jsj_convert.c +902 -0
- data/vendor/tracemonkey/liveconnect/jsj_field.c +421 -0
- data/vendor/tracemonkey/liveconnect/jsj_hash.c +488 -0
- data/vendor/tracemonkey/liveconnect/jsj_hash.h +161 -0
- data/vendor/tracemonkey/liveconnect/jsj_method.c +1825 -0
- data/vendor/tracemonkey/liveconnect/jsj_nodl.c +1 -0
- data/vendor/tracemonkey/liveconnect/jsj_private.h +677 -0
- data/vendor/tracemonkey/liveconnect/jsj_simpleapi.c +219 -0
- data/vendor/tracemonkey/liveconnect/jsj_utils.c +513 -0
- data/vendor/tracemonkey/liveconnect/jsjava.h +316 -0
- data/vendor/tracemonkey/liveconnect/netscape_javascript_JSObject.h +155 -0
- data/vendor/tracemonkey/liveconnect/nsCLiveconnect.cpp +785 -0
- data/vendor/tracemonkey/liveconnect/nsCLiveconnect.h +197 -0
- data/vendor/tracemonkey/liveconnect/nsCLiveconnectFactory.cpp +118 -0
- data/vendor/tracemonkey/liveconnect/nsCLiveconnectFactory.h +76 -0
- data/vendor/tracemonkey/liveconnect/nsILiveconnect.h +197 -0
- data/vendor/tracemonkey/liveconnect/nsISecureLiveconnect.h +94 -0
- data/vendor/tracemonkey/liveconnect/nsISecurityContext.h +136 -0
- data/vendor/tracemonkey/lock_SunOS.s +119 -0
- data/vendor/tracemonkey/mandelbrot-results.js +3 -0
- data/vendor/tracemonkey/math-partial-sums.js +32 -0
- data/vendor/tracemonkey/math-trace-tests.js +507 -0
- data/vendor/tracemonkey/md5.js +289 -0
- data/vendor/tracemonkey/nanojit/Assembler.cpp +1984 -0
- data/vendor/tracemonkey/nanojit/Assembler.h +375 -0
- data/vendor/tracemonkey/nanojit/Fragmento.cpp +651 -0
- data/vendor/tracemonkey/nanojit/Fragmento.h +237 -0
- data/vendor/tracemonkey/nanojit/LIR.cpp +2314 -0
- data/vendor/tracemonkey/nanojit/LIR.h +879 -0
- data/vendor/tracemonkey/nanojit/LIRopcode.tbl +252 -0
- data/vendor/tracemonkey/nanojit/Native.h +127 -0
- data/vendor/tracemonkey/nanojit/NativeARM.cpp +1742 -0
- data/vendor/tracemonkey/nanojit/NativeARM.h +844 -0
- data/vendor/tracemonkey/nanojit/NativeSparc.cpp +1130 -0
- data/vendor/tracemonkey/nanojit/NativeSparc.h +948 -0
- data/vendor/tracemonkey/nanojit/NativeThumb.cpp +1322 -0
- data/vendor/tracemonkey/nanojit/NativeThumb.h +525 -0
- data/vendor/tracemonkey/nanojit/Nativei386.cpp +1748 -0
- data/vendor/tracemonkey/nanojit/Nativei386.h +857 -0
- data/vendor/tracemonkey/nanojit/RegAlloc.cpp +183 -0
- data/vendor/tracemonkey/nanojit/RegAlloc.h +95 -0
- data/vendor/tracemonkey/nanojit/TraceTreeDrawer.cpp +306 -0
- data/vendor/tracemonkey/nanojit/TraceTreeDrawer.h +88 -0
- data/vendor/tracemonkey/nanojit/avmplus.cpp +56 -0
- data/vendor/tracemonkey/nanojit/avmplus.h +1016 -0
- data/vendor/tracemonkey/nanojit/nanojit.h +253 -0
- data/vendor/tracemonkey/perfect.js +39 -0
- data/vendor/tracemonkey/plify_jsdhash.sed +35 -0
- data/vendor/tracemonkey/prmjtime.cpp +869 -0
- data/vendor/tracemonkey/prmjtime.h +103 -0
- data/vendor/tracemonkey/ref-config/AIX4.1.mk +65 -0
- data/vendor/tracemonkey/ref-config/AIX4.2.mk +64 -0
- data/vendor/tracemonkey/ref-config/AIX4.3.mk +65 -0
- data/vendor/tracemonkey/ref-config/Darwin.mk +85 -0
- data/vendor/tracemonkey/ref-config/Darwin1.3.mk +81 -0
- data/vendor/tracemonkey/ref-config/Darwin1.4.mk +41 -0
- data/vendor/tracemonkey/ref-config/Darwin5.2.mk +81 -0
- data/vendor/tracemonkey/ref-config/Darwin5.3.mk +81 -0
- data/vendor/tracemonkey/ref-config/Darwin64.mk +72 -0
- data/vendor/tracemonkey/ref-config/HP-UXB.10.10.mk +77 -0
- data/vendor/tracemonkey/ref-config/HP-UXB.10.20.mk +77 -0
- data/vendor/tracemonkey/ref-config/HP-UXB.11.00.mk +80 -0
- data/vendor/tracemonkey/ref-config/IRIX.mk +87 -0
- data/vendor/tracemonkey/ref-config/IRIX5.3.mk +44 -0
- data/vendor/tracemonkey/ref-config/IRIX6.1.mk +44 -0
- data/vendor/tracemonkey/ref-config/IRIX6.2.mk +44 -0
- data/vendor/tracemonkey/ref-config/IRIX6.3.mk +44 -0
- data/vendor/tracemonkey/ref-config/IRIX6.5.mk +44 -0
- data/vendor/tracemonkey/ref-config/Linux_All.mk +105 -0
- data/vendor/tracemonkey/ref-config/Mac_OS10.0.mk +82 -0
- data/vendor/tracemonkey/ref-config/OSF1V4.0.mk +72 -0
- data/vendor/tracemonkey/ref-config/OSF1V5.0.mk +69 -0
- data/vendor/tracemonkey/ref-config/SunOS4.1.4.mk +101 -0
- data/vendor/tracemonkey/ref-config/SunOS5.10.mk +50 -0
- data/vendor/tracemonkey/ref-config/SunOS5.3.mk +91 -0
- data/vendor/tracemonkey/ref-config/SunOS5.4.mk +92 -0
- data/vendor/tracemonkey/ref-config/SunOS5.5.1.mk +44 -0
- data/vendor/tracemonkey/ref-config/SunOS5.5.mk +87 -0
- data/vendor/tracemonkey/ref-config/SunOS5.6.mk +89 -0
- data/vendor/tracemonkey/ref-config/SunOS5.7.mk +44 -0
- data/vendor/tracemonkey/ref-config/SunOS5.8.mk +44 -0
- data/vendor/tracemonkey/ref-config/SunOS5.9.mk +44 -0
- data/vendor/tracemonkey/ref-config/WINNT4.0.mk +118 -0
- data/vendor/tracemonkey/ref-config/WINNT5.0.mk +118 -0
- data/vendor/tracemonkey/ref-config/WINNT5.1.mk +118 -0
- data/vendor/tracemonkey/ref-config/WINNT5.2.mk +118 -0
- data/vendor/tracemonkey/ref-config/WINNT6.0.mk +118 -0
- data/vendor/tracemonkey/ref-config/dgux.mk +64 -0
- data/vendor/tracemonkey/resource.h +15 -0
- data/vendor/tracemonkey/rules.mk +206 -0
- data/vendor/tracemonkey/shell/Makefile.in +72 -0
- data/vendor/tracemonkey/shell/js.cpp +4719 -0
- data/vendor/tracemonkey/t/3d-cube.js +337 -0
- data/vendor/tracemonkey/t/3d-morph.js +54 -0
- data/vendor/tracemonkey/t/3d-raytrace.js +441 -0
- data/vendor/tracemonkey/t/access-binary-trees.js +50 -0
- data/vendor/tracemonkey/t/access-fannkuch.js +66 -0
- data/vendor/tracemonkey/t/access-nbody.js +169 -0
- data/vendor/tracemonkey/t/access-nsieve.js +38 -0
- data/vendor/tracemonkey/t/bitops-3bit-bits-in-byte.js +32 -0
- data/vendor/tracemonkey/t/bitops-bits-in-byte.js +21 -0
- data/vendor/tracemonkey/t/bitops-bitwise-and.js +28 -0
- data/vendor/tracemonkey/t/bitops-nsieve-bits.js +32 -0
- data/vendor/tracemonkey/t/controlflow-recursive.js +25 -0
- data/vendor/tracemonkey/t/crypto-aes.js +422 -0
- data/vendor/tracemonkey/t/crypto-md5.js +286 -0
- data/vendor/tracemonkey/t/crypto-sha1.js +224 -0
- data/vendor/tracemonkey/t/date-format-tofte.js +299 -0
- data/vendor/tracemonkey/t/date-format-xparb.js +417 -0
- data/vendor/tracemonkey/t/math-cordic.js +95 -0
- data/vendor/tracemonkey/t/math-partial-sums.js +33 -0
- data/vendor/tracemonkey/t/math-spectral-norm.js +51 -0
- data/vendor/tracemonkey/t/regexp-dna.js +1712 -0
- data/vendor/tracemonkey/t/string-base64.js +135 -0
- data/vendor/tracemonkey/t/string-fasta.js +85 -0
- data/vendor/tracemonkey/t/string-tagcloud.js +265 -0
- data/vendor/tracemonkey/t/string-unpack-code.js +68 -0
- data/vendor/tracemonkey/t/string-validate-input.js +89 -0
- data/vendor/tracemonkey/time.sh +13 -0
- data/vendor/tracemonkey/trace-test.js +5564 -0
- data/vendor/tracemonkey/v8/base.js +187 -0
- data/vendor/tracemonkey/v8/crypto.js +1689 -0
- data/vendor/tracemonkey/v8/deltablue.js +880 -0
- data/vendor/tracemonkey/v8/earley-boyer.js +4682 -0
- data/vendor/tracemonkey/v8/raytrace.js +3418 -0
- data/vendor/tracemonkey/v8/richards.js +539 -0
- data/vendor/tracemonkey/v8/run-crypto.js +44 -0
- data/vendor/tracemonkey/v8/run-deltablue.js +44 -0
- data/vendor/tracemonkey/v8/run-earley-boyer.js +44 -0
- data/vendor/tracemonkey/v8/run-raytrace.js +44 -0
- data/vendor/tracemonkey/v8/run-richards.js +44 -0
- data/vendor/tracemonkey/v8/run.js +49 -0
- data/vendor/tracemonkey/vprof/readme.txt +93 -0
- data/vendor/tracemonkey/vprof/vprof.cpp +360 -0
- data/vendor/tracemonkey/vprof/vprof.h +245 -0
- data/vendor/tracemonkey/xpconnect/Makefile.in +67 -0
- data/vendor/tracemonkey/xpconnect/crashtests/117307-1.html +20 -0
- data/vendor/tracemonkey/xpconnect/crashtests/193710.html +11 -0
- data/vendor/tracemonkey/xpconnect/crashtests/290162-1.html +5 -0
- data/vendor/tracemonkey/xpconnect/crashtests/326615-1.html +16 -0
- data/vendor/tracemonkey/xpconnect/crashtests/328553-1.html +13 -0
- data/vendor/tracemonkey/xpconnect/crashtests/346258-1.html +12 -0
- data/vendor/tracemonkey/xpconnect/crashtests/346512-1-frame1.xhtml +16 -0
- data/vendor/tracemonkey/xpconnect/crashtests/346512-1-frame2.xhtml +15 -0
- data/vendor/tracemonkey/xpconnect/crashtests/346512-1.xhtml +30 -0
- data/vendor/tracemonkey/xpconnect/crashtests/382133-1.html +3 -0
- data/vendor/tracemonkey/xpconnect/crashtests/386680-1.html +22 -0
- data/vendor/tracemonkey/xpconnect/crashtests/394810-1.html +4 -0
- data/vendor/tracemonkey/xpconnect/crashtests/400349-1.html +20 -0
- data/vendor/tracemonkey/xpconnect/crashtests/403356-1.html +13 -0
- data/vendor/tracemonkey/xpconnect/crashtests/418139-1.svg +22 -0
- data/vendor/tracemonkey/xpconnect/crashtests/420513-1.html +11 -0
- data/vendor/tracemonkey/xpconnect/crashtests/453935-1.html +37 -0
- data/vendor/tracemonkey/xpconnect/crashtests/462926.html +12 -0
- data/vendor/tracemonkey/xpconnect/crashtests/468552-1.html +18 -0
- data/vendor/tracemonkey/xpconnect/crashtests/471366-1.html +12 -0
- data/vendor/tracemonkey/xpconnect/crashtests/475185-1.html +13 -0
- data/vendor/tracemonkey/xpconnect/crashtests/475291-1.html +14 -0
- data/vendor/tracemonkey/xpconnect/crashtests/503286-1.html +23 -0
- data/vendor/tracemonkey/xpconnect/crashtests/crashtests.list +21 -0
- data/vendor/tracemonkey/xpconnect/idl/Makefile.in +78 -0
- data/vendor/tracemonkey/xpconnect/idl/XPCIDispatch.idl +51 -0
- data/vendor/tracemonkey/xpconnect/idl/mozIJSSubScriptLoader.idl +64 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIActiveXSecurityPolicy.idl +67 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIDispatchSupport.idl +119 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIJSContextStack.idl +85 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIJSRuntimeService.idl +51 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIScriptError.idl +102 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIScriptableInterfaces.idl +67 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptNotify.idl +66 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptable.idl +183 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIXPCSecurityManager.idl +114 -0
- data/vendor/tracemonkey/xpconnect/idl/nsIXPConnect.idl +819 -0
- data/vendor/tracemonkey/xpconnect/idl/xpcIJSModuleLoader.idl +95 -0
- data/vendor/tracemonkey/xpconnect/idl/xpcIJSWeakReference.idl +49 -0
- data/vendor/tracemonkey/xpconnect/idl/xpccomponents.idl +254 -0
- data/vendor/tracemonkey/xpconnect/idl/xpcexception.idl +66 -0
- data/vendor/tracemonkey/xpconnect/idl/xpcjsid.idl +83 -0
- data/vendor/tracemonkey/xpconnect/loader/ISO8601DateUtils.jsm +176 -0
- data/vendor/tracemonkey/xpconnect/loader/Makefile.in +63 -0
- data/vendor/tracemonkey/xpconnect/loader/XPCOMUtils.jsm +267 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.cpp +1717 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.h +172 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSLoaderConstructors.h +101 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSSubScriptLoader.cpp +360 -0
- data/vendor/tracemonkey/xpconnect/loader/mozJSSubScriptLoader.h +66 -0
- data/vendor/tracemonkey/xpconnect/public/Makefile.in +54 -0
- data/vendor/tracemonkey/xpconnect/public/nsAXPCNativeCallContext.h +89 -0
- data/vendor/tracemonkey/xpconnect/public/nsAutoJSValHolder.h +168 -0
- data/vendor/tracemonkey/xpconnect/public/xpc_map_end.h +327 -0
- data/vendor/tracemonkey/xpconnect/sample/Makefile.in +71 -0
- data/vendor/tracemonkey/xpconnect/sample/README +39 -0
- data/vendor/tracemonkey/xpconnect/sample/xpcsample1.cpp +337 -0
- data/vendor/tracemonkey/xpconnect/sample/xpcsample1.idl +82 -0
- data/vendor/tracemonkey/xpconnect/sample/xpcsample1.js +21 -0
- data/vendor/tracemonkey/xpconnect/shell/Makefile.in +106 -0
- data/vendor/tracemonkey/xpconnect/shell/jsshell.msg +50 -0
- data/vendor/tracemonkey/xpconnect/shell/xpcshell.cpp +1817 -0
- data/vendor/tracemonkey/xpconnect/shell/xpcshellMacUtils.h +43 -0
- data/vendor/tracemonkey/xpconnect/shell/xpcshellMacUtils.mm +54 -0
- data/vendor/tracemonkey/xpconnect/src/Makefile.in +228 -0
- data/vendor/tracemonkey/xpconnect/src/README +3 -0
- data/vendor/tracemonkey/xpconnect/src/XPCCrossOriginWrapper.cpp +1186 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispConvert.cpp +593 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispInlines.h +667 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispInterface.cpp +383 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispObject.cpp +516 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispParamPropJSClass.cpp +223 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispParams.cpp +103 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispPrivate.h +1401 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispTearOff.cpp +547 -0
- data/vendor/tracemonkey/xpconnect/src/XPCDispTypeInfo.cpp +471 -0
- data/vendor/tracemonkey/xpconnect/src/XPCIDispatchClassInfo.cpp +139 -0
- data/vendor/tracemonkey/xpconnect/src/XPCIDispatchExtension.cpp +362 -0
- data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.cpp +1350 -0
- data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.h +88 -0
- data/vendor/tracemonkey/xpconnect/src/XPCSafeJSObjectWrapper.cpp +1148 -0
- data/vendor/tracemonkey/xpconnect/src/XPCSystemOnlyWrapper.cpp +718 -0
- data/vendor/tracemonkey/xpconnect/src/XPCWrapper.cpp +850 -0
- data/vendor/tracemonkey/xpconnect/src/XPCWrapper.h +394 -0
- data/vendor/tracemonkey/xpconnect/src/dom_quickstubs.qsconf +568 -0
- data/vendor/tracemonkey/xpconnect/src/nsDispatchSupport.cpp +348 -0
- data/vendor/tracemonkey/xpconnect/src/nsScriptError.cpp +201 -0
- data/vendor/tracemonkey/xpconnect/src/nsXPConnect.cpp +2609 -0
- data/vendor/tracemonkey/xpconnect/src/qsgen.py +1487 -0
- data/vendor/tracemonkey/xpconnect/src/xpc.msg +217 -0
- data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.cpp +148 -0
- data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.h +56 -0
- data/vendor/tracemonkey/xpconnect/src/xpccallcontext.cpp +579 -0
- data/vendor/tracemonkey/xpconnect/src/xpccomponents.cpp +4144 -0
- data/vendor/tracemonkey/xpconnect/src/xpccontext.cpp +115 -0
- data/vendor/tracemonkey/xpconnect/src/xpcconvert.cpp +2298 -0
- data/vendor/tracemonkey/xpconnect/src/xpcdebug.cpp +481 -0
- data/vendor/tracemonkey/xpconnect/src/xpcexception.cpp +502 -0
- data/vendor/tracemonkey/xpconnect/src/xpcforwards.h +114 -0
- data/vendor/tracemonkey/xpconnect/src/xpcinlines.h +772 -0
- data/vendor/tracemonkey/xpconnect/src/xpcjsid.cpp +1025 -0
- data/vendor/tracemonkey/xpconnect/src/xpcjsruntime.cpp +1342 -0
- data/vendor/tracemonkey/xpconnect/src/xpclog.cpp +128 -0
- data/vendor/tracemonkey/xpconnect/src/xpclog.h +101 -0
- data/vendor/tracemonkey/xpconnect/src/xpcmaps.cpp +761 -0
- data/vendor/tracemonkey/xpconnect/src/xpcmaps.h +713 -0
- data/vendor/tracemonkey/xpconnect/src/xpcmodule.cpp +136 -0
- data/vendor/tracemonkey/xpconnect/src/xpcprivate.h +4138 -0
- data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.cpp +1128 -0
- data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.h +480 -0
- data/vendor/tracemonkey/xpconnect/src/xpcruntimesvc.cpp +179 -0
- data/vendor/tracemonkey/xpconnect/src/xpcstack.cpp +342 -0
- data/vendor/tracemonkey/xpconnect/src/xpcstring.cpp +139 -0
- data/vendor/tracemonkey/xpconnect/src/xpcthreadcontext.cpp +599 -0
- data/vendor/tracemonkey/xpconnect/src/xpcthrower.cpp +399 -0
- data/vendor/tracemonkey/xpconnect/src/xpcvariant.cpp +850 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappedjs.cpp +670 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappedjsclass.cpp +2015 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednative.cpp +3482 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeinfo.cpp +945 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednativejsops.cpp +2003 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeproto.cpp +302 -0
- data/vendor/tracemonkey/xpconnect/src/xpcwrappednativescope.cpp +991 -0
- data/vendor/tracemonkey/xpconnect/tests/Makefile.in +75 -0
- data/vendor/tracemonkey/xpconnect/tests/TestXPC.cpp +785 -0
- data/vendor/tracemonkey/xpconnect/tests/chrome/Makefile.in +51 -0
- data/vendor/tracemonkey/xpconnect/tests/chrome/test_bug500931.xul +43 -0
- data/vendor/tracemonkey/xpconnect/tests/components/Makefile.in +85 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_array.cpp +388 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_attributes.cpp +305 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_calljs.cpp +135 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_child.cpp +225 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_const.cpp +76 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_domstring.cpp +118 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_echo.cpp +616 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_in.cpp +204 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_inout.cpp +171 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_module.cpp +77 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_multiple.cpp +554 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_noisy.cpp +154 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_out.cpp +335 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_overloaded.cpp +250 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_private.h +192 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_string.cpp +185 -0
- data/vendor/tracemonkey/xpconnect/tests/components/xpctest_variant.cpp +355 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/StdAfx.cpp +12 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/StdAfx.h +28 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCDispUtilities.h +28 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.cpp +86 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.def +9 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.dsp +318 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.dsw +29 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.idl +454 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.rc +145 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.cpp +44 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.h +56 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.cpp +221 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.h +53 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.cpp +699 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.h +138 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.cpp +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.h +41 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.cpp +256 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.h +88 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.cpp +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.h +43 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.cpp +29 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.h +45 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.cpp +177 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.h +50 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.rgs +23 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/resource.h +36 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Arrays/XPCIDispatchArrayTests.js +54 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Attributes/XPCIDispatchAttributeTests.js +150 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/General/XPCIDispatchInstantiations.js +122 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/General/XPCStress.js +58 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Methods/XPCIDispatchMethodTests.js +376 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/shell.js +377 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedJS/General/XPCIDispatchTestWrappedJS.js +76 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedJS/shell.js +377 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/exectests.cmd +1 -0
- data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/jsDriver.pl +1288 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/Makefile.in +61 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest.idl +312 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest2.idl +51 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_attributes.idl +67 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_calljs.idl +59 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_const.idl +61 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_domstring.idl +59 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_in.idl +88 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_inout.idl +86 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_multiple.idl +77 -0
- data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_out.idl +142 -0
- data/vendor/tracemonkey/xpconnect/tests/js/checkid.js +82 -0
- data/vendor/tracemonkey/xpconnect/tests/js/evaluate.js +311 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions-2.js +153 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions-3.js +194 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions-4.js +297 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions-5.js +343 -0
- data/vendor/tracemonkey/xpconnect/tests/js/exceptions.js +230 -0
- data/vendor/tracemonkey/xpconnect/tests/js/javascript.js +96 -0
- data/vendor/tracemonkey/xpconnect/tests/js/multiple-2.js +151 -0
- data/vendor/tracemonkey/xpconnect/tests/js/multiple-3.js +148 -0
- data/vendor/tracemonkey/xpconnect/tests/js/multiple-4.js +152 -0
- data/vendor/tracemonkey/xpconnect/tests/js/multiple.js +137 -0
- data/vendor/tracemonkey/xpconnect/tests/js/notscriptable.js +104 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/simpletest.js +36 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/speed.js +60 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/testxpc.js +464 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/threads.js +74 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/try.js +27 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_array.js +308 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_callcontext.js +68 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_echo.js +636 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_and_sort.js +28 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_constants.js +15 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_create.js +200 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_exceptions.js +167 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_ids.js +135 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_observer.js +36 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_overloaded.js +14 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_primitives.js +141 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_propertybag.js +36 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_variant.js +339 -0
- data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_variant_array.js +30 -0
- data/vendor/tracemonkey/xpconnect/tests/js/readonlyattributes.js +74 -0
- data/vendor/tracemonkey/xpconnect/tests/js/readwriteattributes.js +101 -0
- data/vendor/tracemonkey/xpconnect/tests/js/scriptable.js +120 -0
- data/vendor/tracemonkey/xpconnect/tests/js/testin.js +203 -0
- data/vendor/tracemonkey/xpconnect/tests/js/xpcfun.js +234 -0
- data/vendor/tracemonkey/xpconnect/tests/js/xpctest_primitives.js +200 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/Makefile.in +66 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/bug500931_helper.html +7 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/inner.html +7 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug361111.xul +29 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug384632.html +32 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug390488.html +65 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug393269.html +46 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug396851.html +43 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug428021.html +41 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug446584.html +49 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug448587.html +31 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug462428.html +42 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug478438.html +66 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484107.html +100 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484459.html +36 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug500691.html +28 -0
- data/vendor/tracemonkey/xpconnect/tests/mochitest/test_wrappers.html +116 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/bogus_element_type.jsm +1 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/bogus_exports_type.jsm +1 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/bug451678_subscript.js +2 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/component_import.js +144 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/recursive_importA.jsm +44 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/recursive_importB.jsm +45 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/syntax_error.jsm +1 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_bogus_files.js +88 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_bug408412.js +51 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_bug451678.js +52 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_bug_442086.js +68 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_import.js +127 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_js_weak_references.js +63 -0
- data/vendor/tracemonkey/xpconnect/tests/unit/test_recursive_import.js +62 -0
- data/vendor/tracemonkey/xpconnect/tools/Makefile.in +49 -0
- data/vendor/tracemonkey/xpconnect/tools/idl/Makefile.in +53 -0
- data/vendor/tracemonkey/xpconnect/tools/idl/nsIXPCToolsCompiler.idl +60 -0
- data/vendor/tracemonkey/xpconnect/tools/idl/nsIXPCToolsProfiler.idl +57 -0
- data/vendor/tracemonkey/xpconnect/tools/js/CompileJSFiles.js +28 -0
- data/vendor/tracemonkey/xpconnect/tools/js/ListJSFiles.js +18 -0
- data/vendor/tracemonkey/xpconnect/tools/src/Makefile.in +76 -0
- data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsCompiler.cpp +161 -0
- data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsModule.cpp +65 -0
- data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsProfiler.cpp +370 -0
- data/vendor/tracemonkey/xpconnect/tools/src/xpctools_private.h +236 -0
- metadata +782 -107
- data/test/johnson/nodes/export_test.rb +0 -9
- data/test/johnson/nodes/import_test.rb +0 -13
- data/test/johnson/version_test.rb +0 -13
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4; -*-
|
|
2
|
+
* vim: set ts=8 sw=4 et tw=99:
|
|
3
|
+
*
|
|
4
|
+
* ***** BEGIN LICENSE BLOCK *****
|
|
5
|
+
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
6
|
+
*
|
|
7
|
+
* The contents of this file are subject to the Mozilla Public License Version
|
|
8
|
+
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
9
|
+
* the License. You may obtain a copy of the License at
|
|
10
|
+
* http://www.mozilla.org/MPL/
|
|
11
|
+
*
|
|
12
|
+
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
13
|
+
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
14
|
+
* for the specific language governing rights and limitations under the
|
|
15
|
+
* License.
|
|
16
|
+
*
|
|
17
|
+
* The Original Code is Mozilla SpiderMonkey JavaScript 1.9 code, released
|
|
18
|
+
* May 28, 2008.
|
|
19
|
+
*
|
|
20
|
+
* The Initial Developer of the Original Code is
|
|
21
|
+
* Andreas Gal <gal@mozilla.com>
|
|
22
|
+
*
|
|
23
|
+
* Contributor(s):
|
|
24
|
+
* Brendan Eich <brendan@mozilla.org>
|
|
25
|
+
* Mike Shaver <shaver@mozilla.org>
|
|
26
|
+
* David Anderson <danderson@mozilla.com>
|
|
27
|
+
*
|
|
28
|
+
* Alternatively, the contents of this file may be used under the terms of
|
|
29
|
+
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
|
30
|
+
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
31
|
+
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
32
|
+
* of those above. If you wish to allow use of your version of this file only
|
|
33
|
+
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
34
|
+
* use your version of this file under the terms of the MPL, indicate your
|
|
35
|
+
* decision by deleting the provisions above and replace them with the notice
|
|
36
|
+
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
37
|
+
* the provisions above, a recipient may use your version of this file under
|
|
38
|
+
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
39
|
+
*
|
|
40
|
+
* ***** END LICENSE BLOCK ***** */
|
|
41
|
+
|
|
42
|
+
#include "jsstddef.h"
|
|
43
|
+
#include <math.h>
|
|
44
|
+
|
|
45
|
+
#include "jsapi.h"
|
|
46
|
+
#include "jsarray.h"
|
|
47
|
+
#include "jsbool.h"
|
|
48
|
+
#include "jscntxt.h"
|
|
49
|
+
#include "jsgc.h"
|
|
50
|
+
#include "jsiter.h"
|
|
51
|
+
#include "jslibmath.h"
|
|
52
|
+
#include "jsmath.h"
|
|
53
|
+
#include "jsnum.h"
|
|
54
|
+
#include "prmjtime.h"
|
|
55
|
+
#include "jsdate.h"
|
|
56
|
+
#include "jsscope.h"
|
|
57
|
+
#include "jsstr.h"
|
|
58
|
+
#include "jsbuiltins.h"
|
|
59
|
+
#include "jstracer.h"
|
|
60
|
+
|
|
61
|
+
using namespace avmplus;
|
|
62
|
+
using namespace nanojit;
|
|
63
|
+
|
|
64
|
+
extern jsdouble js_NaN;
|
|
65
|
+
|
|
66
|
+
JS_FRIEND_API(void)
|
|
67
|
+
js_SetTraceableNativeFailed(JSContext *cx)
|
|
68
|
+
{
|
|
69
|
+
js_SetBuiltinError(cx);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/*
|
|
73
|
+
* NB: bool FASTCALL is not compatible with Nanojit's calling convention usage.
|
|
74
|
+
* Do not use bool FASTCALL, use JSBool only!
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
jsdouble FASTCALL
|
|
78
|
+
js_dmod(jsdouble a, jsdouble b)
|
|
79
|
+
{
|
|
80
|
+
if (b == 0.0) {
|
|
81
|
+
jsdpun u;
|
|
82
|
+
u.s.hi = JSDOUBLE_HI32_EXPMASK | JSDOUBLE_HI32_MANTMASK;
|
|
83
|
+
u.s.lo = 0xffffffff;
|
|
84
|
+
return u.d;
|
|
85
|
+
}
|
|
86
|
+
jsdouble r;
|
|
87
|
+
#ifdef XP_WIN
|
|
88
|
+
/* Workaround MS fmod bug where 42 % (1/0) => NaN, not 42. */
|
|
89
|
+
if (JSDOUBLE_IS_FINITE(a) && JSDOUBLE_IS_INFINITE(b))
|
|
90
|
+
r = a;
|
|
91
|
+
else
|
|
92
|
+
#endif
|
|
93
|
+
r = fmod(a, b);
|
|
94
|
+
return r;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
int32 FASTCALL
|
|
98
|
+
js_imod(int32 a, int32 b)
|
|
99
|
+
{
|
|
100
|
+
if (a < 0 || b <= 0)
|
|
101
|
+
return -1;
|
|
102
|
+
int r = a % b;
|
|
103
|
+
return r;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* The following boxing/unboxing primitives we can't emit inline because
|
|
107
|
+
they either interact with the GC and depend on Spidermonkey's 32-bit
|
|
108
|
+
integer representation. */
|
|
109
|
+
|
|
110
|
+
jsval FASTCALL
|
|
111
|
+
js_BoxDouble(JSContext* cx, jsdouble d)
|
|
112
|
+
{
|
|
113
|
+
int32 i;
|
|
114
|
+
if (JSDOUBLE_IS_INT(d, i) && INT_FITS_IN_JSVAL(i))
|
|
115
|
+
return INT_TO_JSVAL(i);
|
|
116
|
+
JS_ASSERT(JS_ON_TRACE(cx));
|
|
117
|
+
jsval v; /* not rooted but ok here because we know GC won't run */
|
|
118
|
+
if (!js_NewDoubleInRootedValue(cx, d, &v))
|
|
119
|
+
return JSVAL_ERROR_COOKIE;
|
|
120
|
+
return v;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
jsval FASTCALL
|
|
124
|
+
js_BoxInt32(JSContext* cx, int32 i)
|
|
125
|
+
{
|
|
126
|
+
if (JS_LIKELY(INT_FITS_IN_JSVAL(i)))
|
|
127
|
+
return INT_TO_JSVAL(i);
|
|
128
|
+
JS_ASSERT(JS_ON_TRACE(cx));
|
|
129
|
+
jsval v; /* not rooted but ok here because we know GC won't run */
|
|
130
|
+
jsdouble d = (jsdouble)i;
|
|
131
|
+
if (!js_NewDoubleInRootedValue(cx, d, &v))
|
|
132
|
+
return JSVAL_ERROR_COOKIE;
|
|
133
|
+
return v;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
jsdouble FASTCALL
|
|
137
|
+
js_UnboxDouble(jsval v)
|
|
138
|
+
{
|
|
139
|
+
if (JS_LIKELY(JSVAL_IS_INT(v)))
|
|
140
|
+
return (jsdouble)JSVAL_TO_INT(v);
|
|
141
|
+
return *JSVAL_TO_DOUBLE(v);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
int32 FASTCALL
|
|
145
|
+
js_UnboxInt32(jsval v)
|
|
146
|
+
{
|
|
147
|
+
if (JS_LIKELY(JSVAL_IS_INT(v)))
|
|
148
|
+
return JSVAL_TO_INT(v);
|
|
149
|
+
return js_DoubleToECMAInt32(*JSVAL_TO_DOUBLE(v));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
int32 FASTCALL
|
|
153
|
+
js_DoubleToInt32(jsdouble d)
|
|
154
|
+
{
|
|
155
|
+
return js_DoubleToECMAInt32(d);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
uint32 FASTCALL
|
|
159
|
+
js_DoubleToUint32(jsdouble d)
|
|
160
|
+
{
|
|
161
|
+
return js_DoubleToECMAUint32(d);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
jsdouble FASTCALL
|
|
165
|
+
js_StringToNumber(JSContext* cx, JSString* str)
|
|
166
|
+
{
|
|
167
|
+
const jschar* bp;
|
|
168
|
+
const jschar* end;
|
|
169
|
+
const jschar* ep;
|
|
170
|
+
jsdouble d;
|
|
171
|
+
|
|
172
|
+
JSSTRING_CHARS_AND_END(str, bp, end);
|
|
173
|
+
if ((!js_strtod(cx, bp, end, &ep, &d) ||
|
|
174
|
+
js_SkipWhiteSpace(ep, end) != end) &&
|
|
175
|
+
(!js_strtointeger(cx, bp, end, &ep, 0, &d) ||
|
|
176
|
+
js_SkipWhiteSpace(ep, end) != end)) {
|
|
177
|
+
return js_NaN;
|
|
178
|
+
}
|
|
179
|
+
return d;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
int32 FASTCALL
|
|
183
|
+
js_StringToInt32(JSContext* cx, JSString* str)
|
|
184
|
+
{
|
|
185
|
+
const jschar* bp;
|
|
186
|
+
const jschar* end;
|
|
187
|
+
const jschar* ep;
|
|
188
|
+
jsdouble d;
|
|
189
|
+
|
|
190
|
+
JSSTRING_CHARS_AND_END(str, bp, end);
|
|
191
|
+
if ((!js_strtod(cx, bp, end, &ep, &d) ||
|
|
192
|
+
js_SkipWhiteSpace(ep, end) != end) &&
|
|
193
|
+
(!js_strtointeger(cx, bp, end, &ep, 0, &d) ||
|
|
194
|
+
js_SkipWhiteSpace(ep, end) != end)) {
|
|
195
|
+
return 0;
|
|
196
|
+
}
|
|
197
|
+
return js_DoubleToECMAInt32(d);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
SideExit* FASTCALL
|
|
201
|
+
js_CallTree(InterpState* state, Fragment* f)
|
|
202
|
+
{
|
|
203
|
+
union { NIns *code; GuardRecord* (FASTCALL *func)(InterpState*, Fragment*); } u;
|
|
204
|
+
|
|
205
|
+
u.code = f->code();
|
|
206
|
+
JS_ASSERT(u.code);
|
|
207
|
+
|
|
208
|
+
GuardRecord* rec;
|
|
209
|
+
#if defined(JS_NO_FASTCALL) && defined(NANOJIT_IA32)
|
|
210
|
+
SIMULATE_FASTCALL(rec, state, NULL, u.func);
|
|
211
|
+
#else
|
|
212
|
+
rec = u.func(state, NULL);
|
|
213
|
+
#endif
|
|
214
|
+
VMSideExit* lr = (VMSideExit*)rec->exit;
|
|
215
|
+
|
|
216
|
+
if (lr->exitType == NESTED_EXIT) {
|
|
217
|
+
/* This only occurs once a tree call guard mismatches and we unwind the tree call stack.
|
|
218
|
+
We store the first (innermost) tree call guard in state and we will try to grow
|
|
219
|
+
the outer tree the failing call was in starting at that guard. */
|
|
220
|
+
if (!state->lastTreeCallGuard) {
|
|
221
|
+
state->lastTreeCallGuard = lr;
|
|
222
|
+
FrameInfo** rp = (FrameInfo**)state->rp;
|
|
223
|
+
state->rpAtLastTreeCall = rp + lr->calldepth;
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
/* If the tree exits on a regular (non-nested) guard, keep updating lastTreeExitGuard
|
|
227
|
+
with that guard. If we mismatch on a tree call guard, this will contain the last
|
|
228
|
+
non-nested guard we encountered, which is the innermost loop or branch guard. */
|
|
229
|
+
state->lastTreeExitGuard = lr;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return lr;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
JSBool FASTCALL
|
|
236
|
+
js_AddProperty(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
|
|
237
|
+
{
|
|
238
|
+
JS_ASSERT(OBJ_IS_NATIVE(obj));
|
|
239
|
+
JS_ASSERT(SPROP_HAS_STUB_SETTER(sprop));
|
|
240
|
+
|
|
241
|
+
JS_LOCK_OBJ(cx, obj);
|
|
242
|
+
|
|
243
|
+
JSScope* scope = OBJ_SCOPE(obj);
|
|
244
|
+
uint32 slot;
|
|
245
|
+
if (scope->object == obj) {
|
|
246
|
+
JS_ASSERT(!SCOPE_HAS_PROPERTY(scope, sprop));
|
|
247
|
+
} else {
|
|
248
|
+
scope = js_GetMutableScope(cx, obj);
|
|
249
|
+
if (!scope)
|
|
250
|
+
goto exit_trace;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
slot = sprop->slot;
|
|
254
|
+
if (!scope->table && sprop->parent == scope->lastProp && slot == scope->freeslot) {
|
|
255
|
+
if (slot < STOBJ_NSLOTS(obj) && !OBJ_GET_CLASS(cx, obj)->reserveSlots) {
|
|
256
|
+
JS_ASSERT(JSVAL_IS_VOID(STOBJ_GET_SLOT(obj, scope->freeslot)));
|
|
257
|
+
++scope->freeslot;
|
|
258
|
+
} else {
|
|
259
|
+
if (!js_AllocSlot(cx, obj, &slot))
|
|
260
|
+
goto exit_trace;
|
|
261
|
+
|
|
262
|
+
if (slot != sprop->slot) {
|
|
263
|
+
js_FreeSlot(cx, obj, slot);
|
|
264
|
+
goto exit_trace;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
js_ExtendScopeShape(cx, scope, sprop);
|
|
269
|
+
++scope->entryCount;
|
|
270
|
+
scope->lastProp = sprop;
|
|
271
|
+
} else {
|
|
272
|
+
JSScopeProperty *sprop2 = js_AddScopeProperty(cx, scope, sprop->id,
|
|
273
|
+
sprop->getter,
|
|
274
|
+
sprop->setter,
|
|
275
|
+
SPROP_INVALID_SLOT,
|
|
276
|
+
sprop->attrs,
|
|
277
|
+
sprop->flags,
|
|
278
|
+
sprop->shortid);
|
|
279
|
+
if (sprop2 != sprop)
|
|
280
|
+
goto exit_trace;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (js_IsPropertyCacheDisabled(cx))
|
|
284
|
+
goto exit_trace;
|
|
285
|
+
|
|
286
|
+
JS_UNLOCK_SCOPE(cx, scope);
|
|
287
|
+
return JS_TRUE;
|
|
288
|
+
|
|
289
|
+
exit_trace:
|
|
290
|
+
JS_UNLOCK_SCOPE(cx, scope);
|
|
291
|
+
return JS_FALSE;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
static JSBool
|
|
295
|
+
HasProperty(JSContext* cx, JSObject* obj, jsid id)
|
|
296
|
+
{
|
|
297
|
+
// Check that we know how the lookup op will behave.
|
|
298
|
+
for (JSObject* pobj = obj; pobj; pobj = OBJ_GET_PROTO(cx, pobj)) {
|
|
299
|
+
if (pobj->map->ops->lookupProperty != js_LookupProperty)
|
|
300
|
+
return JSVAL_TO_PSEUDO_BOOLEAN(JSVAL_VOID);
|
|
301
|
+
JSClass* clasp = OBJ_GET_CLASS(cx, pobj);
|
|
302
|
+
if (clasp->resolve != JS_ResolveStub && clasp != &js_StringClass)
|
|
303
|
+
return JSVAL_TO_PSEUDO_BOOLEAN(JSVAL_VOID);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
JSObject* obj2;
|
|
307
|
+
JSProperty* prop;
|
|
308
|
+
if (js_LookupPropertyWithFlags(cx, obj, id, JSRESOLVE_QUALIFIED, &obj2, &prop) < 0)
|
|
309
|
+
return JSVAL_TO_PSEUDO_BOOLEAN(JSVAL_VOID);
|
|
310
|
+
if (prop)
|
|
311
|
+
OBJ_DROP_PROPERTY(cx, obj2, prop);
|
|
312
|
+
return prop != NULL;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
JSBool FASTCALL
|
|
316
|
+
js_HasNamedProperty(JSContext* cx, JSObject* obj, JSString* idstr)
|
|
317
|
+
{
|
|
318
|
+
jsid id;
|
|
319
|
+
if (!js_ValueToStringId(cx, STRING_TO_JSVAL(idstr), &id))
|
|
320
|
+
return JSVAL_TO_BOOLEAN(JSVAL_VOID);
|
|
321
|
+
|
|
322
|
+
return HasProperty(cx, obj, id);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
JSBool FASTCALL
|
|
326
|
+
js_HasNamedPropertyInt32(JSContext* cx, JSObject* obj, int32 index)
|
|
327
|
+
{
|
|
328
|
+
jsid id;
|
|
329
|
+
if (!js_Int32ToId(cx, index, &id))
|
|
330
|
+
return JSVAL_TO_BOOLEAN(JSVAL_VOID);
|
|
331
|
+
|
|
332
|
+
return HasProperty(cx, obj, id);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
jsval FASTCALL
|
|
336
|
+
js_CallGetter(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
|
|
337
|
+
{
|
|
338
|
+
JS_ASSERT(!SPROP_HAS_STUB_GETTER(sprop));
|
|
339
|
+
jsval v;
|
|
340
|
+
if (!js_GetSprop(cx, sprop, obj, &v))
|
|
341
|
+
return JSVAL_ERROR_COOKIE;
|
|
342
|
+
return v;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
JSString* FASTCALL
|
|
346
|
+
js_TypeOfObject(JSContext* cx, JSObject* obj)
|
|
347
|
+
{
|
|
348
|
+
JSType type = JS_TypeOfValue(cx, OBJECT_TO_JSVAL(obj));
|
|
349
|
+
return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
JSString* FASTCALL
|
|
353
|
+
js_TypeOfBoolean(JSContext* cx, int32 unboxed)
|
|
354
|
+
{
|
|
355
|
+
/* Watch out for pseudo-booleans. */
|
|
356
|
+
jsval boxed = PSEUDO_BOOLEAN_TO_JSVAL(unboxed);
|
|
357
|
+
JS_ASSERT(JSVAL_IS_VOID(boxed) || JSVAL_IS_BOOLEAN(boxed));
|
|
358
|
+
JSType type = JS_TypeOfValue(cx, boxed);
|
|
359
|
+
return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
jsdouble FASTCALL
|
|
363
|
+
js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed)
|
|
364
|
+
{
|
|
365
|
+
if (unboxed == JSVAL_TO_PSEUDO_BOOLEAN(JSVAL_VOID))
|
|
366
|
+
return js_NaN;
|
|
367
|
+
JS_ASSERT(unboxed == JS_TRUE || unboxed == JS_FALSE);
|
|
368
|
+
return unboxed;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
JSString* FASTCALL
|
|
372
|
+
js_BooleanOrUndefinedToString(JSContext *cx, int32 unboxed)
|
|
373
|
+
{
|
|
374
|
+
JS_ASSERT(uint32(unboxed) <= 2);
|
|
375
|
+
return ATOM_TO_STRING(cx->runtime->atomState.booleanAtoms[unboxed]);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
JSObject* FASTCALL
|
|
379
|
+
js_Arguments(JSContext* cx)
|
|
380
|
+
{
|
|
381
|
+
return NULL;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
JSObject* FASTCALL
|
|
385
|
+
js_NewNullClosure(JSContext* cx, JSObject* funobj, JSObject* proto, JSObject* parent)
|
|
386
|
+
{
|
|
387
|
+
JS_ASSERT(HAS_FUNCTION_CLASS(funobj));
|
|
388
|
+
JS_ASSERT(HAS_FUNCTION_CLASS(proto));
|
|
389
|
+
JS_ASSERT(JS_ON_TRACE(cx));
|
|
390
|
+
|
|
391
|
+
JSFunction *fun = (JSFunction*) funobj;
|
|
392
|
+
JS_ASSERT(GET_FUNCTION_PRIVATE(cx, funobj) == fun);
|
|
393
|
+
|
|
394
|
+
JSObject* closure = (JSObject*) js_NewGCThing(cx, GCX_OBJECT, sizeof(JSObject));
|
|
395
|
+
if (!closure)
|
|
396
|
+
return NULL;
|
|
397
|
+
|
|
398
|
+
js_HoldScope(OBJ_SCOPE(proto));
|
|
399
|
+
closure->map = proto->map;
|
|
400
|
+
closure->classword = jsuword(&js_FunctionClass);
|
|
401
|
+
closure->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
|
|
402
|
+
closure->fslots[JSSLOT_PARENT] = OBJECT_TO_JSVAL(parent);
|
|
403
|
+
closure->fslots[JSSLOT_PRIVATE] = PRIVATE_TO_JSVAL(fun);
|
|
404
|
+
for (unsigned i = JSSLOT_PRIVATE + 1; i != JS_INITIAL_NSLOTS; ++i)
|
|
405
|
+
closure->fslots[i] = JSVAL_VOID;
|
|
406
|
+
closure->dslots = NULL;
|
|
407
|
+
return closure;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
#define BUILTIN1 JS_DEFINE_CALLINFO_1
|
|
411
|
+
#define BUILTIN2 JS_DEFINE_CALLINFO_2
|
|
412
|
+
#define BUILTIN3 JS_DEFINE_CALLINFO_3
|
|
413
|
+
#define BUILTIN4 JS_DEFINE_CALLINFO_4
|
|
414
|
+
#define BUILTIN5 JS_DEFINE_CALLINFO_5
|
|
415
|
+
#include "builtins.tbl"
|
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
2
|
+
* vim: set ts=8 sw=4 et tw=99:
|
|
3
|
+
*
|
|
4
|
+
* ***** BEGIN LICENSE BLOCK *****
|
|
5
|
+
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
6
|
+
*
|
|
7
|
+
* The contents of this file are subject to the Mozilla Public License Version
|
|
8
|
+
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
9
|
+
* the License. You may obtain a copy of the License at
|
|
10
|
+
* http://www.mozilla.org/MPL/
|
|
11
|
+
*
|
|
12
|
+
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
13
|
+
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
14
|
+
* for the specific language governing rights and limitations under the
|
|
15
|
+
* License.
|
|
16
|
+
*
|
|
17
|
+
* The Original Code is Mozilla SpiderMonkey JavaScript 1.9 code, released
|
|
18
|
+
* May 28, 2008.
|
|
19
|
+
*
|
|
20
|
+
* The Initial Developer of the Original Code is
|
|
21
|
+
* Mozilla Corporation.
|
|
22
|
+
*
|
|
23
|
+
* Contributor(s):
|
|
24
|
+
* Jason Orendorff <jorendorff@mozilla.com>
|
|
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
|
+
#ifndef jsbuiltins_h___
|
|
41
|
+
#define jsbuiltins_h___
|
|
42
|
+
|
|
43
|
+
#ifdef JS_TRACER
|
|
44
|
+
|
|
45
|
+
#include "nanojit/nanojit.h"
|
|
46
|
+
#include "jstracer.h"
|
|
47
|
+
|
|
48
|
+
enum JSTNErrType { INFALLIBLE, FAIL_STATUS, FAIL_NULL, FAIL_NEG, FAIL_VOID, FAIL_COOKIE };
|
|
49
|
+
enum { JSTN_ERRTYPE_MASK = 0x07, JSTN_UNBOX_AFTER = 0x08, JSTN_MORE = 0x10,
|
|
50
|
+
JSTN_CONSTRUCTOR = 0x20 };
|
|
51
|
+
|
|
52
|
+
#define JSTN_ERRTYPE(jstn) ((jstn)->flags & JSTN_ERRTYPE_MASK)
|
|
53
|
+
|
|
54
|
+
/*
|
|
55
|
+
* |prefix| and |argtypes| declare what arguments should be passed to the
|
|
56
|
+
* native function. |prefix| can contain the following characters:
|
|
57
|
+
*
|
|
58
|
+
* 'C': a JSContext* argument
|
|
59
|
+
* 'T': |this| as a JSObject* argument (bails if |this| is not an object)
|
|
60
|
+
* 'S': |this| as a JSString* argument (bails if |this| is not a string)
|
|
61
|
+
* 'R': a JSRuntime* argument
|
|
62
|
+
* 'P': the pc as a jsbytecode*
|
|
63
|
+
* 'D': |this| as a number (jsdouble)
|
|
64
|
+
* 'f': the function being called, as a JSObject*
|
|
65
|
+
* 'p': the .prototype of the function, as a JSObject*
|
|
66
|
+
*
|
|
67
|
+
* The corresponding things will get passed as arguments to the builtin in
|
|
68
|
+
* reverse order (so TC means JSContext* as the first arg, and the
|
|
69
|
+
* JSObject* for |this| as the second arg).
|
|
70
|
+
*
|
|
71
|
+
* |argtypes| can contain the following characters:
|
|
72
|
+
* 'd': a number (double) argument
|
|
73
|
+
* 'i': an integer argument
|
|
74
|
+
* 's': a JSString* argument
|
|
75
|
+
* 'o': a JSObject* argument
|
|
76
|
+
* 'r': a JSObject* argument that is of class js_RegExpClass
|
|
77
|
+
* 'f': a JSObject* argument that is of class js_FunctionClass
|
|
78
|
+
* 'v': a jsval argument (boxing whatever value is actually being passed in)
|
|
79
|
+
*/
|
|
80
|
+
struct JSTraceableNative {
|
|
81
|
+
JSFastNative native;
|
|
82
|
+
const nanojit::CallInfo *builtin;
|
|
83
|
+
const char *prefix;
|
|
84
|
+
const char *argtypes;
|
|
85
|
+
uintN flags; /* JSTNErrType | JSTN_UNBOX_AFTER | JSTN_MORE |
|
|
86
|
+
JSTN_CONSTRUCTOR */
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* We use a magic boxed pointer value to represent error conditions that
|
|
91
|
+
* trigger a side exit. The address is so low that it should never be actually
|
|
92
|
+
* in use. If it is, a performance regression occurs, not an actual runtime
|
|
93
|
+
* error.
|
|
94
|
+
*/
|
|
95
|
+
#define JSVAL_ERROR_COOKIE OBJECT_TO_JSVAL((JSObject*)0x10)
|
|
96
|
+
|
|
97
|
+
/* Macros used by JS_DEFINE_CALLINFOn. */
|
|
98
|
+
#ifdef DEBUG
|
|
99
|
+
#define _JS_CI_NAME(op) ,#op
|
|
100
|
+
#else
|
|
101
|
+
#define _JS_CI_NAME(op)
|
|
102
|
+
#endif
|
|
103
|
+
|
|
104
|
+
#define _JS_I32_ARGSIZE nanojit::ARGSIZE_LO
|
|
105
|
+
#define _JS_I32_RETSIZE nanojit::ARGSIZE_LO
|
|
106
|
+
#define _JS_F64_ARGSIZE nanojit::ARGSIZE_F
|
|
107
|
+
#define _JS_F64_RETSIZE nanojit::ARGSIZE_F
|
|
108
|
+
#define _JS_PTR_ARGSIZE nanojit::ARGSIZE_LO
|
|
109
|
+
#if defined AVMPLUS_64BIT
|
|
110
|
+
# define _JS_PTR_RETSIZE nanojit::ARGSIZE_Q
|
|
111
|
+
#else
|
|
112
|
+
# define _JS_PTR_RETSIZE nanojit::ARGSIZE_LO
|
|
113
|
+
#endif
|
|
114
|
+
|
|
115
|
+
/*
|
|
116
|
+
* Supported types for builtin functions.
|
|
117
|
+
*
|
|
118
|
+
* Types with -- for the two string fields are not permitted as argument types
|
|
119
|
+
* in JS_DEFINE_TRCINFO.
|
|
120
|
+
*
|
|
121
|
+
* There are three kinds of traceable-native error handling.
|
|
122
|
+
*
|
|
123
|
+
* - If a traceable native's return type ends with _FAIL, it always runs to
|
|
124
|
+
* completion. It can either succeed or fail with an error or exception;
|
|
125
|
+
* on success, it may or may not stay on trace. There may be side effects
|
|
126
|
+
* in any case. If the call succeeds but bails off trace, we resume in the
|
|
127
|
+
* interpreter at the next opcode.
|
|
128
|
+
*
|
|
129
|
+
* _FAIL builtins indicate failure or bailing off trace by setting bits in
|
|
130
|
+
* cx->interpState->builtinStatus.
|
|
131
|
+
*
|
|
132
|
+
* - If a traceable native's return type contains _RETRY, it can either
|
|
133
|
+
* succeed, fail with a JS exception, or tell the caller to bail off trace
|
|
134
|
+
* and retry the call from the interpreter. The last case happens if the
|
|
135
|
+
* builtin discovers that it can't do its job without examining the JS
|
|
136
|
+
* stack, reentering the interpreter, accessing properties of the global
|
|
137
|
+
* object, etc.
|
|
138
|
+
*
|
|
139
|
+
* The builtin must detect the need to retry before committing any side
|
|
140
|
+
* effects. If a builtin can't do this, it must use a _FAIL return type
|
|
141
|
+
* instead of _RETRY.
|
|
142
|
+
*
|
|
143
|
+
* _RETRY builtins indicate failure with a special return value that
|
|
144
|
+
* depends on the return type:
|
|
145
|
+
*
|
|
146
|
+
* BOOL_RETRY: JSVAL_TO_BOOLEAN(JSVAL_VOID)
|
|
147
|
+
* INT32_RETRY: any negative value
|
|
148
|
+
* STRING_RETRY: NULL
|
|
149
|
+
* OBJECT_RETRY_NULL: NULL
|
|
150
|
+
* JSVAL_RETRY: JSVAL_ERROR_COOKIE
|
|
151
|
+
*
|
|
152
|
+
* _RETRY function calls are faster than _FAIL calls. Each _RETRY call
|
|
153
|
+
* saves two writes to cx->bailExit and a read from state->builtinStatus.
|
|
154
|
+
*
|
|
155
|
+
* - All other traceable natives are infallible (e.g. Date.now, Math.log).
|
|
156
|
+
*
|
|
157
|
+
* Special builtins known to the tracer can have their own idiosyncratic
|
|
158
|
+
* error codes.
|
|
159
|
+
*
|
|
160
|
+
* When a traceable native returns a value indicating failure, we fall off
|
|
161
|
+
* trace. If an exception is pending, it is thrown; otherwise, we assume the
|
|
162
|
+
* builtin had no side effects and retry the current bytecode in the
|
|
163
|
+
* interpreter.
|
|
164
|
+
*
|
|
165
|
+
* So a builtin must not return a value indicating failure after causing side
|
|
166
|
+
* effects (such as reporting an error), without setting an exception pending.
|
|
167
|
+
* The operation would be retried, despite the first attempt's observable
|
|
168
|
+
* effects.
|
|
169
|
+
*/
|
|
170
|
+
#define _JS_CTYPE(ctype, size, pch, ach, flags) (ctype, size, pch, ach, flags)
|
|
171
|
+
#define _JS_JSVAL_CTYPE(size, pch, ach, flags) (jsval, size, pch, ach, (flags | JSTN_UNBOX_AFTER))
|
|
172
|
+
|
|
173
|
+
#define _JS_CTYPE_CONTEXT _JS_CTYPE(JSContext *, _JS_PTR,"C", "", INFALLIBLE)
|
|
174
|
+
#define _JS_CTYPE_RUNTIME _JS_CTYPE(JSRuntime *, _JS_PTR,"R", "", INFALLIBLE)
|
|
175
|
+
#define _JS_CTYPE_THIS _JS_CTYPE(JSObject *, _JS_PTR,"T", "", INFALLIBLE)
|
|
176
|
+
#define _JS_CTYPE_THIS_DOUBLE _JS_CTYPE(jsdouble, _JS_F64,"D", "", INFALLIBLE)
|
|
177
|
+
#define _JS_CTYPE_THIS_STRING _JS_CTYPE(JSString *, _JS_PTR,"S", "", INFALLIBLE)
|
|
178
|
+
#define _JS_CTYPE_CALLEE _JS_CTYPE(JSObject *, _JS_PTR,"f","", INFALLIBLE)
|
|
179
|
+
#define _JS_CTYPE_CALLEE_PROTOTYPE _JS_CTYPE(JSObject *, _JS_PTR,"p","", INFALLIBLE)
|
|
180
|
+
#define _JS_CTYPE_PC _JS_CTYPE(jsbytecode *, _JS_PTR,"P", "", INFALLIBLE)
|
|
181
|
+
#define _JS_CTYPE_JSVALPTR _JS_CTYPE(jsval *, _JS_PTR,"P", "", INFALLIBLE)
|
|
182
|
+
#define _JS_CTYPE_JSVAL _JS_JSVAL_CTYPE( _JS_PTR, "","v", INFALLIBLE)
|
|
183
|
+
#define _JS_CTYPE_JSVAL_RETRY _JS_JSVAL_CTYPE( _JS_PTR, --, --, FAIL_COOKIE)
|
|
184
|
+
#define _JS_CTYPE_JSVAL_FAIL _JS_JSVAL_CTYPE( _JS_PTR, --, --, FAIL_STATUS)
|
|
185
|
+
#define _JS_CTYPE_BOOL _JS_CTYPE(JSBool, _JS_I32, "","i", INFALLIBLE)
|
|
186
|
+
#define _JS_CTYPE_BOOL_RETRY _JS_CTYPE(JSBool, _JS_I32, --, --, FAIL_VOID)
|
|
187
|
+
#define _JS_CTYPE_BOOL_FAIL _JS_CTYPE(JSBool, _JS_I32, --, --, FAIL_STATUS)
|
|
188
|
+
#define _JS_CTYPE_INT32 _JS_CTYPE(int32, _JS_I32, "","i", INFALLIBLE)
|
|
189
|
+
#define _JS_CTYPE_INT32_RETRY _JS_CTYPE(int32, _JS_I32, --, --, FAIL_NEG)
|
|
190
|
+
#define _JS_CTYPE_INT32_FAIL _JS_CTYPE(int32, _JS_I32, --, --, FAIL_STATUS)
|
|
191
|
+
#define _JS_CTYPE_UINT32 _JS_CTYPE(uint32, _JS_I32, "","i", INFALLIBLE)
|
|
192
|
+
#define _JS_CTYPE_UINT32_RETRY _JS_CTYPE(uint32, _JS_I32, --, --, FAIL_NEG)
|
|
193
|
+
#define _JS_CTYPE_UINT32_FAIL _JS_CTYPE(uint32, _JS_I32, --, --, FAIL_STATUS)
|
|
194
|
+
#define _JS_CTYPE_DOUBLE _JS_CTYPE(jsdouble, _JS_F64, "","d", INFALLIBLE)
|
|
195
|
+
#define _JS_CTYPE_DOUBLE_FAIL _JS_CTYPE(jsdouble, _JS_F64, --, --, FAIL_STATUS)
|
|
196
|
+
#define _JS_CTYPE_STRING _JS_CTYPE(JSString *, _JS_PTR, "","s", INFALLIBLE)
|
|
197
|
+
#define _JS_CTYPE_STRING_RETRY _JS_CTYPE(JSString *, _JS_PTR, --, --, FAIL_NULL)
|
|
198
|
+
#define _JS_CTYPE_STRING_FAIL _JS_CTYPE(JSString *, _JS_PTR, --, --, FAIL_STATUS)
|
|
199
|
+
#define _JS_CTYPE_OBJECT _JS_CTYPE(JSObject *, _JS_PTR, "","o", INFALLIBLE)
|
|
200
|
+
#define _JS_CTYPE_OBJECT_RETRY _JS_CTYPE(JSObject *, _JS_PTR, --, --, FAIL_NULL)
|
|
201
|
+
#define _JS_CTYPE_OBJECT_FAIL _JS_CTYPE(JSObject *, _JS_PTR, --, --, FAIL_STATUS)
|
|
202
|
+
#define _JS_CTYPE_CONSTRUCTOR_RETRY _JS_CTYPE(JSObject *, _JS_PTR, --, --, FAIL_NULL | \
|
|
203
|
+
JSTN_CONSTRUCTOR)
|
|
204
|
+
#define _JS_CTYPE_REGEXP _JS_CTYPE(JSObject *, _JS_PTR, "","r", INFALLIBLE)
|
|
205
|
+
#define _JS_CTYPE_SCOPEPROP _JS_CTYPE(JSScopeProperty *, _JS_PTR, --, --, INFALLIBLE)
|
|
206
|
+
#define _JS_CTYPE_SIDEEXIT _JS_CTYPE(SideExit *, _JS_PTR, --, --, INFALLIBLE)
|
|
207
|
+
#define _JS_CTYPE_INTERPSTATE _JS_CTYPE(InterpState *, _JS_PTR, --, --, INFALLIBLE)
|
|
208
|
+
#define _JS_CTYPE_FRAGMENT _JS_CTYPE(nanojit::Fragment *, _JS_PTR, --, --, INFALLIBLE)
|
|
209
|
+
#define _JS_CTYPE_CLASS _JS_CTYPE(JSClass *, _JS_PTR, --, --, INFALLIBLE)
|
|
210
|
+
#define _JS_CTYPE_DOUBLEPTR _JS_CTYPE(double *, _JS_PTR, --, --, INFALLIBLE)
|
|
211
|
+
|
|
212
|
+
#define _JS_EXPAND(tokens) tokens
|
|
213
|
+
|
|
214
|
+
#define _JS_CTYPE_TYPE2(t,s,p,a,f) t
|
|
215
|
+
#define _JS_CTYPE_TYPE(tyname) _JS_EXPAND(_JS_CTYPE_TYPE2 _JS_CTYPE_##tyname)
|
|
216
|
+
#define _JS_CTYPE_RETSIZE2(t,s,p,a,f) s##_RETSIZE
|
|
217
|
+
#define _JS_CTYPE_RETSIZE(tyname) _JS_EXPAND(_JS_CTYPE_RETSIZE2 _JS_CTYPE_##tyname)
|
|
218
|
+
#define _JS_CTYPE_ARGSIZE2(t,s,p,a,f) s##_ARGSIZE
|
|
219
|
+
#define _JS_CTYPE_ARGSIZE(tyname) _JS_EXPAND(_JS_CTYPE_ARGSIZE2 _JS_CTYPE_##tyname)
|
|
220
|
+
#define _JS_CTYPE_PCH2(t,s,p,a,f) p
|
|
221
|
+
#define _JS_CTYPE_PCH(tyname) _JS_EXPAND(_JS_CTYPE_PCH2 _JS_CTYPE_##tyname)
|
|
222
|
+
#define _JS_CTYPE_ACH2(t,s,p,a,f) a
|
|
223
|
+
#define _JS_CTYPE_ACH(tyname) _JS_EXPAND(_JS_CTYPE_ACH2 _JS_CTYPE_##tyname)
|
|
224
|
+
#define _JS_CTYPE_FLAGS2(t,s,p,a,f) f
|
|
225
|
+
#define _JS_CTYPE_FLAGS(tyname) _JS_EXPAND(_JS_CTYPE_FLAGS2 _JS_CTYPE_##tyname)
|
|
226
|
+
|
|
227
|
+
#define _JS_static_TN(t) static t
|
|
228
|
+
#define _JS_static_CI static
|
|
229
|
+
#define _JS_extern_TN(t) extern t
|
|
230
|
+
#define _JS_extern_CI
|
|
231
|
+
#define _JS_FRIEND_TN(t) extern JS_FRIEND_API(t)
|
|
232
|
+
#define _JS_FRIEND_CI
|
|
233
|
+
#define _JS_TN_LINKAGE(linkage, t) _JS_##linkage##_TN(t)
|
|
234
|
+
#define _JS_CI_LINKAGE(linkage) _JS_##linkage##_CI
|
|
235
|
+
|
|
236
|
+
#define _JS_CALLINFO(name) name##_ci
|
|
237
|
+
|
|
238
|
+
#if defined(JS_NO_FASTCALL) && defined(NANOJIT_IA32)
|
|
239
|
+
#define _JS_DEFINE_CALLINFO(linkage, name, crtype, cargtypes, argtypes, cse, fold) \
|
|
240
|
+
_JS_TN_LINKAGE(linkage, crtype) name cargtypes; \
|
|
241
|
+
_JS_CI_LINKAGE(linkage) const nanojit::CallInfo _JS_CALLINFO(name) = \
|
|
242
|
+
{ (intptr_t) &name, argtypes, cse, fold, nanojit::ABI_CDECL _JS_CI_NAME(name) };
|
|
243
|
+
#else
|
|
244
|
+
#define _JS_DEFINE_CALLINFO(linkage, name, crtype, cargtypes, argtypes, cse, fold) \
|
|
245
|
+
_JS_TN_LINKAGE(linkage, crtype) FASTCALL name cargtypes; \
|
|
246
|
+
_JS_CI_LINKAGE(linkage) const nanojit::CallInfo _JS_CALLINFO(name) = \
|
|
247
|
+
{ (intptr_t) &name, argtypes, cse, fold, nanojit::ABI_FASTCALL _JS_CI_NAME(name) };
|
|
248
|
+
#endif
|
|
249
|
+
|
|
250
|
+
/*
|
|
251
|
+
* Declare a C function named <op> and a CallInfo struct named <op>_callinfo so the
|
|
252
|
+
* tracer can call it. |linkage| controls the visibility of both the function
|
|
253
|
+
* and the CallInfo global. It can be extern, static, or FRIEND, which
|
|
254
|
+
* specifies JS_FRIEND_API linkage for the function.
|
|
255
|
+
*/
|
|
256
|
+
#define JS_DEFINE_CALLINFO_1(linkage, rt, op, at0, cse, fold) \
|
|
257
|
+
_JS_DEFINE_CALLINFO(linkage, op, _JS_CTYPE_TYPE(rt), (_JS_CTYPE_TYPE(at0)), \
|
|
258
|
+
(_JS_CTYPE_ARGSIZE(at0) << 2) | _JS_CTYPE_RETSIZE(rt), cse, fold)
|
|
259
|
+
#define JS_DEFINE_CALLINFO_2(linkage, rt, op, at0, at1, cse, fold) \
|
|
260
|
+
_JS_DEFINE_CALLINFO(linkage, op, _JS_CTYPE_TYPE(rt), \
|
|
261
|
+
(_JS_CTYPE_TYPE(at0), _JS_CTYPE_TYPE(at1)), \
|
|
262
|
+
(_JS_CTYPE_ARGSIZE(at0) << 4) | (_JS_CTYPE_ARGSIZE(at1) << 2) | \
|
|
263
|
+
_JS_CTYPE_RETSIZE(rt), \
|
|
264
|
+
cse, fold)
|
|
265
|
+
#define JS_DEFINE_CALLINFO_3(linkage, rt, op, at0, at1, at2, cse, fold) \
|
|
266
|
+
_JS_DEFINE_CALLINFO(linkage, op, _JS_CTYPE_TYPE(rt), \
|
|
267
|
+
(_JS_CTYPE_TYPE(at0), _JS_CTYPE_TYPE(at1), _JS_CTYPE_TYPE(at2)), \
|
|
268
|
+
(_JS_CTYPE_ARGSIZE(at0) << 6) | (_JS_CTYPE_ARGSIZE(at1) << 4) | \
|
|
269
|
+
(_JS_CTYPE_ARGSIZE(at2) << 2) | _JS_CTYPE_RETSIZE(rt), \
|
|
270
|
+
cse, fold)
|
|
271
|
+
#define JS_DEFINE_CALLINFO_4(linkage, rt, op, at0, at1, at2, at3, cse, fold) \
|
|
272
|
+
_JS_DEFINE_CALLINFO(linkage, op, _JS_CTYPE_TYPE(rt), \
|
|
273
|
+
(_JS_CTYPE_TYPE(at0), _JS_CTYPE_TYPE(at1), _JS_CTYPE_TYPE(at2), \
|
|
274
|
+
_JS_CTYPE_TYPE(at3)), \
|
|
275
|
+
(_JS_CTYPE_ARGSIZE(at0) << 8) | (_JS_CTYPE_ARGSIZE(at1) << 6) | \
|
|
276
|
+
(_JS_CTYPE_ARGSIZE(at2) << 4) | (_JS_CTYPE_ARGSIZE(at3) << 2) | \
|
|
277
|
+
_JS_CTYPE_RETSIZE(rt), \
|
|
278
|
+
cse, fold)
|
|
279
|
+
#define JS_DEFINE_CALLINFO_5(linkage, rt, op, at0, at1, at2, at3, at4, cse, fold) \
|
|
280
|
+
_JS_DEFINE_CALLINFO(linkage, op, _JS_CTYPE_TYPE(rt), \
|
|
281
|
+
(_JS_CTYPE_TYPE(at0), _JS_CTYPE_TYPE(at1), _JS_CTYPE_TYPE(at2), \
|
|
282
|
+
_JS_CTYPE_TYPE(at3), _JS_CTYPE_TYPE(at4)), \
|
|
283
|
+
(_JS_CTYPE_ARGSIZE(at0) << 10) | (_JS_CTYPE_ARGSIZE(at1) << 8) | \
|
|
284
|
+
(_JS_CTYPE_ARGSIZE(at2) << 6) | (_JS_CTYPE_ARGSIZE(at3) << 4) | \
|
|
285
|
+
(_JS_CTYPE_ARGSIZE(at4) << 2) | _JS_CTYPE_RETSIZE(rt), \
|
|
286
|
+
cse, fold)
|
|
287
|
+
|
|
288
|
+
#define JS_DEFINE_CALLINFO_6(linkage, rt, op, at0, at1, at2, at3, at4, at5, cse, fold) \
|
|
289
|
+
_JS_DEFINE_CALLINFO(linkage, op, _JS_CTYPE_TYPE(rt), \
|
|
290
|
+
(_JS_CTYPE_TYPE(at0), _JS_CTYPE_TYPE(at1), _JS_CTYPE_TYPE(at2), \
|
|
291
|
+
_JS_CTYPE_TYPE(at3), _JS_CTYPE_TYPE(at4), _JS_CTYPE_TYPE(at5)), \
|
|
292
|
+
(_JS_CTYPE_ARGSIZE(at0) << 12) | (_JS_CTYPE_ARGSIZE(at1) << 10) | \
|
|
293
|
+
(_JS_CTYPE_ARGSIZE(at2) << 8) | (_JS_CTYPE_ARGSIZE(at3) << 6) | \
|
|
294
|
+
(_JS_CTYPE_ARGSIZE(at4) << 4) | (_JS_CTYPE_ARGSIZE(at5) << 2) | \
|
|
295
|
+
_JS_CTYPE_RETSIZE(rt), cse, fold)
|
|
296
|
+
|
|
297
|
+
#define JS_DECLARE_CALLINFO(name) extern const nanojit::CallInfo _JS_CALLINFO(name);
|
|
298
|
+
|
|
299
|
+
#define _JS_TN_INIT_HELPER_n(n, args) _JS_TN_INIT_HELPER_##n args
|
|
300
|
+
|
|
301
|
+
#define _JS_TN_INIT_HELPER_1(linkage, rt, op, at0, cse, fold) \
|
|
302
|
+
&_JS_CALLINFO(op), \
|
|
303
|
+
_JS_CTYPE_PCH(at0), \
|
|
304
|
+
_JS_CTYPE_ACH(at0), \
|
|
305
|
+
_JS_CTYPE_FLAGS(rt)
|
|
306
|
+
|
|
307
|
+
#define _JS_TN_INIT_HELPER_2(linkage, rt, op, at0, at1, cse, fold) \
|
|
308
|
+
&_JS_CALLINFO(op), \
|
|
309
|
+
_JS_CTYPE_PCH(at1) _JS_CTYPE_PCH(at0), \
|
|
310
|
+
_JS_CTYPE_ACH(at1) _JS_CTYPE_ACH(at0), \
|
|
311
|
+
_JS_CTYPE_FLAGS(rt)
|
|
312
|
+
|
|
313
|
+
#define _JS_TN_INIT_HELPER_3(linkage, rt, op, at0, at1, at2, cse, fold) \
|
|
314
|
+
&_JS_CALLINFO(op), \
|
|
315
|
+
_JS_CTYPE_PCH(at2) _JS_CTYPE_PCH(at1) _JS_CTYPE_PCH(at0), \
|
|
316
|
+
_JS_CTYPE_ACH(at2) _JS_CTYPE_ACH(at1) _JS_CTYPE_ACH(at0), \
|
|
317
|
+
_JS_CTYPE_FLAGS(rt)
|
|
318
|
+
|
|
319
|
+
#define _JS_TN_INIT_HELPER_4(linkage, rt, op, at0, at1, at2, at3, cse, fold) \
|
|
320
|
+
&_JS_CALLINFO(op), \
|
|
321
|
+
_JS_CTYPE_PCH(at3) _JS_CTYPE_PCH(at2) _JS_CTYPE_PCH(at1) _JS_CTYPE_PCH(at0), \
|
|
322
|
+
_JS_CTYPE_ACH(at3) _JS_CTYPE_ACH(at2) _JS_CTYPE_ACH(at1) _JS_CTYPE_ACH(at0), \
|
|
323
|
+
_JS_CTYPE_FLAGS(rt)
|
|
324
|
+
|
|
325
|
+
#define _JS_TN_INIT_HELPER_5(linkage, rt, op, at0, at1, at2, at3, at4, cse, fold) \
|
|
326
|
+
&_JS_CALLINFO(op), \
|
|
327
|
+
_JS_CTYPE_PCH(at4) _JS_CTYPE_PCH(at3) _JS_CTYPE_PCH(at2) _JS_CTYPE_PCH(at1) \
|
|
328
|
+
_JS_CTYPE_PCH(at0), \
|
|
329
|
+
_JS_CTYPE_ACH(at4) _JS_CTYPE_ACH(at3) _JS_CTYPE_ACH(at2) _JS_CTYPE_ACH(at1) \
|
|
330
|
+
_JS_CTYPE_ACH(at0), \
|
|
331
|
+
_JS_CTYPE_FLAGS(rt)
|
|
332
|
+
|
|
333
|
+
#define _JS_TN_INIT_HELPER_6(linkage, rt, op, at0, at1, at2, at3, at4, at5, cse, fold) \
|
|
334
|
+
&_JS_CALLINFO(op), \
|
|
335
|
+
_JS_CTYPE_PCH(at5) _JS_CTYPE_PCH(at4) _JS_CTYPE_PCH(at3) _JS_CTYPE_PCH(at2) \
|
|
336
|
+
_JS_CTYPE_PCH(at1) _JS_CTYPE_PCH(at0), \
|
|
337
|
+
_JS_CTYPE_ACH(at5) _JS_CTYPE_ACH(at4) _JS_CTYPE_ACH(at3) _JS_CTYPE_ACH(at2) \
|
|
338
|
+
_JS_CTYPE_ACH(at1) _JS_CTYPE_ACH(at0), \
|
|
339
|
+
_JS_CTYPE_FLAGS(rt)
|
|
340
|
+
|
|
341
|
+
#define JS_DEFINE_TRCINFO_1(name, tn0) \
|
|
342
|
+
_JS_DEFINE_CALLINFO_n tn0 \
|
|
343
|
+
JSTraceableNative name##_trcinfo[] = { \
|
|
344
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn0 } \
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
#define JS_DEFINE_TRCINFO_2(name, tn0, tn1) \
|
|
348
|
+
_JS_DEFINE_CALLINFO_n tn0 \
|
|
349
|
+
_JS_DEFINE_CALLINFO_n tn1 \
|
|
350
|
+
JSTraceableNative name##_trcinfo[] = { \
|
|
351
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE }, \
|
|
352
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn1 } \
|
|
353
|
+
};
|
|
354
|
+
|
|
355
|
+
#define JS_DEFINE_TRCINFO_3(name, tn0, tn1, tn2) \
|
|
356
|
+
_JS_DEFINE_CALLINFO_n tn0 \
|
|
357
|
+
_JS_DEFINE_CALLINFO_n tn1 \
|
|
358
|
+
_JS_DEFINE_CALLINFO_n tn2 \
|
|
359
|
+
JSTraceableNative name##_trcinfo[] = { \
|
|
360
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE }, \
|
|
361
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn1 | JSTN_MORE }, \
|
|
362
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn2 } \
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
#define JS_DEFINE_TRCINFO_4(name, tn0, tn1, tn2, tn3) \
|
|
366
|
+
_JS_DEFINE_CALLINFO_n tn0 \
|
|
367
|
+
_JS_DEFINE_CALLINFO_n tn1 \
|
|
368
|
+
_JS_DEFINE_CALLINFO_n tn2 \
|
|
369
|
+
_JS_DEFINE_CALLINFO_n tn3 \
|
|
370
|
+
JSTraceableNative name##_trcinfo[] = { \
|
|
371
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn0 | JSTN_MORE }, \
|
|
372
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn1 | JSTN_MORE }, \
|
|
373
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn2 | JSTN_MORE }, \
|
|
374
|
+
{ (JSFastNative)name, _JS_TN_INIT_HELPER_n tn3 } \
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
#define _JS_DEFINE_CALLINFO_n(n, args) JS_DEFINE_CALLINFO_##n args
|
|
378
|
+
|
|
379
|
+
jsdouble FASTCALL
|
|
380
|
+
js_StringToNumber(JSContext* cx, JSString* str);
|
|
381
|
+
|
|
382
|
+
jsdouble FASTCALL
|
|
383
|
+
js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed);
|
|
384
|
+
|
|
385
|
+
static JS_INLINE JSBool
|
|
386
|
+
js_Int32ToId(JSContext* cx, int32 index, jsid* id)
|
|
387
|
+
{
|
|
388
|
+
if (INT_FITS_IN_JSVAL(index)) {
|
|
389
|
+
*id = INT_TO_JSID(index);
|
|
390
|
+
JS_ASSERT(INT_JSID_TO_JSVAL(*id) == INT_TO_JSVAL(index));
|
|
391
|
+
return JS_TRUE;
|
|
392
|
+
}
|
|
393
|
+
JSString* str = js_NumberToString(cx, index);
|
|
394
|
+
if (!str)
|
|
395
|
+
return JS_FALSE;
|
|
396
|
+
return js_ValueToStringId(cx, STRING_TO_JSVAL(str), id);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/* Extern version of js_SetBuiltinError. */
|
|
400
|
+
extern JS_FRIEND_API(void)
|
|
401
|
+
js_SetTraceableNativeFailed(JSContext *cx);
|
|
402
|
+
|
|
403
|
+
#else
|
|
404
|
+
|
|
405
|
+
#define JS_DEFINE_CALLINFO_1(linkage, rt, op, at0, cse, fold)
|
|
406
|
+
#define JS_DEFINE_CALLINFO_2(linkage, rt, op, at0, at1, cse, fold)
|
|
407
|
+
#define JS_DEFINE_CALLINFO_3(linkage, rt, op, at0, at1, at2, cse, fold)
|
|
408
|
+
#define JS_DEFINE_CALLINFO_4(linkage, rt, op, at0, at1, at2, at3, cse, fold)
|
|
409
|
+
#define JS_DEFINE_CALLINFO_5(linkage, rt, op, at0, at1, at2, at3, at4, cse, fold)
|
|
410
|
+
#define JS_DECLARE_CALLINFO(name)
|
|
411
|
+
#define JS_DEFINE_TRCINFO_1(name, tn0)
|
|
412
|
+
#define JS_DEFINE_TRCINFO_2(name, tn0, tn1)
|
|
413
|
+
#define JS_DEFINE_TRCINFO_3(name, tn0, tn1, tn2)
|
|
414
|
+
#define JS_DEFINE_TRCINFO_4(name, tn0, tn1, tn2, tn3)
|
|
415
|
+
|
|
416
|
+
#endif /* !JS_TRACER */
|
|
417
|
+
|
|
418
|
+
/* Defined in jsobj.cpp. */
|
|
419
|
+
JS_DECLARE_CALLINFO(js_Object_tn)
|
|
420
|
+
JS_DECLARE_CALLINFO(js_NewInstance)
|
|
421
|
+
|
|
422
|
+
/* Defined in jsarray.cpp. */
|
|
423
|
+
JS_DECLARE_CALLINFO(js_Array_dense_setelem)
|
|
424
|
+
JS_DECLARE_CALLINFO(js_NewEmptyArray)
|
|
425
|
+
JS_DECLARE_CALLINFO(js_NewUninitializedArray)
|
|
426
|
+
JS_DECLARE_CALLINFO(js_ArrayCompPush)
|
|
427
|
+
|
|
428
|
+
/* Defined in jsnum.cpp. */
|
|
429
|
+
JS_DECLARE_CALLINFO(js_NumberToString)
|
|
430
|
+
|
|
431
|
+
/* Defined in jsstr.cpp. */
|
|
432
|
+
JS_DECLARE_CALLINFO(js_String_tn)
|
|
433
|
+
JS_DECLARE_CALLINFO(js_CompareStrings)
|
|
434
|
+
JS_DECLARE_CALLINFO(js_ConcatStrings)
|
|
435
|
+
JS_DECLARE_CALLINFO(js_EqualStrings)
|
|
436
|
+
JS_DECLARE_CALLINFO(js_String_getelem)
|
|
437
|
+
JS_DECLARE_CALLINFO(js_String_p_charCodeAt)
|
|
438
|
+
JS_DECLARE_CALLINFO(js_String_p_charCodeAt0)
|
|
439
|
+
JS_DECLARE_CALLINFO(js_String_p_charCodeAt0_int)
|
|
440
|
+
JS_DECLARE_CALLINFO(js_String_p_charCodeAt_int)
|
|
441
|
+
|
|
442
|
+
/* Defined in jsbuiltins.cpp. */
|
|
443
|
+
#define BUILTIN1(linkage, rt, op, at0, cse, fold) JS_DECLARE_CALLINFO(op)
|
|
444
|
+
#define BUILTIN2(linkage, rt, op, at0, at1, cse, fold) JS_DECLARE_CALLINFO(op)
|
|
445
|
+
#define BUILTIN3(linkage, rt, op, at0, at1, at2, cse, fold) JS_DECLARE_CALLINFO(op)
|
|
446
|
+
#define BUILTIN4(linkage, rt, op, at0, at1, at2, at3, cse, fold) JS_DECLARE_CALLINFO(op)
|
|
447
|
+
#define BUILTIN5(linkage, rt, op, at0, at1, at2, at3, at4, cse, fold) JS_DECLARE_CALLINFO(op)
|
|
448
|
+
#include "builtins.tbl"
|
|
449
|
+
#undef BUILTIN
|
|
450
|
+
#undef BUILTIN1
|
|
451
|
+
#undef BUILTIN2
|
|
452
|
+
#undef BUILTIN3
|
|
453
|
+
#undef BUILTIN4
|
|
454
|
+
#undef BUILTIN5
|
|
455
|
+
|
|
456
|
+
#endif /* jsbuiltins_h___ */
|