johnson 2.0.0.pre1 → 2.0.0.pre2
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 +12 -0
- data/Manifest.txt +4 -285
- data/Rakefile +13 -20
- data/ext/tracemonkey/global.cc +4 -1
- data/ext/tracemonkey/js.cc +30 -33
- data/ext/tracemonkey/runtime.cc +96 -6
- data/ext/tracemonkey/split_global.cc +0 -5
- data/ext/tracemonkey/tracemonkey.h +2 -2
- data/lib/johnson.rb +2 -2
- data/lib/johnson/runtime.rb +25 -15
- data/lib/johnson/tracemonkey/runtime.rb +6 -3
- data/vendor/tracemonkey/config/system-headers +1 -3
- data/vendor/tracemonkey/jscntxt.h +5 -2
- data/vendor/tracemonkey/jsdbgapi.cpp +9 -1
- data/vendor/tracemonkey/jsdbgapi.h +4 -0
- data/vendor/tracemonkey/tests/ecma/NativeObjects/browser.js +0 -0
- data/vendor/tracemonkey/tests/ecma/NativeObjects/jstests.list +0 -0
- data/vendor/tracemonkey/tests/ecma_3_1/Object/jstests.list +1 -1
- data/vendor/tracemonkey/tests/js1_3/misc/browser.js +0 -0
- data/vendor/tracemonkey/tests/js1_3/misc/jstests.list +0 -0
- data/vendor/tracemonkey/tests/js1_5/Regress/jstests.list +4 -4
- data/vendor/tracemonkey/tests/js1_5/Scope/jstests.list +1 -1
- data/vendor/tracemonkey/tests/js1_5/decompilation/jstests.list +2 -2
- data/vendor/tracemonkey/tests/js1_7/decompilation/jstests.list +1 -1
- data/vendor/tracemonkey/tests/shell.js +2 -1
- metadata +51 -309
- data/ext/spidermonkey/context.c +0 -116
- data/ext/spidermonkey/context.h +0 -19
- data/ext/spidermonkey/conversions.c +0 -361
- data/ext/spidermonkey/conversions.h +0 -31
- data/ext/spidermonkey/debugger.c +0 -234
- data/ext/spidermonkey/debugger.h +0 -10
- data/ext/spidermonkey/extconf.rb +0 -32
- data/ext/spidermonkey/extensions.c +0 -37
- data/ext/spidermonkey/extensions.h +0 -12
- data/ext/spidermonkey/global.c +0 -40
- data/ext/spidermonkey/global.h +0 -11
- data/ext/spidermonkey/idhash.c +0 -16
- data/ext/spidermonkey/idhash.h +0 -8
- data/ext/spidermonkey/immutable_node.c +0 -1153
- data/ext/spidermonkey/immutable_node.c.erb +0 -523
- data/ext/spidermonkey/immutable_node.h +0 -22
- data/ext/spidermonkey/jroot.h +0 -197
- data/ext/spidermonkey/js_land_proxy.c +0 -620
- data/ext/spidermonkey/js_land_proxy.h +0 -20
- data/ext/spidermonkey/ruby_land_proxy.c +0 -618
- data/ext/spidermonkey/ruby_land_proxy.h +0 -38
- data/ext/spidermonkey/runtime.c +0 -396
- data/ext/spidermonkey/runtime.h +0 -27
- data/ext/spidermonkey/spidermonkey.c +0 -22
- data/ext/spidermonkey/spidermonkey.h +0 -29
- data/lib/johnson/spidermonkey.rb +0 -12
- data/lib/johnson/spidermonkey/context.rb +0 -10
- data/lib/johnson/spidermonkey/debugger.rb +0 -67
- data/lib/johnson/spidermonkey/immutable_node.rb +0 -282
- data/lib/johnson/spidermonkey/js_land_proxy.rb +0 -64
- data/lib/johnson/spidermonkey/mutable_tree_visitor.rb +0 -242
- data/lib/johnson/spidermonkey/ruby_land_proxy.rb +0 -17
- data/lib/johnson/spidermonkey/runtime.rb +0 -74
- data/test/johnson/spidermonkey/context_test.rb +0 -21
- data/test/johnson/spidermonkey/immutable_node_test.rb +0 -34
- data/test/johnson/spidermonkey/js_land_proxy_test.rb +0 -273
- data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +0 -274
- data/test/johnson/spidermonkey/runtime_test.rb +0 -41
- data/vendor/spidermonkey/.cvsignore +0 -9
- data/vendor/spidermonkey/Makefile.in +0 -449
- data/vendor/spidermonkey/Makefile.ref +0 -365
- data/vendor/spidermonkey/README.html +0 -820
- data/vendor/spidermonkey/SpiderMonkey.rsp +0 -12
- data/vendor/spidermonkey/Y.js +0 -19
- data/vendor/spidermonkey/build.mk +0 -43
- data/vendor/spidermonkey/config.mk +0 -192
- data/vendor/spidermonkey/config/AIX4.1.mk +0 -65
- data/vendor/spidermonkey/config/AIX4.2.mk +0 -64
- data/vendor/spidermonkey/config/AIX4.3.mk +0 -65
- data/vendor/spidermonkey/config/Darwin.mk +0 -83
- data/vendor/spidermonkey/config/Darwin1.3.mk +0 -81
- data/vendor/spidermonkey/config/Darwin1.4.mk +0 -41
- data/vendor/spidermonkey/config/Darwin5.2.mk +0 -81
- data/vendor/spidermonkey/config/Darwin5.3.mk +0 -81
- data/vendor/spidermonkey/config/HP-UXB.10.10.mk +0 -77
- data/vendor/spidermonkey/config/HP-UXB.10.20.mk +0 -77
- data/vendor/spidermonkey/config/HP-UXB.11.00.mk +0 -80
- data/vendor/spidermonkey/config/IRIX.mk +0 -87
- data/vendor/spidermonkey/config/IRIX5.3.mk +0 -44
- data/vendor/spidermonkey/config/IRIX6.1.mk +0 -44
- data/vendor/spidermonkey/config/IRIX6.2.mk +0 -44
- data/vendor/spidermonkey/config/IRIX6.3.mk +0 -44
- data/vendor/spidermonkey/config/IRIX6.5.mk +0 -44
- data/vendor/spidermonkey/config/Linux_All.mk +0 -103
- data/vendor/spidermonkey/config/Mac_OS10.0.mk +0 -82
- data/vendor/spidermonkey/config/OSF1V4.0.mk +0 -72
- data/vendor/spidermonkey/config/OSF1V5.0.mk +0 -69
- data/vendor/spidermonkey/config/SunOS4.1.4.mk +0 -101
- data/vendor/spidermonkey/config/SunOS5.10.mk +0 -50
- data/vendor/spidermonkey/config/SunOS5.3.mk +0 -91
- data/vendor/spidermonkey/config/SunOS5.4.mk +0 -92
- data/vendor/spidermonkey/config/SunOS5.5.1.mk +0 -44
- data/vendor/spidermonkey/config/SunOS5.5.mk +0 -87
- data/vendor/spidermonkey/config/SunOS5.6.mk +0 -89
- data/vendor/spidermonkey/config/SunOS5.7.mk +0 -44
- data/vendor/spidermonkey/config/SunOS5.8.mk +0 -44
- data/vendor/spidermonkey/config/SunOS5.9.mk +0 -44
- data/vendor/spidermonkey/config/WINNT4.0.mk +0 -117
- data/vendor/spidermonkey/config/WINNT5.0.mk +0 -117
- data/vendor/spidermonkey/config/WINNT5.1.mk +0 -117
- data/vendor/spidermonkey/config/WINNT5.2.mk +0 -117
- data/vendor/spidermonkey/config/WINNT6.0.mk +0 -117
- data/vendor/spidermonkey/config/dgux.mk +0 -64
- data/vendor/spidermonkey/editline/Makefile.ref +0 -144
- data/vendor/spidermonkey/editline/README +0 -83
- data/vendor/spidermonkey/editline/editline.3 +0 -175
- data/vendor/spidermonkey/editline/editline.c +0 -1369
- data/vendor/spidermonkey/editline/editline.h +0 -135
- data/vendor/spidermonkey/editline/sysunix.c +0 -182
- data/vendor/spidermonkey/editline/unix.h +0 -82
- data/vendor/spidermonkey/fdlibm/.cvsignore +0 -7
- data/vendor/spidermonkey/fdlibm/Makefile.in +0 -127
- data/vendor/spidermonkey/fdlibm/Makefile.ref +0 -192
- data/vendor/spidermonkey/fdlibm/e_acos.c +0 -147
- data/vendor/spidermonkey/fdlibm/e_acosh.c +0 -105
- data/vendor/spidermonkey/fdlibm/e_asin.c +0 -156
- data/vendor/spidermonkey/fdlibm/e_atan2.c +0 -165
- data/vendor/spidermonkey/fdlibm/e_atanh.c +0 -110
- data/vendor/spidermonkey/fdlibm/e_cosh.c +0 -133
- data/vendor/spidermonkey/fdlibm/e_exp.c +0 -202
- data/vendor/spidermonkey/fdlibm/e_fmod.c +0 -184
- data/vendor/spidermonkey/fdlibm/e_gamma.c +0 -71
- data/vendor/spidermonkey/fdlibm/e_gamma_r.c +0 -70
- data/vendor/spidermonkey/fdlibm/e_hypot.c +0 -173
- data/vendor/spidermonkey/fdlibm/e_j0.c +0 -524
- data/vendor/spidermonkey/fdlibm/e_j1.c +0 -523
- data/vendor/spidermonkey/fdlibm/e_jn.c +0 -315
- data/vendor/spidermonkey/fdlibm/e_lgamma.c +0 -71
- data/vendor/spidermonkey/fdlibm/e_lgamma_r.c +0 -347
- data/vendor/spidermonkey/fdlibm/e_log.c +0 -184
- data/vendor/spidermonkey/fdlibm/e_log10.c +0 -134
- data/vendor/spidermonkey/fdlibm/e_pow.c +0 -386
- data/vendor/spidermonkey/fdlibm/e_rem_pio2.c +0 -222
- data/vendor/spidermonkey/fdlibm/e_remainder.c +0 -120
- data/vendor/spidermonkey/fdlibm/e_scalb.c +0 -89
- data/vendor/spidermonkey/fdlibm/e_sinh.c +0 -122
- data/vendor/spidermonkey/fdlibm/e_sqrt.c +0 -497
- data/vendor/spidermonkey/fdlibm/fdlibm.h +0 -273
- data/vendor/spidermonkey/fdlibm/fdlibm.mak +0 -1453
- data/vendor/spidermonkey/fdlibm/fdlibm.mdp +0 -0
- data/vendor/spidermonkey/fdlibm/k_cos.c +0 -135
- data/vendor/spidermonkey/fdlibm/k_rem_pio2.c +0 -354
- data/vendor/spidermonkey/fdlibm/k_sin.c +0 -114
- data/vendor/spidermonkey/fdlibm/k_standard.c +0 -785
- data/vendor/spidermonkey/fdlibm/k_tan.c +0 -170
- data/vendor/spidermonkey/fdlibm/s_asinh.c +0 -101
- data/vendor/spidermonkey/fdlibm/s_atan.c +0 -175
- data/vendor/spidermonkey/fdlibm/s_cbrt.c +0 -133
- data/vendor/spidermonkey/fdlibm/s_ceil.c +0 -120
- data/vendor/spidermonkey/fdlibm/s_copysign.c +0 -72
- data/vendor/spidermonkey/fdlibm/s_cos.c +0 -118
- data/vendor/spidermonkey/fdlibm/s_erf.c +0 -356
- data/vendor/spidermonkey/fdlibm/s_expm1.c +0 -267
- data/vendor/spidermonkey/fdlibm/s_fabs.c +0 -70
- data/vendor/spidermonkey/fdlibm/s_finite.c +0 -71
- data/vendor/spidermonkey/fdlibm/s_floor.c +0 -121
- data/vendor/spidermonkey/fdlibm/s_frexp.c +0 -99
- data/vendor/spidermonkey/fdlibm/s_ilogb.c +0 -85
- data/vendor/spidermonkey/fdlibm/s_isnan.c +0 -74
- data/vendor/spidermonkey/fdlibm/s_ldexp.c +0 -66
- data/vendor/spidermonkey/fdlibm/s_lib_version.c +0 -73
- data/vendor/spidermonkey/fdlibm/s_log1p.c +0 -211
- data/vendor/spidermonkey/fdlibm/s_logb.c +0 -79
- data/vendor/spidermonkey/fdlibm/s_matherr.c +0 -64
- data/vendor/spidermonkey/fdlibm/s_modf.c +0 -132
- data/vendor/spidermonkey/fdlibm/s_nextafter.c +0 -124
- data/vendor/spidermonkey/fdlibm/s_rint.c +0 -131
- data/vendor/spidermonkey/fdlibm/s_scalbn.c +0 -107
- data/vendor/spidermonkey/fdlibm/s_signgam.c +0 -40
- data/vendor/spidermonkey/fdlibm/s_significand.c +0 -68
- data/vendor/spidermonkey/fdlibm/s_sin.c +0 -118
- data/vendor/spidermonkey/fdlibm/s_tan.c +0 -112
- data/vendor/spidermonkey/fdlibm/s_tanh.c +0 -122
- data/vendor/spidermonkey/fdlibm/w_acos.c +0 -78
- data/vendor/spidermonkey/fdlibm/w_acosh.c +0 -78
- data/vendor/spidermonkey/fdlibm/w_asin.c +0 -80
- data/vendor/spidermonkey/fdlibm/w_atan2.c +0 -79
- data/vendor/spidermonkey/fdlibm/w_atanh.c +0 -81
- data/vendor/spidermonkey/fdlibm/w_cosh.c +0 -77
- data/vendor/spidermonkey/fdlibm/w_exp.c +0 -88
- data/vendor/spidermonkey/fdlibm/w_fmod.c +0 -78
- data/vendor/spidermonkey/fdlibm/w_gamma.c +0 -85
- data/vendor/spidermonkey/fdlibm/w_gamma_r.c +0 -81
- data/vendor/spidermonkey/fdlibm/w_hypot.c +0 -78
- data/vendor/spidermonkey/fdlibm/w_j0.c +0 -105
- data/vendor/spidermonkey/fdlibm/w_j1.c +0 -106
- data/vendor/spidermonkey/fdlibm/w_jn.c +0 -128
- data/vendor/spidermonkey/fdlibm/w_lgamma.c +0 -85
- data/vendor/spidermonkey/fdlibm/w_lgamma_r.c +0 -81
- data/vendor/spidermonkey/fdlibm/w_log.c +0 -78
- data/vendor/spidermonkey/fdlibm/w_log10.c +0 -81
- data/vendor/spidermonkey/fdlibm/w_pow.c +0 -99
- data/vendor/spidermonkey/fdlibm/w_remainder.c +0 -77
- data/vendor/spidermonkey/fdlibm/w_scalb.c +0 -95
- data/vendor/spidermonkey/fdlibm/w_sinh.c +0 -77
- data/vendor/spidermonkey/fdlibm/w_sqrt.c +0 -77
- data/vendor/spidermonkey/javascript-trace.d +0 -73
- data/vendor/spidermonkey/js.c +0 -3951
- data/vendor/spidermonkey/js.mdp +0 -0
- data/vendor/spidermonkey/js.msg +0 -308
- data/vendor/spidermonkey/js.pkg +0 -2
- data/vendor/spidermonkey/js3240.rc +0 -79
- data/vendor/spidermonkey/jsOS240.def +0 -654
- data/vendor/spidermonkey/jsapi.c +0 -5836
- data/vendor/spidermonkey/jsapi.h +0 -2624
- data/vendor/spidermonkey/jsarena.c +0 -450
- data/vendor/spidermonkey/jsarena.h +0 -318
- data/vendor/spidermonkey/jsarray.c +0 -2996
- data/vendor/spidermonkey/jsarray.h +0 -127
- data/vendor/spidermonkey/jsatom.c +0 -1045
- data/vendor/spidermonkey/jsatom.h +0 -442
- data/vendor/spidermonkey/jsbit.h +0 -253
- data/vendor/spidermonkey/jsbool.c +0 -176
- data/vendor/spidermonkey/jsbool.h +0 -73
- data/vendor/spidermonkey/jsclist.h +0 -139
- data/vendor/spidermonkey/jscntxt.c +0 -1348
- data/vendor/spidermonkey/jscntxt.h +0 -1120
- data/vendor/spidermonkey/jscompat.h +0 -57
- data/vendor/spidermonkey/jsconfig.h +0 -248
- data/vendor/spidermonkey/jsconfig.mk +0 -181
- data/vendor/spidermonkey/jscpucfg.c +0 -396
- data/vendor/spidermonkey/jscpucfg.h +0 -212
- data/vendor/spidermonkey/jsdate.c +0 -2390
- data/vendor/spidermonkey/jsdate.h +0 -124
- data/vendor/spidermonkey/jsdbgapi.c +0 -1802
- data/vendor/spidermonkey/jsdbgapi.h +0 -464
- data/vendor/spidermonkey/jsdhash.c +0 -868
- data/vendor/spidermonkey/jsdhash.h +0 -592
- data/vendor/spidermonkey/jsdtoa.c +0 -3167
- data/vendor/spidermonkey/jsdtoa.h +0 -130
- data/vendor/spidermonkey/jsdtracef.c +0 -317
- data/vendor/spidermonkey/jsdtracef.h +0 -77
- data/vendor/spidermonkey/jsemit.c +0 -6909
- data/vendor/spidermonkey/jsemit.h +0 -741
- data/vendor/spidermonkey/jsexn.c +0 -1371
- data/vendor/spidermonkey/jsexn.h +0 -96
- data/vendor/spidermonkey/jsfile.c +0 -2736
- data/vendor/spidermonkey/jsfile.h +0 -56
- data/vendor/spidermonkey/jsfile.msg +0 -90
- data/vendor/spidermonkey/jsfun.c +0 -2634
- data/vendor/spidermonkey/jsfun.h +0 -254
- data/vendor/spidermonkey/jsgc.c +0 -3562
- data/vendor/spidermonkey/jsgc.h +0 -403
- data/vendor/spidermonkey/jshash.c +0 -476
- data/vendor/spidermonkey/jshash.h +0 -151
- data/vendor/spidermonkey/jsify.pl +0 -485
- data/vendor/spidermonkey/jsinterp.c +0 -7007
- data/vendor/spidermonkey/jsinterp.h +0 -525
- data/vendor/spidermonkey/jsinvoke.c +0 -43
- data/vendor/spidermonkey/jsiter.c +0 -1067
- data/vendor/spidermonkey/jsiter.h +0 -122
- data/vendor/spidermonkey/jskeyword.tbl +0 -124
- data/vendor/spidermonkey/jskwgen.c +0 -460
- data/vendor/spidermonkey/jslibmath.h +0 -266
- data/vendor/spidermonkey/jslock.c +0 -1309
- data/vendor/spidermonkey/jslock.h +0 -313
- data/vendor/spidermonkey/jslocko.asm +0 -60
- data/vendor/spidermonkey/jslog2.c +0 -94
- data/vendor/spidermonkey/jslong.c +0 -264
- data/vendor/spidermonkey/jslong.h +0 -412
- data/vendor/spidermonkey/jsmath.c +0 -567
- data/vendor/spidermonkey/jsmath.h +0 -57
- data/vendor/spidermonkey/jsnum.c +0 -1239
- data/vendor/spidermonkey/jsnum.h +0 -283
- data/vendor/spidermonkey/jsobj.c +0 -5282
- data/vendor/spidermonkey/jsobj.h +0 -709
- data/vendor/spidermonkey/jsopcode.c +0 -5245
- data/vendor/spidermonkey/jsopcode.h +0 -394
- data/vendor/spidermonkey/jsopcode.tbl +0 -523
- data/vendor/spidermonkey/jsotypes.h +0 -202
- data/vendor/spidermonkey/jsparse.c +0 -6704
- data/vendor/spidermonkey/jsparse.h +0 -511
- data/vendor/spidermonkey/jsprf.c +0 -1264
- data/vendor/spidermonkey/jsprf.h +0 -150
- data/vendor/spidermonkey/jsproto.tbl +0 -128
- data/vendor/spidermonkey/jsprvtd.h +0 -267
- data/vendor/spidermonkey/jspubtd.h +0 -744
- data/vendor/spidermonkey/jsregexp.c +0 -4364
- data/vendor/spidermonkey/jsregexp.h +0 -183
- data/vendor/spidermonkey/jsreops.tbl +0 -145
- data/vendor/spidermonkey/jsscan.c +0 -2012
- data/vendor/spidermonkey/jsscan.h +0 -387
- data/vendor/spidermonkey/jsscope.c +0 -1957
- data/vendor/spidermonkey/jsscope.h +0 -418
- data/vendor/spidermonkey/jsscript.c +0 -1832
- data/vendor/spidermonkey/jsscript.h +0 -287
- data/vendor/spidermonkey/jsshell.msg +0 -50
- data/vendor/spidermonkey/jsstddef.h +0 -83
- data/vendor/spidermonkey/jsstr.c +0 -5005
- data/vendor/spidermonkey/jsstr.h +0 -641
- data/vendor/spidermonkey/jstypes.h +0 -475
- data/vendor/spidermonkey/jsutil.c +0 -345
- data/vendor/spidermonkey/jsutil.h +0 -157
- data/vendor/spidermonkey/jsxdrapi.c +0 -800
- data/vendor/spidermonkey/jsxdrapi.h +0 -218
- data/vendor/spidermonkey/jsxml.c +0 -8476
- data/vendor/spidermonkey/jsxml.h +0 -349
- data/vendor/spidermonkey/lock_SunOS.s +0 -119
- data/vendor/spidermonkey/perfect.js +0 -39
- data/vendor/spidermonkey/plify_jsdhash.sed +0 -36
- data/vendor/spidermonkey/prmjtime.c +0 -846
- data/vendor/spidermonkey/prmjtime.h +0 -103
- data/vendor/spidermonkey/resource.h +0 -15
- data/vendor/spidermonkey/rules.mk +0 -197
- data/vendor/spidermonkey/win32.order +0 -384
@@ -1,274 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), "/../../helper"))
|
2
|
-
|
3
|
-
module Johnson
|
4
|
-
module SpiderMonkey
|
5
|
-
class RubyLandProxyTest < Johnson::TestCase
|
6
|
-
def setup
|
7
|
-
@runtime = Johnson::Runtime.new(Johnson::SpiderMonkey::Runtime)
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_constructing_a_proxy_directly_asplodes
|
11
|
-
assert_raise(Johnson::Error) { Johnson::SpiderMonkey::RubyLandProxy.new }
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_objects_get_wrapped_as_proxies
|
15
|
-
assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, @runtime.evaluate("x = {}"))
|
16
|
-
assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, @runtime.evaluate("new Object()"))
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_proxies_get_unwrapped_when_roundtripping
|
20
|
-
proxy = @runtime.evaluate("x = {}")
|
21
|
-
@runtime["y"] = proxy
|
22
|
-
assert(@runtime.evaluate("x === y"))
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_reponds_to?
|
26
|
-
proxy = @runtime.evaluate("x = {}")
|
27
|
-
assert ! proxy.respond_to?(:foo)
|
28
|
-
assert ! proxy.respond_to?("foo")
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_array_indexable
|
32
|
-
proxy = @runtime.evaluate("var x = [1,2,3]; x")
|
33
|
-
assert_equal(1, proxy[0])
|
34
|
-
assert_equal(1, proxy['0'])
|
35
|
-
|
36
|
-
proxy[0] = 10
|
37
|
-
assert_js_equal(10, 'x[0]')
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_hash_indexable
|
41
|
-
proxy = @runtime.evaluate("var x = { 0: 1, 1: 2, 2: 3 }; x")
|
42
|
-
assert_equal(1, proxy[0])
|
43
|
-
assert_equal(1, proxy['0'])
|
44
|
-
|
45
|
-
proxy[0] = 10
|
46
|
-
assert_js_equal(10, 'x[0]')
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_functions_get_wrapped_as_proxies
|
50
|
-
f = @runtime.evaluate("function() {}")
|
51
|
-
assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, f)
|
52
|
-
assert(f.function?)
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_function?
|
56
|
-
f = @runtime.evaluate("function() {}")
|
57
|
-
assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, f)
|
58
|
-
assert(f.function?)
|
59
|
-
|
60
|
-
f = @runtime.evaluate("new Object()")
|
61
|
-
assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, f)
|
62
|
-
assert(!f.function?)
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_calling_non_functions_complains
|
66
|
-
o = @runtime.evaluate("new Object()")
|
67
|
-
assert_equal(false, o.respond_to?(:call))
|
68
|
-
assert_raise(NoMethodError) { o.call }
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_functions_can_be_called
|
72
|
-
f = @runtime.evaluate("function() { return 42; }")
|
73
|
-
assert_equal(42, f.call)
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_functions_can_be_called_with_args
|
77
|
-
f = @runtime.evaluate("function(x) { return x * 2; }")
|
78
|
-
assert_equal(84, f.call(42))
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_functions_can_be_used_as_procs
|
82
|
-
f = @runtime.evaluate("function(x) { return x * 2; }")
|
83
|
-
a = [1, 2, 3]
|
84
|
-
|
85
|
-
assert_equal([2, 4, 6], a.collect(&f))
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_function_proxies_are_called_with_a_global_this
|
89
|
-
f = @runtime.evaluate("x = 42; function() { return this.x; }")
|
90
|
-
assert_equal(42, f.call)
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_can_be_indexed_by_string
|
94
|
-
proxy = @runtime.evaluate("x = { foo: 42 }")
|
95
|
-
assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, proxy)
|
96
|
-
|
97
|
-
assert_equal(42, proxy["foo"])
|
98
|
-
|
99
|
-
proxy["foo"] = 99
|
100
|
-
proxy["bar"] = 42
|
101
|
-
|
102
|
-
assert_js_equal(99, "x.foo")
|
103
|
-
assert_equal(99, proxy["foo"])
|
104
|
-
assert_equal(42, proxy["bar"])
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_can_be_indexed_by_symbol
|
108
|
-
proxy = @runtime.evaluate("x = { foo: 42 }")
|
109
|
-
assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, proxy)
|
110
|
-
|
111
|
-
assert_equal(42, proxy[:foo])
|
112
|
-
|
113
|
-
proxy[:foo] = 99
|
114
|
-
proxy[:bar] = 42
|
115
|
-
|
116
|
-
assert_js_equal(99, "x.foo")
|
117
|
-
assert_equal(99, proxy[:foo])
|
118
|
-
assert_equal(42, proxy[:bar])
|
119
|
-
end
|
120
|
-
|
121
|
-
def test_multilevel_indexing_works
|
122
|
-
proxy = @runtime.evaluate("x = { foo: { bar: 42 , baz: function() { return 42 } } }")
|
123
|
-
assert_equal(42, proxy["foo"]["bar"])
|
124
|
-
assert_equal(42, proxy["foo"]["baz"].call)
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_respond_to_works
|
128
|
-
proxy = @runtime.evaluate("x = { foo: 42 }")
|
129
|
-
assert(!proxy.respond_to?(:bar))
|
130
|
-
assert(proxy.respond_to?(:foo))
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_respond_to_always_returns_true_for_assignment
|
134
|
-
proxy = @runtime.evaluate("x = {}")
|
135
|
-
assert(proxy.respond_to?(:bar=))
|
136
|
-
end
|
137
|
-
|
138
|
-
def test_accessor
|
139
|
-
proxy = @runtime.evaluate("x = { foo: 42 }")
|
140
|
-
assert_equal(42, proxy.foo)
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_mutator
|
144
|
-
proxy = @runtime.evaluate("x = {}")
|
145
|
-
proxy.foo = 42
|
146
|
-
|
147
|
-
assert_js_equal(42, "x.foo")
|
148
|
-
assert_equal(42, proxy.foo)
|
149
|
-
end
|
150
|
-
|
151
|
-
def test_method_with_no_arguments
|
152
|
-
proxy = @runtime.evaluate("x = { foo: function() { return 42 } }")
|
153
|
-
assert_equal(42, proxy.foo)
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_method_with_one_argument
|
157
|
-
proxy = @runtime.evaluate("f = { f: function(x) { return x * 2 } }")
|
158
|
-
assert_equal(84, proxy.f(42))
|
159
|
-
end
|
160
|
-
|
161
|
-
def test_method_with_multiple_arguments
|
162
|
-
proxy = @runtime.evaluate("x = { add: function(x, y) { return x + y } }")
|
163
|
-
assert_equal(42, proxy.add(40, 2))
|
164
|
-
end
|
165
|
-
|
166
|
-
def test_supports_each_on_arrays
|
167
|
-
proxy = @runtime.evaluate("[1, 2, 3]")
|
168
|
-
values = []
|
169
|
-
|
170
|
-
proxy.each { |n| values << n }
|
171
|
-
assert_equal([1, 2, 3], values)
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_supports_each_on_things_that_arent_arrays
|
175
|
-
proxy = @runtime.evaluate("x = { foo: 'fooval', bar: 'barval' }; x[0] = 42; x")
|
176
|
-
values = {}
|
177
|
-
|
178
|
-
proxy.each { |k, v| values[k] = v }
|
179
|
-
assert_equal({ 'foo' => 'fooval', 'bar' => 'barval', 0 => 42 }, values)
|
180
|
-
end
|
181
|
-
|
182
|
-
def test_each_passes_an_exception
|
183
|
-
proxy = @runtime.evaluate("x = { foo: 'fooval', bar: 'barval' }; x[0] = 42; x")
|
184
|
-
values = {}
|
185
|
-
|
186
|
-
assert_raise(RuntimeError) do
|
187
|
-
proxy.each do |k, v|
|
188
|
-
values[k] = v
|
189
|
-
raise "splat" if values.keys.size == 2
|
190
|
-
end
|
191
|
-
end
|
192
|
-
assert_equal({ 'foo' => 'fooval', 'bar' => 'barval' }, values)
|
193
|
-
end
|
194
|
-
|
195
|
-
def test_is_enumerable
|
196
|
-
proxy = @runtime.evaluate("[1, 2, 3]")
|
197
|
-
assert_kind_of(Enumerable, proxy)
|
198
|
-
|
199
|
-
assert_equal([2, 4, 6], proxy.collect { |n| n * 2 })
|
200
|
-
end
|
201
|
-
|
202
|
-
def test_has_a_length
|
203
|
-
proxy = @runtime.evaluate("[1, 2, 3]")
|
204
|
-
assert_equal(3, proxy.length)
|
205
|
-
end
|
206
|
-
|
207
|
-
def test_length_is_aliased_as_size
|
208
|
-
proxy = @runtime.evaluate("[1, 2, 3]")
|
209
|
-
assert_equal(3, proxy.size)
|
210
|
-
end
|
211
|
-
|
212
|
-
def test_length_for_arrays_ignores_non_numeric_properties
|
213
|
-
proxy = @runtime.evaluate("x = [1, 2, 3]; x['foo'] = 'bar'; x")
|
214
|
-
assert_equal(3, proxy.length)
|
215
|
-
end
|
216
|
-
|
217
|
-
def test_length_for_objects_includes_all_properties
|
218
|
-
proxy = @runtime.evaluate("x = { foo: 'foo', bar: 'bar', 0: 42 }")
|
219
|
-
assert_equal(3, proxy.length)
|
220
|
-
end
|
221
|
-
|
222
|
-
def test_raises_in_js
|
223
|
-
original = RuntimeError.new("an exception")
|
224
|
-
@runtime["foo"] = lambda { raise original }
|
225
|
-
raised = @runtime.evaluate "x = null; try { foo(); } catch(ex) { x = ex; }; x"
|
226
|
-
assert_kind_of RuntimeError, raised
|
227
|
-
assert_equal original, raised
|
228
|
-
assert_equal "an exception", raised.message
|
229
|
-
end
|
230
|
-
|
231
|
-
def test_uncaught_exceptions_have_decent_stack_trace
|
232
|
-
@runtime["foo"] = lambda { raise RuntimeError.new("an exception") }
|
233
|
-
line_number = __LINE__ - 1 # reference to previous line
|
234
|
-
begin
|
235
|
-
@runtime.evaluate "foo()", "myfile", 7
|
236
|
-
rescue RuntimeError => e
|
237
|
-
assert_equal "an exception", e.message
|
238
|
-
first_js_frame = e.stack_deck.detect {|q| q.language == 'JavaScript' }
|
239
|
-
assert_equal "myfile:7", "#{first_js_frame.filename}:#{first_js_frame.lineno}"
|
240
|
-
assert_match %r/#{__FILE__}:#{line_number}\b/, e.stack_deck[0].to_s
|
241
|
-
else
|
242
|
-
flunk "exception was not raised"
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
def test_array_multiple_assignment
|
247
|
-
a = @runtime.evaluate("[1,2,3]")
|
248
|
-
x, y, z = a
|
249
|
-
|
250
|
-
assert_equal(1, x)
|
251
|
-
assert_equal(2, y)
|
252
|
-
assert_equal(3, z)
|
253
|
-
end
|
254
|
-
|
255
|
-
# FIXME: If you uncomment this test, we get this error:
|
256
|
-
#
|
257
|
-
# JS API usage error: the address passed to JS_AddNamedRoot currently holds an
|
258
|
-
# invalid jsval. This is usually caused by a missing call to JS_RemoveRoot.
|
259
|
-
# The root's name is "ruby_land_proxy.c[210]:native_call: proxy_value".
|
260
|
-
# Assertion failure: root_points_to_gcArenaList, at jsgc.c:2618
|
261
|
-
#
|
262
|
-
# WTF?
|
263
|
-
#
|
264
|
-
# -Aaron
|
265
|
-
#
|
266
|
-
#def test_throwing_in_js_goes_to_ruby
|
267
|
-
# func = @runtime.evaluate('function () { throw "foo"; }')
|
268
|
-
# assert_raise(Johnson::Error) {
|
269
|
-
# func.call
|
270
|
-
# }
|
271
|
-
#end
|
272
|
-
end
|
273
|
-
end
|
274
|
-
end
|
@@ -1,41 +0,0 @@
|
|
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
|
-
|
16
|
-
def test_default_is_no_debugger
|
17
|
-
assert_equal false, @runtime.debugger?
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_only_accepts_real_debugger_instance
|
21
|
-
assert_raises(TypeError) {
|
22
|
-
@runtime.debugger = 17
|
23
|
-
}
|
24
|
-
assert_raises(TypeError) {
|
25
|
-
@runtime.debugger = "Yes please!"
|
26
|
-
}
|
27
|
-
assert_raises(TypeError) {
|
28
|
-
@runtime.debugger = Object.new
|
29
|
-
}
|
30
|
-
assert_raises(TypeError) {
|
31
|
-
@runtime.debugger = @runtime
|
32
|
-
}
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_reports_a_debugger_is_registered
|
36
|
-
@runtime.debugger = Johnson::SpiderMonkey::Debugger.new(nil)
|
37
|
-
assert @runtime.debugger?
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,449 +0,0 @@
|
|
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
|
-
|