[macruby-changes] [4192] MacRuby/trunk/ext/json/rubyext.c
source_changes at macosforge.org
source_changes at macosforge.org
Tue Jun 1 21:29:36 PDT 2010
Revision: 4192
http://trac.macosforge.org/projects/ruby/changeset/4192
Author: lsansonetti at apple.com
Date: 2010-06-01 21:29:32 -0700 (Tue, 01 Jun 2010)
Log Message:
-----------
port to the new dispatcher
Modified Paths:
--------------
MacRuby/trunk/ext/json/rubyext.c
Modified: MacRuby/trunk/ext/json/rubyext.c
===================================================================
--- MacRuby/trunk/ext/json/rubyext.c 2010-06-02 04:14:57 UTC (rev 4191)
+++ MacRuby/trunk/ext/json/rubyext.c 2010-06-02 04:29:32 UTC (rev 4192)
@@ -90,13 +90,6 @@
static SEL sel_to_s;
static SEL sel_to_json;
-static struct mcache* parse_cache = NULL;
-static struct mcache* encode_cache = NULL;
-static struct mcache* keys_cache = NULL;
-static struct mcache* to_s_cache = NULL;
-static struct mcache* to_json_cache = NULL;
-
-
static VALUE
rb_json_parser_alloc(VALUE klass, SEL sel)
{
@@ -393,10 +386,10 @@
switch (TYPE(obj)) {
case T_HASH:
status = yajl_gen_map_open(gen->generator);
- keys = rb_vm_call_with_cache(keys_cache, obj, sel_keys, 0, 0);
+ keys = rb_vm_call(obj, sel_keys, 0, 0);
for(i = 0, len = RARRAY_LEN(keys); i < len; i++) {
entry = rb_ary_entry(keys, i);
- keyStr = rb_vm_call_with_cache(to_s_cache, entry, sel_to_s, 0, 0);
+ keyStr = rb_vm_call(entry, sel_to_s, 0, 0);
json_encode_part(gen, keyStr);
json_encode_part(gen, rb_hash_aref(obj, entry));
}
@@ -422,7 +415,7 @@
case T_FIXNUM:
case T_FLOAT:
case T_BIGNUM:
- str = rb_vm_call_with_cache(to_s_cache, obj, sel_to_s, 0, 0);
+ str = rb_vm_call(obj, sel_to_s, 0, 0);
cptr = RSTRING_PTR(str);
if (!strcmp(cptr, "NaN") || !strcmp(cptr, "Infinity") || !strcmp(cptr, "-Infinity")) {
rb_raise(rb_cEncodeError, "'%s' is an invalid number", cptr);
@@ -439,11 +432,11 @@
break;
default:
if (rb_respond_to(obj, id_to_json)) {
- str = rb_vm_call_with_cache(to_json_cache, obj, sel_to_json, 0, 0);
+ str = rb_vm_call(obj, sel_to_json, 0, 0);
quote_strings = 0;
}
else {
- str = rb_vm_call_with_cache(to_s_cache, obj, sel_to_s, 0, 0);
+ str = rb_vm_call(obj, sel_to_s, 0, 0);
}
cptr = RSTRING_PTR(str);
status = yajl_gen_string(gen->generator, (const unsigned char*)cptr, (unsigned int)strlen(cptr), quote_strings);
@@ -467,7 +460,7 @@
rb_obj_call_init(parser, 1, &opts);
}
- return rb_vm_call_with_cache(parse_cache, parser, sel_parse, 1, &str);
+ return rb_vm_call(parser, sel_parse, 1, &str);
}
static VALUE
@@ -485,7 +478,7 @@
rb_obj_call_init(generator, 1, &opts);
}
- return rb_vm_call_with_cache(encode_cache, generator, sel_encode, 1, &obj);
+ return rb_vm_call(generator, sel_encode, 1, &obj);
}
static VALUE
@@ -515,13 +508,13 @@
rb_obj_call_init(generator, 0, 0);
}
- return rb_vm_call_with_cache(encode_cache, generator, sel_encode, 1, &self);
+ return rb_vm_call(generator, sel_encode, 1, &self);
}
static VALUE
rb_object_to_json(VALUE self, SEL sel, int argc, VALUE* argv)
{
- VALUE str = rb_vm_call_with_cache(to_s_cache, self, sel_to_s, 0, 0);
+ VALUE str = rb_vm_call(self, sel_to_s, 0, 0);
VALUE buf = rb_str_new2("\"");
rb_str_concat(buf, str);
@@ -549,12 +542,6 @@
sel_to_s = sel_registerName("to_s");
sel_to_json = sel_registerName("to_json");
- parse_cache = rb_vm_get_call_cache(sel_parse);
- encode_cache = rb_vm_get_call_cache(sel_encode);
- keys_cache = rb_vm_get_call_cache(sel_keys);
- to_s_cache = rb_vm_get_call_cache(sel_to_s);
- to_json_cache = rb_vm_get_call_cache(sel_to_json);
-
rb_mJSON = rb_define_module("JSON");
rb_cParseError = rb_define_class_under(rb_mJSON, "ParseError", rb_eStandardError);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100601/fb0964bf/attachment.html>
More information about the macruby-changes
mailing list