[#3419] Valgrind analysis of [BUG] unknown node type 0 — Andrew Walrond <andrew@...>

Hello list,

19 messages 2004/09/17
[#3422] Re: Valgrind analysis of [BUG] unknown node type 0 — ts <decoux@...> 2004/09/17

>>>>> "A" == Andrew Walrond <andrew@walrond.org> writes:

[#3423] Re: Valgrind analysis of [BUG] unknown node type 0 — Andrew Walrond <andrew@...> 2004/09/17

On Friday 17 Sep 2004 12:01, ts wrote:

[#3424] Re: Valgrind analysis of [BUG] unknown node type 0 — ts <decoux@...> 2004/09/17

>>>>> "A" == Andrew Walrond <andrew@walrond.org> writes:

[#3425] Re: Valgrind analysis of [BUG] unknown node type 0 — Andrew Walrond <andrew@...> 2004/09/17

On Friday 17 Sep 2004 12:37, ts wrote:

[#3426] Re: Valgrind analysis of [BUG] unknown node type 0 — ts <decoux@...> 2004/09/17

>>>>> "A" == Andrew Walrond <andrew@walrond.org> writes:

[#3428] Re: Valgrind analysis of [BUG] unknown node type 0 — Andrew Walrond <andrew@...> 2004/09/17

On Friday 17 Sep 2004 13:05, ts wrote:

[#3429] Re: Valgrind analysis of [BUG] unknown node type 0 — ts <decoux@...> 2004/09/17

>>>>> "A" == Andrew Walrond <andrew@walrond.org> writes:

Re: [PATCH] dir.c --- Dir.chdir error handling

From: nobu.nokada@...
Date: 2004-09-10 15:01:15 UTC
List: ruby-core #3376
Hi,

At Fri, 10 Sep 2004 23:05:35 +0900,
H.Yamamoto wrote in [ruby-core:03374]:
> I understand. Well, in ruby.h many VALUE arguments exists, should
> only 4th argument of rb_rescue2 be volatile? I'm not sure
> which one should be volatile, so I hope nobu or matz decides it.
> 
> VALUE rb_each _((VALUE));

It results in rb_call0(), which stores the receiver at
ruby_frame->self.  OK.

> VALUE rb_yield _((VALUE));
> VALUE rb_yield_values __((int n, ...));
> VALUE rb_yield_splat _((VALUE));

These result in rb_yield_0(), and it may be problematic in some
platforms.  But, at least GCC saves variables may be changed
inside EXEC_TAG() block (i.e., setjmp()).  In other words, the
ANSI C doesn't guarantee the value in the else clause.

> int rb_block_given_p _((void));

This isn't concerned with this issue?  It never fail, and uses
no VALUE's.

> VALUE rb_iterate _((VALUE(*)(VALUE),VALUE,VALUE(*)(ANYARGS),VALUE));

data2 is stored in ruby_block->body node, but data1 would be
similar to rb_yield()

> VALUE rb_rescue _((VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE));
> VALUE rb_rescue2 __((VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE,...));

Ditto.

> VALUE rb_catch _((const char*,VALUE(*)(ANYARGS),VALUE));

This passes the 3rd VALUE to rb_iterate().

> NORETURN(void rb_throw _((const char*,VALUE)));

This stores the VALUE in a local array, OK.

-- 
Nobu Nakada

In This Thread