summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--array.c4
-rw-r--r--eval.c10
-rw-r--r--hash.c9
-rw-r--r--node.h2
5 files changed, 27 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 01ccf02b68..c1bbb8cadc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Nov 15 07:40:14 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_method_node): new API to retrieve method body.
+
Fri Nov 14 13:21:30 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: fix (en-bugged at 2003/11/07)
diff --git a/array.c b/array.c
index ba030bf468..5f41d26409 100644
--- a/array.c
+++ b/array.c
@@ -81,8 +81,8 @@ static VALUE
rb_ary_frozen_p(ary)
VALUE ary;
{
- if (FL_TEST(ary, FL_FREEZE|ARY_TMPLOCK))
- return Qtrue;
+ if (OBJ_FROZEN(ary)) return Qtrue;
+ if (FL_TEST(ary, ARY_TMPLOCK)) return Qtrue;
return Qfalse;
}
diff --git a/eval.c b/eval.c
index de8408170d..64fa28bd98 100644
--- a/eval.c
+++ b/eval.c
@@ -421,6 +421,16 @@ rb_get_method_body(klassp, idp, noexp)
return body;
}
+NODE*
+rb_method_node(klass, id)
+ VALUE klass;
+ ID id;
+{
+ int noex;
+
+ return rb_get_method_body(&klass, &id, &noex);
+}
+
static void
remove_method(klass, mid)
VALUE klass;
diff --git a/hash.c b/hash.c
index 75c07797d3..b2a17698df 100644
--- a/hash.c
+++ b/hash.c
@@ -41,6 +41,14 @@ rb_hash_freeze(hash)
return rb_obj_freeze(hash);
}
+static VALUE
+rb_hash_frozen_p(hash)
+ VALUE hash;
+{
+ if (OBJ_FROZEN(hash)) return Qtrue;
+ return Qfalse;
+}
+
VALUE rb_cHash;
static VALUE envtbl;
@@ -1789,6 +1797,7 @@ Init_Hash()
rb_define_method(rb_cHash,"to_a", rb_hash_to_a, 0);
rb_define_method(rb_cHash,"to_s", rb_hash_to_s, 0);
rb_define_method(rb_cHash,"inspect", rb_hash_inspect, 0);
+ rb_define_method(rb_cHash,"frozen?", rb_hash_frozen_p, 0);
rb_define_method(rb_cHash,"==", rb_hash_equal, 1);
rb_define_method(rb_cHash,"[]", rb_hash_aref, 1);
diff --git a/node.h b/node.h
index 0e5150ced9..c06336e17f 100644
--- a/node.h
+++ b/node.h
@@ -352,6 +352,8 @@ NODE *rb_compile_file _((const char*, VALUE, int));
void rb_add_method _((VALUE, ID, NODE *, int));
NODE *rb_node_newnode _((enum node_type,VALUE,VALUE,VALUE));
+NODE* rb_method_node _((VALUE klass, ID id));
+
struct global_entry *rb_global_entry _((ID));
VALUE rb_gvar_get _((struct global_entry *));
VALUE rb_gvar_set _((struct global_entry *, VALUE));