jbarnette-johnson 1.0.0.200806240111 → 1.0.0.200807291507
Sign up to get free protection for your applications and to get access to all the features.
- 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);
|