jbarnette-johnson 1.0.0.200806240111 → 1.0.0.200807291507
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/MANIFEST +1 -0
- data/Rakefile +3 -10
- data/bin/johnson +2 -1
- data/ext/spidermonkey/context.c +3 -4
- data/ext/spidermonkey/context.h +1 -1
- data/ext/spidermonkey/conversions.c +39 -33
- data/ext/spidermonkey/debugger.c +5 -5
- data/ext/spidermonkey/immutable_node.c.erb +11 -11
- data/ext/spidermonkey/jroot.h +4 -4
- data/ext/spidermonkey/js_land_proxy.c +9 -8
- data/ext/spidermonkey/ruby_land_proxy.c +5 -4
- data/ext/spidermonkey/runtime.c +1 -1
- data/johnson.gemspec +36 -0
- data/lib/hoe.rb +0 -7
- data/lib/johnson/cli/options.rb +10 -4
- data/lib/johnson/spidermonkey/runtime.rb +2 -2
- data/lib/johnson/version.rb +4 -2
- data/lib/johnson.rb +1 -0
- data/test/johnson/runtime_test.rb +11 -0
- data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +6 -0
- data/vendor/spidermonkey/.cvsignore +9 -0
- data/vendor/spidermonkey/Makefile.in +462 -0
- data/vendor/spidermonkey/Makefile.ref +364 -0
- data/vendor/spidermonkey/README.html +820 -0
- data/vendor/spidermonkey/SpiderMonkey.rsp +12 -0
- data/vendor/spidermonkey/Y.js +19 -0
- data/vendor/spidermonkey/build.mk +43 -0
- data/vendor/spidermonkey/config/AIX4.1.mk +65 -0
- data/vendor/spidermonkey/config/AIX4.2.mk +64 -0
- data/vendor/spidermonkey/config/AIX4.3.mk +65 -0
- data/vendor/spidermonkey/config/Darwin.mk +83 -0
- data/vendor/spidermonkey/config/Darwin1.3.mk +81 -0
- data/vendor/spidermonkey/config/Darwin1.4.mk +41 -0
- data/vendor/spidermonkey/config/Darwin5.2.mk +81 -0
- data/vendor/spidermonkey/config/Darwin5.3.mk +81 -0
- data/vendor/spidermonkey/config/HP-UXB.10.10.mk +77 -0
- data/vendor/spidermonkey/config/HP-UXB.10.20.mk +77 -0
- data/vendor/spidermonkey/config/HP-UXB.11.00.mk +80 -0
- data/vendor/spidermonkey/config/IRIX.mk +87 -0
- data/vendor/spidermonkey/config/IRIX5.3.mk +44 -0
- data/vendor/spidermonkey/config/IRIX6.1.mk +44 -0
- data/vendor/spidermonkey/config/IRIX6.2.mk +44 -0
- data/vendor/spidermonkey/config/IRIX6.3.mk +44 -0
- data/vendor/spidermonkey/config/IRIX6.5.mk +44 -0
- data/vendor/spidermonkey/config/Linux_All.mk +103 -0
- data/vendor/spidermonkey/config/Mac_OS10.0.mk +82 -0
- data/vendor/spidermonkey/config/OSF1V4.0.mk +72 -0
- data/vendor/spidermonkey/config/OSF1V5.0.mk +69 -0
- data/vendor/spidermonkey/config/SunOS4.1.4.mk +101 -0
- data/vendor/spidermonkey/config/SunOS5.10.mk +50 -0
- data/vendor/spidermonkey/config/SunOS5.3.mk +91 -0
- data/vendor/spidermonkey/config/SunOS5.4.mk +92 -0
- data/vendor/spidermonkey/config/SunOS5.5.1.mk +44 -0
- data/vendor/spidermonkey/config/SunOS5.5.mk +87 -0
- data/vendor/spidermonkey/config/SunOS5.6.mk +89 -0
- data/vendor/spidermonkey/config/SunOS5.7.mk +44 -0
- data/vendor/spidermonkey/config/SunOS5.8.mk +44 -0
- data/vendor/spidermonkey/config/SunOS5.9.mk +44 -0
- data/vendor/spidermonkey/config/WINNT4.0.mk +117 -0
- data/vendor/spidermonkey/config/WINNT5.0.mk +117 -0
- data/vendor/spidermonkey/config/WINNT5.1.mk +117 -0
- data/vendor/spidermonkey/config/WINNT5.2.mk +117 -0
- data/vendor/spidermonkey/config/WINNT6.0.mk +117 -0
- data/vendor/spidermonkey/config/dgux.mk +64 -0
- data/vendor/spidermonkey/config.mk +192 -0
- data/vendor/spidermonkey/editline/Makefile.ref +144 -0
- data/vendor/spidermonkey/editline/README +83 -0
- data/vendor/spidermonkey/editline/editline.3 +175 -0
- data/vendor/spidermonkey/editline/editline.c +1369 -0
- data/vendor/spidermonkey/editline/editline.h +135 -0
- data/vendor/spidermonkey/editline/sysunix.c +182 -0
- data/vendor/spidermonkey/editline/unix.h +82 -0
- data/vendor/spidermonkey/fdlibm/.cvsignore +7 -0
- data/vendor/spidermonkey/fdlibm/Makefile.in +127 -0
- data/vendor/spidermonkey/fdlibm/Makefile.ref +192 -0
- data/vendor/spidermonkey/fdlibm/e_acos.c +147 -0
- data/vendor/spidermonkey/fdlibm/e_acosh.c +105 -0
- data/vendor/spidermonkey/fdlibm/e_asin.c +156 -0
- data/vendor/spidermonkey/fdlibm/e_atan2.c +165 -0
- data/vendor/spidermonkey/fdlibm/e_atanh.c +110 -0
- data/vendor/spidermonkey/fdlibm/e_cosh.c +133 -0
- data/vendor/spidermonkey/fdlibm/e_exp.c +202 -0
- data/vendor/spidermonkey/fdlibm/e_fmod.c +184 -0
- data/vendor/spidermonkey/fdlibm/e_gamma.c +71 -0
- data/vendor/spidermonkey/fdlibm/e_gamma_r.c +70 -0
- data/vendor/spidermonkey/fdlibm/e_hypot.c +173 -0
- data/vendor/spidermonkey/fdlibm/e_j0.c +524 -0
- data/vendor/spidermonkey/fdlibm/e_j1.c +523 -0
- data/vendor/spidermonkey/fdlibm/e_jn.c +315 -0
- data/vendor/spidermonkey/fdlibm/e_lgamma.c +71 -0
- data/vendor/spidermonkey/fdlibm/e_lgamma_r.c +347 -0
- data/vendor/spidermonkey/fdlibm/e_log.c +184 -0
- data/vendor/spidermonkey/fdlibm/e_log10.c +134 -0
- data/vendor/spidermonkey/fdlibm/e_pow.c +386 -0
- data/vendor/spidermonkey/fdlibm/e_rem_pio2.c +222 -0
- data/vendor/spidermonkey/fdlibm/e_remainder.c +120 -0
- data/vendor/spidermonkey/fdlibm/e_scalb.c +89 -0
- data/vendor/spidermonkey/fdlibm/e_sinh.c +122 -0
- data/vendor/spidermonkey/fdlibm/e_sqrt.c +497 -0
- data/vendor/spidermonkey/fdlibm/fdlibm.h +273 -0
- data/vendor/spidermonkey/fdlibm/fdlibm.mak +1453 -0
- data/vendor/spidermonkey/fdlibm/fdlibm.mdp +0 -0
- data/vendor/spidermonkey/fdlibm/k_cos.c +135 -0
- data/vendor/spidermonkey/fdlibm/k_rem_pio2.c +354 -0
- data/vendor/spidermonkey/fdlibm/k_sin.c +114 -0
- data/vendor/spidermonkey/fdlibm/k_standard.c +785 -0
- data/vendor/spidermonkey/fdlibm/k_tan.c +170 -0
- data/vendor/spidermonkey/fdlibm/s_asinh.c +101 -0
- data/vendor/spidermonkey/fdlibm/s_atan.c +175 -0
- data/vendor/spidermonkey/fdlibm/s_cbrt.c +133 -0
- data/vendor/spidermonkey/fdlibm/s_ceil.c +120 -0
- data/vendor/spidermonkey/fdlibm/s_copysign.c +72 -0
- data/vendor/spidermonkey/fdlibm/s_cos.c +118 -0
- data/vendor/spidermonkey/fdlibm/s_erf.c +356 -0
- data/vendor/spidermonkey/fdlibm/s_expm1.c +267 -0
- data/vendor/spidermonkey/fdlibm/s_fabs.c +70 -0
- data/vendor/spidermonkey/fdlibm/s_finite.c +71 -0
- data/vendor/spidermonkey/fdlibm/s_floor.c +121 -0
- data/vendor/spidermonkey/fdlibm/s_frexp.c +99 -0
- data/vendor/spidermonkey/fdlibm/s_ilogb.c +85 -0
- data/vendor/spidermonkey/fdlibm/s_isnan.c +74 -0
- data/vendor/spidermonkey/fdlibm/s_ldexp.c +66 -0
- data/vendor/spidermonkey/fdlibm/s_lib_version.c +73 -0
- data/vendor/spidermonkey/fdlibm/s_log1p.c +211 -0
- data/vendor/spidermonkey/fdlibm/s_logb.c +79 -0
- data/vendor/spidermonkey/fdlibm/s_matherr.c +64 -0
- data/vendor/spidermonkey/fdlibm/s_modf.c +132 -0
- data/vendor/spidermonkey/fdlibm/s_nextafter.c +124 -0
- data/vendor/spidermonkey/fdlibm/s_rint.c +131 -0
- data/vendor/spidermonkey/fdlibm/s_scalbn.c +107 -0
- data/vendor/spidermonkey/fdlibm/s_signgam.c +40 -0
- data/vendor/spidermonkey/fdlibm/s_significand.c +68 -0
- data/vendor/spidermonkey/fdlibm/s_sin.c +118 -0
- data/vendor/spidermonkey/fdlibm/s_tan.c +112 -0
- data/vendor/spidermonkey/fdlibm/s_tanh.c +122 -0
- data/vendor/spidermonkey/fdlibm/w_acos.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_acosh.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_asin.c +80 -0
- data/vendor/spidermonkey/fdlibm/w_atan2.c +79 -0
- data/vendor/spidermonkey/fdlibm/w_atanh.c +81 -0
- data/vendor/spidermonkey/fdlibm/w_cosh.c +77 -0
- data/vendor/spidermonkey/fdlibm/w_exp.c +88 -0
- data/vendor/spidermonkey/fdlibm/w_fmod.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_gamma.c +85 -0
- data/vendor/spidermonkey/fdlibm/w_gamma_r.c +81 -0
- data/vendor/spidermonkey/fdlibm/w_hypot.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_j0.c +105 -0
- data/vendor/spidermonkey/fdlibm/w_j1.c +106 -0
- data/vendor/spidermonkey/fdlibm/w_jn.c +128 -0
- data/vendor/spidermonkey/fdlibm/w_lgamma.c +85 -0
- data/vendor/spidermonkey/fdlibm/w_lgamma_r.c +81 -0
- data/vendor/spidermonkey/fdlibm/w_log.c +78 -0
- data/vendor/spidermonkey/fdlibm/w_log10.c +81 -0
- data/vendor/spidermonkey/fdlibm/w_pow.c +99 -0
- data/vendor/spidermonkey/fdlibm/w_remainder.c +77 -0
- data/vendor/spidermonkey/fdlibm/w_scalb.c +95 -0
- data/vendor/spidermonkey/fdlibm/w_sinh.c +77 -0
- data/vendor/spidermonkey/fdlibm/w_sqrt.c +77 -0
- data/vendor/spidermonkey/javascript-trace.d +73 -0
- data/vendor/spidermonkey/js.c +3951 -0
- data/vendor/spidermonkey/js.mak +4438 -0
- data/vendor/spidermonkey/js.mdp +0 -0
- data/vendor/spidermonkey/js.msg +307 -0
- data/vendor/spidermonkey/js.pkg +2 -0
- data/vendor/spidermonkey/js3240.rc +79 -0
- data/vendor/spidermonkey/jsOS240.def +654 -0
- data/vendor/spidermonkey/jsapi.c +5836 -0
- data/vendor/spidermonkey/jsapi.h +2624 -0
- data/vendor/spidermonkey/jsarena.c +450 -0
- data/vendor/spidermonkey/jsarena.h +318 -0
- data/vendor/spidermonkey/jsarray.c +2988 -0
- data/vendor/spidermonkey/jsarray.h +124 -0
- data/vendor/spidermonkey/jsatom.c +1045 -0
- data/vendor/spidermonkey/jsatom.h +442 -0
- data/vendor/spidermonkey/jsbit.h +253 -0
- data/vendor/spidermonkey/jsbool.c +176 -0
- data/vendor/spidermonkey/jsbool.h +73 -0
- data/vendor/spidermonkey/jsclist.h +139 -0
- data/vendor/spidermonkey/jscntxt.c +1348 -0
- data/vendor/spidermonkey/jscntxt.h +1120 -0
- data/vendor/spidermonkey/jscompat.h +57 -0
- data/vendor/spidermonkey/jsconfig.h +248 -0
- data/vendor/spidermonkey/jsconfig.mk +181 -0
- data/vendor/spidermonkey/jscpucfg.c +383 -0
- data/vendor/spidermonkey/jscpucfg.h +212 -0
- data/vendor/spidermonkey/jsdate.c +2398 -0
- data/vendor/spidermonkey/jsdate.h +124 -0
- data/vendor/spidermonkey/jsdbgapi.c +1799 -0
- data/vendor/spidermonkey/jsdbgapi.h +464 -0
- data/vendor/spidermonkey/jsdhash.c +868 -0
- data/vendor/spidermonkey/jsdhash.h +592 -0
- data/vendor/spidermonkey/jsdtoa.c +3167 -0
- data/vendor/spidermonkey/jsdtoa.h +130 -0
- data/vendor/spidermonkey/jsdtracef.c +317 -0
- data/vendor/spidermonkey/jsdtracef.h +77 -0
- data/vendor/spidermonkey/jsemit.c +6909 -0
- data/vendor/spidermonkey/jsemit.h +741 -0
- data/vendor/spidermonkey/jsexn.c +1371 -0
- data/vendor/spidermonkey/jsexn.h +96 -0
- data/vendor/spidermonkey/jsfile.c +2736 -0
- data/vendor/spidermonkey/jsfile.h +56 -0
- data/vendor/spidermonkey/jsfile.msg +90 -0
- data/vendor/spidermonkey/jsfun.c +2634 -0
- data/vendor/spidermonkey/jsfun.h +254 -0
- data/vendor/spidermonkey/jsgc.c +3554 -0
- data/vendor/spidermonkey/jsgc.h +403 -0
- data/vendor/spidermonkey/jshash.c +476 -0
- data/vendor/spidermonkey/jshash.h +151 -0
- data/vendor/spidermonkey/jsify.pl +485 -0
- data/vendor/spidermonkey/jsinterp.c +6981 -0
- data/vendor/spidermonkey/jsinterp.h +521 -0
- data/vendor/spidermonkey/jsinvoke.c +43 -0
- data/vendor/spidermonkey/jsiter.c +1067 -0
- data/vendor/spidermonkey/jsiter.h +122 -0
- data/vendor/spidermonkey/jskeyword.tbl +124 -0
- data/vendor/spidermonkey/jskwgen.c +460 -0
- data/vendor/spidermonkey/jslibmath.h +266 -0
- data/vendor/spidermonkey/jslock.c +1309 -0
- data/vendor/spidermonkey/jslock.h +313 -0
- data/vendor/spidermonkey/jslocko.asm +60 -0
- data/vendor/spidermonkey/jslog2.c +94 -0
- data/vendor/spidermonkey/jslong.c +264 -0
- data/vendor/spidermonkey/jslong.h +412 -0
- data/vendor/spidermonkey/jsmath.c +568 -0
- data/vendor/spidermonkey/jsmath.h +57 -0
- data/vendor/spidermonkey/jsnum.c +1228 -0
- data/vendor/spidermonkey/jsnum.h +283 -0
- data/vendor/spidermonkey/jsobj.c +5266 -0
- data/vendor/spidermonkey/jsobj.h +709 -0
- data/vendor/spidermonkey/jsopcode.c +5245 -0
- data/vendor/spidermonkey/jsopcode.h +394 -0
- data/vendor/spidermonkey/jsopcode.tbl +523 -0
- data/vendor/spidermonkey/jsotypes.h +202 -0
- data/vendor/spidermonkey/jsparse.c +6680 -0
- data/vendor/spidermonkey/jsparse.h +511 -0
- data/vendor/spidermonkey/jsprf.c +1262 -0
- data/vendor/spidermonkey/jsprf.h +150 -0
- data/vendor/spidermonkey/jsproto.tbl +128 -0
- data/vendor/spidermonkey/jsprvtd.h +267 -0
- data/vendor/spidermonkey/jspubtd.h +744 -0
- data/vendor/spidermonkey/jsregexp.c +4352 -0
- data/vendor/spidermonkey/jsregexp.h +183 -0
- data/vendor/spidermonkey/jsreops.tbl +145 -0
- data/vendor/spidermonkey/jsscan.c +2003 -0
- data/vendor/spidermonkey/jsscan.h +387 -0
- data/vendor/spidermonkey/jsscope.c +1948 -0
- data/vendor/spidermonkey/jsscope.h +418 -0
- data/vendor/spidermonkey/jsscript.c +1832 -0
- data/vendor/spidermonkey/jsscript.h +287 -0
- data/vendor/spidermonkey/jsshell.msg +50 -0
- data/vendor/spidermonkey/jsstddef.h +83 -0
- data/vendor/spidermonkey/jsstr.c +5004 -0
- data/vendor/spidermonkey/jsstr.h +641 -0
- data/vendor/spidermonkey/jstypes.h +475 -0
- data/vendor/spidermonkey/jsutil.c +345 -0
- data/vendor/spidermonkey/jsutil.h +157 -0
- data/vendor/spidermonkey/jsxdrapi.c +800 -0
- data/vendor/spidermonkey/jsxdrapi.h +218 -0
- data/vendor/spidermonkey/jsxml.c +8471 -0
- data/vendor/spidermonkey/jsxml.h +349 -0
- data/vendor/spidermonkey/lock_SunOS.s +119 -0
- data/vendor/spidermonkey/perfect.js +39 -0
- data/vendor/spidermonkey/plify_jsdhash.sed +36 -0
- data/vendor/spidermonkey/prmjtime.c +846 -0
- data/vendor/spidermonkey/prmjtime.h +103 -0
- data/vendor/spidermonkey/resource.h +15 -0
- data/vendor/spidermonkey/rules.mk +197 -0
- data/vendor/spidermonkey/win32.order +384 -0
- metadata +4 -3
data/MANIFEST
CHANGED
data/Rakefile
CHANGED
@@ -33,11 +33,9 @@ HOE = Hoe.new("johnson", Johnson::VERSION) do |p|
|
|
33
33
|
end
|
34
34
|
|
35
35
|
namespace :gem do
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
f.puts(HOE.spec.to_ruby)
|
40
|
-
end
|
36
|
+
task :spec do
|
37
|
+
File.open("johnson.gemspec", "w") do |f|
|
38
|
+
f.puts(HOE.spec.to_ruby)
|
41
39
|
end
|
42
40
|
end
|
43
41
|
end
|
@@ -102,11 +100,6 @@ file "vendor/spidermonkey/config/MINGW32.mk" => "MINGW32.mk" do |t|
|
|
102
100
|
cp t.prerequisites.first, t.name
|
103
101
|
end
|
104
102
|
|
105
|
-
file "vendor/spidermonkey/jsapi.h" do
|
106
|
-
# if this file's missing, pull in the submodule
|
107
|
-
sh "git submodule init && git submodule update"
|
108
|
-
end
|
109
|
-
|
110
103
|
file "ext/spidermonkey/spidermonkey.#{kind}" =>
|
111
104
|
["ext/spidermonkey/Makefile"] + FileList["ext/spidermonkey/*.{c,h}"].to_a do |t|
|
112
105
|
|
data/bin/johnson
CHANGED
@@ -56,11 +56,12 @@ def eval_in_ruby(expression, bind_to)
|
|
56
56
|
end
|
57
57
|
|
58
58
|
options = Johnson::CLI::Options.parse!(ARGV)
|
59
|
+
|
59
60
|
options.load_paths.each { |d| $LOAD_PATH << d }
|
61
|
+
options.paths_to_require.each { |p| RUNTIME.evaluate("Johnson.require('#{p}')") }
|
60
62
|
options.files_to_preload.each { |f| RUNTIME.load(f) }
|
61
63
|
|
62
64
|
unless options.expressions.empty?
|
63
|
-
# magic comment, do not remove
|
64
65
|
options.expressions.each { |e| RUNTIME.evaluate(e, '-e') }
|
65
66
|
exit if !options.file_to_evaluate
|
66
67
|
end
|
data/ext/spidermonkey/context.c
CHANGED
@@ -48,7 +48,7 @@ initialize_native(VALUE self, VALUE rb_runtime, VALUE UNUSED(options))
|
|
48
48
|
Data_Get_Struct(self, JohnsonContext, context);
|
49
49
|
Data_Get_Struct(rb_runtime, JohnsonRuntime, runtime);
|
50
50
|
|
51
|
-
if ((context->js = JS_NewContext(runtime->js,
|
51
|
+
if ((context->js = JS_NewContext(runtime->js, 8192L)))
|
52
52
|
{
|
53
53
|
// See if the runtime already has a shared global object.
|
54
54
|
JSObject* global = runtime->global;
|
@@ -89,8 +89,7 @@ initialize_native(VALUE self, VALUE rb_runtime, VALUE UNUSED(options))
|
|
89
89
|
//// INFRASTRUCTURE BELOW HERE ////////////////////////////////////////////
|
90
90
|
///////////////////////////////////////////////////////////////////////////
|
91
91
|
|
92
|
-
static void deallocate(JohnsonContext*
|
93
|
-
{
|
92
|
+
static void deallocate(JohnsonContext *context) {
|
94
93
|
JS_SetContextPrivate(context->js, 0);
|
95
94
|
JS_DestroyContext(context->js);
|
96
95
|
free(context);
|
@@ -98,7 +97,7 @@ static void deallocate(JohnsonContext* context)
|
|
98
97
|
|
99
98
|
static VALUE allocate(VALUE klass)
|
100
99
|
{
|
101
|
-
JohnsonContext* context = calloc(
|
100
|
+
JohnsonContext* context = calloc(1L, sizeof(JohnsonContext));
|
102
101
|
return Data_Wrap_Struct(klass, 0, deallocate, context);
|
103
102
|
}
|
104
103
|
|
data/ext/spidermonkey/context.h
CHANGED
@@ -22,7 +22,7 @@ static JSBool convert_symbol_to_js(JohnsonRuntime* runtime, VALUE symbol, jsval*
|
|
22
22
|
PREPARE_JROOTS(context, 2);
|
23
23
|
|
24
24
|
VALUE to_s = CALL_RUBY_WRAPPER(rb_funcall_0, symbol, rb_intern("to_s"), 0);
|
25
|
-
jsval name = STRING_TO_JSVAL(JS_NewStringCopyN(context, StringValuePtr(to_s), (
|
25
|
+
jsval name = STRING_TO_JSVAL(JS_NewStringCopyN(context, StringValuePtr(to_s), (size_t) StringValueLen(to_s)));
|
26
26
|
|
27
27
|
JROOT(name);
|
28
28
|
|
@@ -40,60 +40,64 @@ static JSBool convert_symbol_to_js(JohnsonRuntime* runtime, VALUE symbol, jsval*
|
|
40
40
|
static JSBool convert_regexp_to_js(JohnsonRuntime* runtime, VALUE regexp, jsval* retval)
|
41
41
|
{
|
42
42
|
JSContext * context = johnson_get_current_context(runtime);
|
43
|
+
PREPARE_JROOTS(context, 0);
|
43
44
|
VALUE source = rb_funcall(regexp, rb_intern("source"), 0);
|
44
|
-
|
45
|
+
jsint options = (jsint)(NUM2INT(rb_funcall(regexp, rb_intern("options"), 0)));
|
45
46
|
|
46
47
|
JSObject* obj = JS_NewRegExpObject(context,
|
47
48
|
StringValuePtr(source),
|
48
|
-
(
|
49
|
+
(size_t) StringValueLen(source),
|
49
50
|
(unsigned) options);
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
} else {
|
55
|
-
return JS_FALSE;
|
56
|
-
}
|
52
|
+
JCHECK(obj);
|
53
|
+
*retval = OBJECT_TO_JSVAL(obj);
|
54
|
+
JRETURN;
|
57
55
|
}
|
58
56
|
|
59
57
|
JSBool convert_to_js(JohnsonRuntime* runtime, VALUE ruby, jsval* retval)
|
60
58
|
{
|
61
59
|
JSContext * context = johnson_get_current_context(runtime);
|
60
|
+
PREPARE_JROOTS(context, 0);
|
62
61
|
switch(TYPE(ruby))
|
63
62
|
{
|
64
63
|
case T_NIL:
|
65
64
|
*retval = JSVAL_NULL;
|
66
|
-
|
65
|
+
JRETURN;
|
67
66
|
|
68
67
|
case T_TRUE:
|
69
68
|
*retval = JSVAL_TRUE;
|
70
|
-
|
69
|
+
JRETURN;
|
71
70
|
|
72
71
|
case T_FALSE:
|
73
72
|
*retval = JSVAL_FALSE;
|
74
|
-
|
73
|
+
JRETURN;
|
75
74
|
|
76
75
|
case T_STRING:
|
77
76
|
{
|
78
|
-
JSString* str = JS_NewStringCopyN(context, StringValuePtr(ruby), (
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
} else {
|
83
|
-
return JS_FALSE;
|
84
|
-
}
|
77
|
+
JSString* str = JS_NewStringCopyN(context, StringValuePtr(ruby), (size_t) StringValueLen(ruby));
|
78
|
+
JCHECK(str);
|
79
|
+
*retval = STRING_TO_JSVAL(str);
|
80
|
+
JRETURN;
|
85
81
|
}
|
86
82
|
|
87
83
|
case T_FIXNUM:
|
88
|
-
|
89
|
-
|
84
|
+
{
|
85
|
+
long val = NUM2LONG(ruby);
|
86
|
+
if (val >= JSVAL_INT_MIN && val <= JSVAL_INT_MAX)
|
87
|
+
{
|
88
|
+
*retval = INT_TO_JSVAL((jsint)val);
|
89
|
+
JRETURN;
|
90
|
+
}
|
91
|
+
}
|
90
92
|
|
91
93
|
case T_FLOAT:
|
92
94
|
case T_BIGNUM:
|
93
|
-
|
95
|
+
JCHECK(convert_float_or_bignum_to_js(runtime, ruby, retval));
|
96
|
+
JRETURN;
|
94
97
|
|
95
98
|
case T_SYMBOL:
|
96
|
-
|
99
|
+
JCHECK(convert_symbol_to_js(runtime, ruby, retval));
|
100
|
+
JRETURN;
|
97
101
|
|
98
102
|
case T_CLASS:
|
99
103
|
case T_ARRAY:
|
@@ -102,24 +106,26 @@ JSBool convert_to_js(JohnsonRuntime* runtime, VALUE ruby, jsval* retval)
|
|
102
106
|
case T_FILE:
|
103
107
|
case T_STRUCT:
|
104
108
|
case T_OBJECT:
|
105
|
-
|
109
|
+
JCHECK(make_js_land_proxy(runtime, ruby, retval));
|
110
|
+
JRETURN;
|
106
111
|
|
107
112
|
case T_REGEXP:
|
108
|
-
|
113
|
+
JCHECK(convert_regexp_to_js(runtime, ruby, retval));
|
114
|
+
JRETURN;
|
109
115
|
|
110
116
|
case T_DATA: // HEY! keep T_DATA last for fall-through
|
111
117
|
if (ruby_value_is_proxy(ruby))
|
112
|
-
|
118
|
+
JCHECK(unwrap_ruby_land_proxy(runtime, ruby, retval));
|
119
|
+
else // If we can't identify the object, just wrap it
|
120
|
+
JCHECK(make_js_land_proxy(runtime, ruby, retval));
|
121
|
+
JRETURN;
|
113
122
|
|
114
|
-
// If we can't identify the object, just wrap it
|
115
|
-
return make_js_land_proxy(runtime, ruby, retval);
|
116
|
-
|
117
123
|
default:
|
118
|
-
|
124
|
+
JERROR("unknown ruby type in switch");
|
119
125
|
}
|
120
126
|
|
121
127
|
*retval = JSVAL_NULL;
|
122
|
-
|
128
|
+
JRETURN;
|
123
129
|
}
|
124
130
|
|
125
131
|
VALUE convert_js_string_to_ruby(JohnsonRuntime* runtime, JSString* str)
|
@@ -129,7 +135,7 @@ VALUE convert_js_string_to_ruby(JohnsonRuntime* runtime, JSString* str)
|
|
129
135
|
JROOT(str);
|
130
136
|
char* bytes = JS_GetStringBytes(str);
|
131
137
|
JCHECK(bytes);
|
132
|
-
JRETURN_RUBY(rb_str_new(bytes, (signed)JS_GetStringLength(str)));
|
138
|
+
JRETURN_RUBY(rb_str_new(bytes, (signed long)JS_GetStringLength(str)));
|
133
139
|
}
|
134
140
|
|
135
141
|
static VALUE convert_regexp_to_ruby(JohnsonRuntime* runtime, jsval regexp)
|
@@ -141,7 +147,7 @@ static VALUE convert_regexp_to_ruby(JohnsonRuntime* runtime, jsval regexp)
|
|
141
147
|
|
142
148
|
JRETURN_RUBY(CALL_RUBY_WRAPPER(rb_funcall_2, rb_cRegexp, rb_intern("new"), 2,
|
143
149
|
convert_js_string_to_ruby(runtime, re->source),
|
144
|
-
INT2NUM(re->flags)));
|
150
|
+
INT2NUM((long)re->flags)));
|
145
151
|
}
|
146
152
|
|
147
153
|
static bool js_value_is_regexp(JohnsonRuntime* runtime, jsval maybe_regexp)
|
data/ext/spidermonkey/debugger.c
CHANGED
@@ -22,7 +22,7 @@ static VALUE line_number(VALUE UNUSED(self), VALUE context, VALUE script, VALUE
|
|
22
22
|
Data_Get_Struct(script, JSScript, js_script);
|
23
23
|
Data_Get_Struct(bytecode, jsbytecode, js_bytecode);
|
24
24
|
|
25
|
-
return INT2NUM(JS_PCToLineNumber(js, js_script, js_bytecode));
|
25
|
+
return INT2NUM((long)JS_PCToLineNumber(js, js_script, js_bytecode));
|
26
26
|
}
|
27
27
|
|
28
28
|
static VALUE file_name(VALUE UNUSED(self), VALUE context, VALUE script)
|
@@ -64,7 +64,7 @@ static void new_script_hook(JSContext *UNUSED(js),
|
|
64
64
|
{
|
65
65
|
VALUE self = (VALUE)rb;
|
66
66
|
VALUE rb_filename = rb_str_new2(filename);
|
67
|
-
VALUE rb_linenum = UINT2NUM(lineno);
|
67
|
+
VALUE rb_linenum = UINT2NUM((unsigned long)lineno);
|
68
68
|
|
69
69
|
/* FIXME: Pass the rest of this crap to the debugger? */
|
70
70
|
rb_funcall(self, rb_intern("new_script_hook"), 2, rb_filename, rb_linenum);
|
@@ -103,8 +103,8 @@ static void source_handler(const char *filename, uintN lineno,
|
|
103
103
|
{
|
104
104
|
VALUE self = (VALUE)rb;
|
105
105
|
VALUE rb_filename = rb_str_new2(filename);
|
106
|
-
VALUE rb_lineno =
|
107
|
-
VALUE rb_str = rb_str_new((char *)str, (signed)(length * sizeof(jschar)));
|
106
|
+
VALUE rb_lineno = ULONG2NUM((unsigned long)lineno);
|
107
|
+
VALUE rb_str = rb_str_new((char *)str, (signed long)(length * sizeof(jschar)));
|
108
108
|
|
109
109
|
rb_funcall(self, rb_intern("source_handler"), 3, rb_filename, rb_lineno, rb_str);
|
110
110
|
}
|
@@ -164,7 +164,7 @@ static JSBool debug_error_hook(JSContext *UNUSED(js), const char *message,
|
|
164
164
|
|
165
165
|
static VALUE allocate(VALUE klass)
|
166
166
|
{
|
167
|
-
JSDebugHooks* debug = calloc(
|
167
|
+
JSDebugHooks* debug = calloc(1L, sizeof(JSDebugHooks));
|
168
168
|
VALUE self = Data_Wrap_Struct(klass, 0, 0, debug);
|
169
169
|
|
170
170
|
debug->interruptHandler = interrupt_handler;
|
@@ -17,12 +17,12 @@ static void deallocate(ImmutableNodeContext* context)
|
|
17
17
|
|
18
18
|
static VALUE allocate(VALUE klass)
|
19
19
|
{
|
20
|
-
ImmutableNodeContext * context = calloc(
|
20
|
+
ImmutableNodeContext * context = calloc(1L, sizeof(ImmutableNodeContext));
|
21
21
|
|
22
22
|
VALUE self = Data_Wrap_Struct(klass, 0, deallocate, context);
|
23
23
|
|
24
24
|
assert(context->runtime = JS_NewRuntime(0x100000));
|
25
|
-
assert(context->js = JS_NewContext(context->runtime,
|
25
|
+
assert(context->js = JS_NewContext(context->runtime, 8192L));
|
26
26
|
|
27
27
|
return self;
|
28
28
|
}
|
@@ -40,7 +40,7 @@ static VALUE parse_io(int argc, VALUE *argv, VALUE klass) {
|
|
40
40
|
ImmutableNodeContext* context;
|
41
41
|
Data_Get_Struct(self, ImmutableNodeContext, context);
|
42
42
|
|
43
|
-
assert(context->pc = calloc(
|
43
|
+
assert(context->pc = calloc(1L, sizeof(JSParseContext)));
|
44
44
|
|
45
45
|
rb_scan_args( argc, argv, "12", &stream, &filename, &linenum );
|
46
46
|
|
@@ -80,7 +80,7 @@ static VALUE parse_io(int argc, VALUE *argv, VALUE klass) {
|
|
80
80
|
Qnil :
|
81
81
|
rb_str_new2(JS_GetStringBytes(JSVAL_TO_STRING(message))),
|
82
82
|
rb_str_new2(JS_GetStringBytes(JSVAL_TO_STRING(file_name))),
|
83
|
-
INT2NUM(JSVAL_TO_INT(line_number))
|
83
|
+
INT2NUM((long)JSVAL_TO_INT(line_number))
|
84
84
|
);
|
85
85
|
|
86
86
|
}
|
@@ -97,7 +97,7 @@ static VALUE line(VALUE self) {
|
|
97
97
|
ImmutableNodeContext * ctx;
|
98
98
|
|
99
99
|
Data_Get_Struct(self, ImmutableNodeContext, ctx);
|
100
|
-
return INT2NUM(ctx->node->pn_pos.begin.lineno);
|
100
|
+
return INT2NUM((long)(ctx->node->pn_pos.begin.lineno));
|
101
101
|
}
|
102
102
|
|
103
103
|
/*
|
@@ -110,7 +110,7 @@ static VALUE begin_index(VALUE self) {
|
|
110
110
|
ImmutableNodeContext * ctx;
|
111
111
|
|
112
112
|
Data_Get_Struct(self, ImmutableNodeContext, ctx);
|
113
|
-
return INT2NUM(ctx->node->pn_pos.begin.index);
|
113
|
+
return INT2NUM((long)(ctx->node->pn_pos.begin.index));
|
114
114
|
}
|
115
115
|
|
116
116
|
/*
|
@@ -157,7 +157,7 @@ static VALUE pn_type(VALUE self) {
|
|
157
157
|
case <%= token %>: return ID2SYM(rb_intern("<%= token.downcase %>"));
|
158
158
|
<% end %>
|
159
159
|
}
|
160
|
-
return INT2NUM(ctx->node->pn_type);
|
160
|
+
return INT2NUM((long)(ctx->node->pn_type));
|
161
161
|
}
|
162
162
|
|
163
163
|
/*
|
@@ -273,7 +273,7 @@ static VALUE data_pn_dval(VALUE self) {
|
|
273
273
|
if(JSVAL_IS_NUMBER(ATOM_KEY(ctx->node->pn_atom))) {
|
274
274
|
return rb_float_new(ctx->node->pn_dval);
|
275
275
|
} else {
|
276
|
-
return INT2NUM((
|
276
|
+
return INT2NUM((long)(ctx->node->pn_dval));
|
277
277
|
}
|
278
278
|
}
|
279
279
|
|
@@ -322,7 +322,7 @@ static VALUE data_pn_extra(VALUE self) {
|
|
322
322
|
|
323
323
|
Data_Get_Struct(self, ImmutableNodeContext, ctx);
|
324
324
|
|
325
|
-
return UINT2NUM(ctx->node->pn_extra);
|
325
|
+
return UINT2NUM((unsigned long)(ctx->node->pn_extra));
|
326
326
|
}
|
327
327
|
|
328
328
|
/*
|
@@ -393,7 +393,7 @@ static VALUE function_args(VALUE self) {
|
|
393
393
|
object = ctx->node->pn_funpob->object;
|
394
394
|
f = (JSFunction *)JS_GetPrivate(ctx->js, ctx->node->pn_funpob->object);
|
395
395
|
|
396
|
-
func_args = rb_ary_new2(f->nargs);
|
396
|
+
func_args = rb_ary_new2((long)f->nargs);
|
397
397
|
if(f->nargs > 0) {
|
398
398
|
names = js_GetLocalNameArray(ctx->js, f, &ctx->js->tempPool);
|
399
399
|
for(i = 0; i < f->nargs; i++) {
|
@@ -484,7 +484,7 @@ VALUE jsop_to_symbol(JSUint32 jsop)
|
|
484
484
|
case <%= jsop %>: return ID2SYM(rb_intern("<%= jsop.downcase %>"));
|
485
485
|
<% end %>
|
486
486
|
}
|
487
|
-
return UINT2NUM(jsop);
|
487
|
+
return UINT2NUM((unsigned long)(jsop));
|
488
488
|
}
|
489
489
|
|
490
490
|
void init_Johnson_SpiderMonkey_Immutable_Node(VALUE spidermonkey)
|
data/ext/spidermonkey/jroot.h
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#ifndef JOHNSON_JROOT_H
|
2
2
|
#define JOHNSON_JROOT_H
|
3
3
|
|
4
|
-
#define _JROOT_NAMESIZE
|
5
|
-
#define _JROOT_ERRSIZE
|
4
|
+
#define _JROOT_NAMESIZE 200L
|
5
|
+
#define _JROOT_ERRSIZE 500L
|
6
6
|
|
7
7
|
#define _JROOT_ROOT (void*)(1)
|
8
8
|
|
@@ -176,10 +176,10 @@
|
|
176
176
|
#define DEFINE_RUBY_WRAPPER(name, func, arglist) \
|
177
177
|
VALUE name ## _invoke(VALUE magic) \
|
178
178
|
{ \
|
179
|
-
name ## _args * _data = (name ## _args *)(
|
179
|
+
name ## _args * _data = (name ## _args *)(FIX2LONG(magic) << 2); \
|
180
180
|
return func(arglist); \
|
181
181
|
}
|
182
|
-
#define RUBY_WRAPPER_ARG(name, args...) ({ name ## _args _x = { args };
|
182
|
+
#define RUBY_WRAPPER_ARG(name, args...) ({ name ## _args _x = { args }; LONG2FIX((long)(&_x) >> 2); })
|
183
183
|
#define RUBY_WRAPPER(name) name ## _invoke
|
184
184
|
#define CALL_RUBY_WRAPPER(name, args...) JPROTECT(RUBY_WRAPPER(name), RUBY_WRAPPER_ARG(name, args))
|
185
185
|
|
@@ -61,14 +61,14 @@ static VALUE call_ruby_from_js_invoke(VALUE args)
|
|
61
61
|
JSBool call_ruby_from_js_va(JohnsonRuntime* runtime, VALUE* result, VALUE self, ID id, int argc, va_list va)
|
62
62
|
{
|
63
63
|
VALUE old_errinfo = ruby_errinfo;
|
64
|
-
VALUE args = rb_ary_new2(argc + 2);
|
64
|
+
VALUE args = rb_ary_new2((long)argc + 2);
|
65
65
|
|
66
|
-
|
66
|
+
long i;
|
67
67
|
for(i = 0; i < argc; i++)
|
68
68
|
rb_ary_store(args, i, va_arg(va, VALUE));
|
69
69
|
|
70
|
-
rb_ary_store(args, argc, ID2SYM(id));
|
71
|
-
rb_ary_store(args, argc + 1, self);
|
70
|
+
rb_ary_store(args, (long)argc, ID2SYM(id));
|
71
|
+
rb_ary_store(args, (long)argc + 1, self);
|
72
72
|
|
73
73
|
int state;
|
74
74
|
*result = rb_protect(call_ruby_from_js_invoke, args, &state);
|
@@ -181,8 +181,9 @@ static bool respond_to_p(JSContext* js_context, JSObject* obj, char* name)
|
|
181
181
|
|
182
182
|
static jsval evaluate_js_property_expression(JohnsonRuntime * runtime, const char * property, jsval* retval) {
|
183
183
|
JSContext * context = johnson_get_current_context(runtime);
|
184
|
+
assert(strlen(property) < INT_MAX);
|
184
185
|
return JS_EvaluateScript(context, runtime->global,
|
185
|
-
property, strlen(property), "johnson:evaluate_js_property_expression", 1,
|
186
|
+
property, (unsigned int)strlen(property), "johnson:evaluate_js_property_expression", 1,
|
186
187
|
retval);
|
187
188
|
}
|
188
189
|
|
@@ -550,10 +551,10 @@ static void finalize(JSContext* js_context, JSObject* obj)
|
|
550
551
|
|
551
552
|
// remove the proxy OID from the id map
|
552
553
|
JS_HashTableRemove(runtime->rbids, (void *)self);
|
553
|
-
|
554
|
+
|
554
555
|
// free up the ruby value for GC
|
555
|
-
|
556
|
-
}
|
556
|
+
rb_funcall(ruby_runtime, rb_intern("remove_gcthing"), 1, rb_obj_id(self));
|
557
|
+
}
|
557
558
|
}
|
558
559
|
|
559
560
|
JSBool make_js_land_proxy(JohnsonRuntime* runtime, VALUE value, jsval* retval)
|
@@ -65,7 +65,7 @@ get(VALUE self, VALUE name)
|
|
65
65
|
switch(TYPE(name)) {
|
66
66
|
case T_FIXNUM:
|
67
67
|
JCHECK(JS_GetElement(context,
|
68
|
-
JSVAL_TO_OBJECT(proxy_value), NUM2INT(name), &js_value));
|
68
|
+
JSVAL_TO_OBJECT(proxy_value), (jsint)(NUM2INT(name)), &js_value));
|
69
69
|
break;
|
70
70
|
default:
|
71
71
|
Check_Type(name, T_STRING);
|
@@ -104,7 +104,7 @@ set(VALUE self, VALUE name, VALUE value)
|
|
104
104
|
switch(TYPE(name)) {
|
105
105
|
case T_FIXNUM:
|
106
106
|
JCHECK(JS_SetElement(context,
|
107
|
-
JSVAL_TO_OBJECT(proxy_value), NUM2INT(name), &js_value));
|
107
|
+
JSVAL_TO_OBJECT(proxy_value), (jsint)(NUM2INT(name)), &js_value));
|
108
108
|
break;
|
109
109
|
default:
|
110
110
|
Check_Type(name, T_STRING);
|
@@ -150,7 +150,8 @@ respond_to_p(VALUE self, VALUE sym)
|
|
150
150
|
JSContext * context = johnson_get_current_context(proxy->runtime);
|
151
151
|
PREPARE_RUBY_JROOTS(context, 2);
|
152
152
|
|
153
|
-
|
153
|
+
VALUE stringval = rb_funcall(sym, rb_intern("to_s"), 0);
|
154
|
+
char* name = StringValuePtr(stringval);
|
154
155
|
|
155
156
|
// assignment is always okay
|
156
157
|
if (name[strlen(name) - 1] == '=')
|
@@ -278,7 +279,7 @@ each(VALUE self)
|
|
278
279
|
VALUE key = CONVERT_TO_RUBY(proxy->runtime, js_key);
|
279
280
|
VALUE value = CONVERT_TO_RUBY(proxy->runtime, js_value);
|
280
281
|
|
281
|
-
CALL_RUBY_WRAPPER(rb_yield, rb_ary_new3(
|
282
|
+
CALL_RUBY_WRAPPER(rb_yield, rb_ary_new3(2L, key, value));
|
282
283
|
|
283
284
|
JUNROOT(js_value);
|
284
285
|
JUNROOT(js_key);
|