[#12073] Re: Ruby is much slower on linux when compiled with --enable-pthread? — "M. Edward (Ed) Borasky" <znmeb@...>
-----BEGIN PGP SIGNED MESSAGE-----
M. Edward (Ed) Borasky wrote:
On Wed, Sep 05, 2007 at 08:24:57PM +0900, Florian Frank wrote:
On 9/5/07, Sam Roberts <sroberts@uniserve.com> wrote:
[#12085] New array methods cycle, choice, shuffle (plus bug in cycle) — David Flanagan <david@...>
Four new methods have been added to Array the Ruby 1.9 trunk. I've got
On 9/6/07, David Flanagan <david@davidflanagan.com> wrote:
Wilson Bilkovich wrote:
On 9/7/07, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
David Flanagan <david@davidflanagan.com> writes:
On 9/13/07, Christian Neukirchen <chneukirchen@gmail.com> wrote:
Nikolai Weibull wrote:
Restarting this thread because I missed it the first time around and
Hi,
On Thu, Jul 31, 2008 at 7:50 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Gregory Brown wrote:
Michael Neumann wrote:
Hi --
On 8/1/08, David A. Black <dblack@rubypal.com> wrote:
Wilson Bilkovich wrote:
Hi,
Hi --
2008/8/2 Yukihiro Matsumoto <matz@ruby-lang.org>:
Hi,
Yukihiro Matsumoto wrote:
Florian Frank wrote:
Hi,
On Sun, Aug 3, 2008 at 9:37 AM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
On Jul 31, 2008, at 7:33 PM, Charles Oliver Nutter wrote:
Jim Weirich wrote:
On Aug 1, 2008, at 1:53 PM, Thomas Enebo wrote:
On Fri, Aug 1, 2008 at 2:01 PM, Jim Weirich <jim.weirich@gmail.com> wrote:
Gregory Brown wrote:
On Aug 1, 2008, at 2:40 PM, Thomas Enebo wrote:
[#12096] Next 1.8.6 on Sept. 22 — Urabe Shyouhei <shyouhei@...>
Hi all.
Well there is this patch:
Rocky Bernstein wrote:
-----BEGIN PGP SIGNED MESSAGE-----
On 9/10/07, M. Edward (Ed) Borasky <znmeb@cesmail.net> wrote:
On Sunday 09 September 2007, Urabe Shyouhei wrote:
[#12118] Is this expected behavior? — James Edward Gray II <james@...>
As part of TextMate's development process we have an application on a
[#12140] Strange ripper bug — "Alexey I. Froloff" <sir_raorn@...>
Sometimes, ripper can't parse valid code (trunk from yesterday).
On [Wed, 12.09.2007 03:05], Alexey I. Froloff wrote:
On [Thu, 13.09.2007 02:58], Kirill A. Shutemov wrote:
Hi,
[#12143] Blocks passed to constructors - is this behavior by design? — "John Lam (CLR)" <jflam@...>
class Foo
It's because the constructor isn't actually finished executing, and the
[#12166] Wrapped loads and Module::nesting — David Flanagan <david@...>
When I call load with a second argument of true, the file is loaded into
[#12184] Misleading error message with URI::InvalidURIError — "Douglas Tan" <bianster@...>
The error message that URI.parse displays when supplied with a uri
[#12200] class variables and singleton classes — Eric Hodel <drbrain@...7.net>
Class variables in singleton classes are separate from class
[#12201] how about actors implemented in ruby-core itself — hemant <gethemant@...>
Hi,
On 9/20/07, hemant <gethemant@gmail.com> wrote:
Hi,
[#12220] `ri Kernel#open` Bug — James Edward Gray II <james@...>
$ ri -T Kernel#open
On Sep 21, 2007, at 16:42, James Edward Gray II wrote:
On Sep 21, 2007, at 8:13 PM, Eric Hodel wrote:
On Sep 22, 2007, at 7:28 AM, Jim Freeze wrote:
[#12231] Wrong return value with []= — Michael Neumann <mneumann@...>
Hi,
[#12237] Latest benchmarks — "M. Edward (Ed) Borasky" <znmeb@...>
I just ran the benchmark suite that comes with Ruby 1.9 on my 32-bit
[#12247] Fibers as semi-coroutines enabled by default — David Flanagan <david@...>
Hi all,
Hi,
[#12248] arbitrary Unicode characters in identifiers? — David Flanagan <david@...>
[#12255] Array#-, &, |, uniq don't use == — murphy <murphy@...>
Hello!
[#12284] gc.c -- possible logic error? — Hugh Sasse <hgs@...>
I've been looking at Tom Copeland's memory allocation problem:
On Fri, 28 Sep 2007 21:57:22 +0900, Hugh Sasse <hgs@dmu.ac.uk> wrote:
On Sat, 29 Sep 2007, MenTaLguY wrote:
In article <Pine.GSO.4.64.0709281302390.26570@brains.eng.cse.dmu.ac.uk>,
On Tue, 2 Oct 2007, Tanaka Akira wrote:
In article <Pine.GSO.4.64.0710011802250.11425@brains.eng.cse.dmu.ac.uk>,
On Tue, 2 Oct 2007, Tanaka Akira wrote:
On Oct 1, 2007, at 10:54 , Hugh Sasse wrote:
On Tue, 2 Oct 2007, Eric Hodel wrote:
[#12294] String.force_encoding — David Flanagan <david@...>
Hi,
[#12305] Will 1.8.6 remain compiled with VC6? — "Luis Lavena" <luislavena@...>
Hello Core developers.
On 9/30/07, Luis Lavena <luislavena@gmail.com> wrote:
On 9/30/07, Austin Ziegler <halostatue@gmail.com> wrote:
On 9/30/07, Luis Lavena <luislavena@gmail.com> wrote:
On 9/30/07, Austin Ziegler <halostatue@gmail.com> wrote:
I know this not the right place to post this, but I'll start here
Austin Ziegler wrote:
> Yes, let's take this to Ruby-Talk so we can all participate. Most of the
On 9/30/07, Charlie Savage <cfis@savagexi.com> wrote:
On 01/10/2007, Charlie Savage <cfis@savagexi.com> wrote:
On 10/3/07, Michal Suchanek <hramrach@centrum.cz> wrote:
Re: integer range literals in conditionals with -e option
Hi,
At Tue, 11 Sep 2007 05:19:44 +0900,
David Flanagan wrote in [ruby-core:12124]:
> There appears to be code to implement this in parse.y, but I can't make
> it work. (See the range_op method, which appears to insert a ==
> comparison with $. Which is surprising, since it ought to insert a ===
> comparison, I'd think. The code never seems to be triggered, though.)
It's not a comparison with range object, but comparisons with
the each edge values.
> Anyone know what the history and current status of this is? Is the code
> in parse.y vestigal, or is a regresson that this feature stopped
> working in 1.8?
Sorry, it was an unintentional side effect of r8425, which was
to fix SEGV caused by the race condition of a fixnum range
literal.
# I'm surprised that nobody noticed it over 2 years.
I thought of these alternatives:
a) delay the transformation of NODE_DOT till conditional
expressions take place (the following patch)
b) use Range#=== (as you thought), but this would alter the
semantics and make some inconsistency
c) eliminate the feature.
Index: parse.y
===================================================================
--- parse.y (revision 13426)
+++ parse.y (working copy)
@@ -125,4 +125,6 @@ static ID cur_mid = 0;
static int command_start = Qtrue;
+static NODE *deferred_nodes;
+
static NODE *cond();
static NODE *logop();
@@ -182,4 +184,6 @@ static void top_local_init();
static void top_local_setup();
+static void fixup_nodes();
+
#define RE_OPTION_ONCE 0x80
@@ -392,4 +396,5 @@ compstmt : stmts opt_terms
{
void_stmts($1);
+ fixup_nodes(&deferred_nodes);
$$ = $1;
}
@@ -1077,11 +1082,8 @@ arg : lhs '=' arg
value_expr($1);
value_expr($3);
+ $$ = NEW_DOT2($1, $3);
if (nd_type($1) == NODE_LIT && FIXNUM_P($1->nd_lit) &&
nd_type($3) == NODE_LIT && FIXNUM_P($3->nd_lit)) {
- $1->nd_lit = rb_range_new($1->nd_lit, $3->nd_lit, Qfalse);
- $$ = $1;
- }
- else {
- $$ = NEW_DOT2($1, $3);
+ deferred_nodes = list_append(deferred_nodes, $$);
}
}
@@ -1090,11 +1092,8 @@ arg : lhs '=' arg
value_expr($1);
value_expr($3);
+ $$ = NEW_DOT3($1, $3);
if (nd_type($1) == NODE_LIT && FIXNUM_P($1->nd_lit) &&
nd_type($3) == NODE_LIT && FIXNUM_P($3->nd_lit)) {
- $1->nd_lit = rb_range_new($1->nd_lit, $3->nd_lit, Qtrue);
- $$ = $1;
- }
- else {
- $$ = NEW_DOT3($1, $3);
+ deferred_nodes = list_append(deferred_nodes, $$);
}
}
@@ -2604,4 +2603,5 @@ yycompile(f, line)
ruby_current_node = 0;
ruby_sourcefile = rb_source_filename(f);
+ deferred_nodes = 0;
n = yyparse();
ruby_debug_lines = 0;
@@ -2615,4 +2615,5 @@ yycompile(f, line)
in_def = 0;
cur_mid = 0;
+ deferred_nodes = 0;
vp = ruby_dyna_vars;
@@ -5288,4 +5289,34 @@ warning_unless_e_option(node, str)
}
+static void
+fixup_nodes(rootnode)
+ NODE **rootnode;
+{
+ NODE *node, *next, *head;
+
+ for (node = *rootnode; node; node = next) {
+ enum node_type type;
+ VALUE val;
+
+ next = node->nd_next;
+ head = node->nd_head;
+ rb_gc_force_recycle((VALUE)node);
+ *rootnode = next;
+ switch (type = nd_type(head)) {
+ case NODE_DOT2:
+ case NODE_DOT3:
+ val = rb_range_new(head->nd_beg->nd_lit, head->nd_end->nd_lit,
+ type == NODE_DOT3 ? Qtrue : Qfalse);
+ rb_gc_force_recycle((VALUE)head->nd_beg);
+ rb_gc_force_recycle((VALUE)head->nd_end);
+ nd_set_type(head, NODE_LIT);
+ head->nd_lit = val;
+ break;
+ default:
+ break;
+ }
+ }
+}
+
static NODE *cond0();
@@ -5296,9 +5327,6 @@ range_op(node)
enum node_type type;
- if (!e_option_supplied()) return node;
if (node == 0) return 0;
- value_expr(node);
- node = cond0(node);
type = nd_type(node);
if (type == NODE_NEWLINE) {
@@ -5306,9 +5334,10 @@ range_op(node)
type = nd_type(node);
}
+ value_expr(node);
if (type == NODE_LIT && FIXNUM_P(node->nd_lit)) {
warn_unless_e_option(node, "integer literal in conditional range");
return call_op(node,tEQ,1,NEW_GVAR(rb_intern("$.")));
}
- return node;
+ return cond0(node);
}
@@ -5826,4 +5855,5 @@ rb_gc_mark_parser()
rb_gc_mark(lex_input);
rb_gc_mark((VALUE)lex_strterm);
+ rb_gc_mark((VALUE)deferred_nodes);
}
--
Nobu Nakada