[#65451] [ruby-trunk - Feature #10333] [PATCH 3/1] optimize: "yoda literal" == string — ko1@...

Issue #10333 has been updated by Koichi Sasada.

9 messages 2014/10/07

[ruby-core:65775] Re: [ruby-trunk - Feature #10333] [PATCH 3/1] optimize: "yoda literal" == string

From: Eric Wong <normalperson@...>
Date: 2014-10-18 03:02:15 UTC
List: ruby-core #65775
Eric Wong <normalperson@yhbt.net> wrote:
> For some method names (include?/delete/key?); I see them often used with
> both core (Array/Hash) and non-core (Set/GDBM) classes.
> We need to be careful with common method names and string literal.
>
> Maybe we may use dynamic instruction rewriting if we detect uses on
> non-core classes and dynamically rewrite opt_str_lit back to putstring.

I think the following solves the problem of improper optimization to
applied to non-core classes:

	http://bogomips.org/ruby.git/patch?id=ab08e19d7a70a0fe

We could even expand the idea for existing opt_* insns.

Having the recv_info array stick around indefinitely might get
wasteful, though.  I suppose we could walk iseq->mark_ary to
pluck it out.

> Note: opt_str_lit has the same insn length as putstring;
> we may rewrite iseq->iseq at runtime.

I'll still try to DRY it up more to make testing easier.

Full diff: http://80x24.org/spew/m/opt-str-lit-v3%40m.txt
(broken out: "opt_str_lit-3" branch on git://bogomips.org/ruby.git)

In This Thread

Prev Next