ruby-changes:6343
From: mame <ko1@a...>
Date: Thu, 3 Jul 2008 23:31:10 +0900 (JST)
Subject: [ruby-changes:6343] Ruby:r17859 (trunk): * include/ruby/intern.h: remove prototypes about coverage.
mame 2008-07-03 23:27:43 +0900 (Thu, 03 Jul 2008)
New Revision: 17859
Modified files:
trunk/ChangeLog
trunk/ext/coverage/coverage.c
trunk/include/ruby/intern.h
trunk/iseq.c
trunk/parse.y
trunk/thread.c
trunk/vm.c
Log:
* include/ruby/intern.h: remove prototypes about coverage.
* iseq.c (prepare_iseq_build): add prototype.
* parse.y (coverage): ditto.
* thread.c (clear_coverage): ditto.
* thread.c (update_coverage): use rb_sourceline.
* thread.c (rb_get_coverages): rename and move to vm.c.
* vm.c (rb_vm_get_coverages): ditto.
* ext/coverage/coverage.c: add rdoc.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=17859
Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h (revision 17858)
+++ include/ruby/intern.h (revision 17859)
@@ -626,8 +626,6 @@
VALUE rb_barrier_new(void);
VALUE rb_barrier_wait(VALUE self);
VALUE rb_barrier_release(VALUE self);
-VALUE rb_get_coverages(void);
-void rb_enable_coverages(void);
/* time.c */
VALUE rb_time_new(time_t, long);
VALUE rb_time_nano_new(time_t, long);
Index: ChangeLog
===================================================================
--- ChangeLog (revision 17858)
+++ ChangeLog (revision 17859)
@@ -1,3 +1,21 @@
+Thu Jul 3 23:26:36 2008 Yusuke Endoh <mame@t...>
+
+ * include/ruby/intern.h: remove prototypes about coverage.
+
+ * iseq.c (prepare_iseq_build): add prototype.
+
+ * parse.y (coverage): ditto.
+
+ * thread.c (clear_coverage): ditto.
+
+ * thread.c (update_coverage): use rb_sourceline.
+
+ * thread.c (rb_get_coverages): rename and move to vm.c.
+
+ * vm.c (rb_vm_get_coverages): ditto.
+
+ * ext/coverage/coverage.c: add rdoc.
+
Thu Jul 3 21:51:21 2008 Yusuke Endoh <mame@t...>
* ext/coverage/coverage.c, ext/coverage/extconf.rb: eliminate
Index: iseq.c
===================================================================
--- iseq.c (revision 17858)
+++ iseq.c (revision 17859)
@@ -194,7 +194,8 @@
iseq->coverage = Qfalse;
if (!GET_THREAD()->parse_in_eval) {
- VALUE coverages = rb_get_coverages();
+ extern VALUE rb_vm_get_coverages(void);
+ VALUE coverages = rb_vm_get_coverages();
if (RTEST(coverages)) {
iseq->coverage = rb_hash_aref(coverages, filename);
if (NIL_P(iseq->coverage)) iseq->coverage = Qfalse;
Index: thread.c
===================================================================
--- thread.c (revision 17858)
+++ thread.c (revision 17859)
@@ -2116,7 +2116,8 @@
static void
clear_coverage(void)
{
- VALUE coverages = rb_get_coverages();
+ extern VALUE rb_vm_get_coverages(void);
+ VALUE coverages = rb_vm_get_coverages();
if (RTEST(coverages)) {
st_foreach(RHASH_TBL(coverages), clear_coverage_i, 0);
}
@@ -3529,19 +3530,12 @@
}
}
-VALUE
-rb_get_coverages(void)
-{
- return GET_VM()->coverages;
-}
-
static void
update_coverage(rb_event_flag_t event, VALUE proc, VALUE self, ID id, VALUE klass)
{
- rb_control_frame_t *cfp = GET_THREAD()->cfp;
- VALUE coverage = cfp->iseq->coverage;
+ VALUE coverage = GET_THREAD()->cfp->iseq->coverage;
if (coverage) {
- long line = vm_get_sourceline(cfp) - 1;
+ long line = rb_sourceline() - 1;
long count;
if (RARRAY_PTR(coverage)[line] == Qnil) {
rb_bug("bug");
@@ -3556,8 +3550,13 @@
void
rb_enable_coverages(void)
{
+ VALUE rb_mCoverage;
+
if (!RTEST(GET_VM()->coverages)) {
+ extern VALUE rb_vm_get_coverages(void);
GET_VM()->coverages = rb_hash_new();
rb_add_event_hook(update_coverage, RUBY_EVENT_COVERAGE, Qnil);
+ rb_mCoverage = rb_define_module("Coverage");
+ rb_define_module_function(rb_mCoverage, "result", rb_vm_get_coverages, 0);
}
}
Index: parse.y
===================================================================
--- parse.y (revision 17858)
+++ parse.y (revision 17859)
@@ -4672,7 +4672,8 @@
static VALUE
coverage(const char *f, int n)
{
- VALUE coverages = rb_get_coverages();
+ extern VALUE rb_vm_get_coverages(void);
+ VALUE coverages = rb_vm_get_coverages();
if (RTEST(coverages)) {
VALUE fname = rb_str_new2(f);
VALUE lines = rb_ary_new2(n);
Index: ext/coverage/coverage.c
===================================================================
--- ext/coverage/coverage.c (revision 17858)
+++ ext/coverage/coverage.c (revision 17859)
@@ -1,11 +1,47 @@
+/************************************************
+
+ coverage.c -
+
+ $Author: $
+
+ Copyright (c) 2008 Yusuke Endoh
+
+************************************************/
+
#include "ruby.h"
-VALUE rb_mCoverage;
+extern void rb_enable_coverages(void);
+/* Coverage provides coverage measurement feature for Ruby.
+ *
+ * = Usage
+ *
+ * (1) require "coverage.so"
+ * (2) require or load Ruby source file
+ * (3) Coverage.result will return a hash that contains filename as key and
+ * coverage array as value.
+ *
+ * = Example
+ *
+ * [foo.rb]
+ * s = 0
+ * 10.times do |x|
+ * s += x
+ * end
+ *
+ * if s == 45
+ * p :ok
+ * else
+ * p :ng
+ * end
+ * [EOF]
+ *
+ * require "coverage.so"
+ * require "foo.rb"
+ * p COVERAGE__ #=> {"foo.rb"=>[1, 1, 10, nil, nil, 1, 1, nil, 0, nil]}
+ */
void
Init_coverage(void)
{
rb_enable_coverages();
- rb_mCoverage = rb_define_module("Coverage");
- rb_define_module_function(rb_mCoverage, "result", rb_get_coverages, 0);
}
Index: vm.c
===================================================================
--- vm.c (revision 17858)
+++ vm.c (revision 17859)
@@ -1909,3 +1909,9 @@
{
return ruby_vm_debug_ptr(GET_VM());
}
+
+VALUE
+rb_vm_get_coverages(void)
+{
+ return GET_VM()->coverages;
+}
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/