mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Disable tailcall optimization [Bug #15303]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c33e716d6d
commit
241dced625
4 changed files with 3 additions and 14 deletions
|
@ -1,7 +1,5 @@
|
||||||
# :stopdoc:
|
# :stopdoc:
|
||||||
module Forwardable
|
module Forwardable
|
||||||
FILTER_EXCEPTION = ""
|
|
||||||
|
|
||||||
def self._valid_method?(method)
|
def self._valid_method?(method)
|
||||||
iseq = RubyVM::InstructionSequence.compile("().#{method}", nil, nil, 0, false)
|
iseq = RubyVM::InstructionSequence.compile("().#{method}", nil, nil, 0, false)
|
||||||
rescue SyntaxError
|
rescue SyntaxError
|
||||||
|
@ -12,8 +10,7 @@ module Forwardable
|
||||||
|
|
||||||
def self._compile_method(src, file, line)
|
def self._compile_method(src, file, line)
|
||||||
RubyVM::InstructionSequence.compile(src, file, file, line,
|
RubyVM::InstructionSequence.compile(src, file, file, line,
|
||||||
trace_instruction: false,
|
trace_instruction: false)
|
||||||
tailcall_optimization: true)
|
|
||||||
.eval
|
.eval
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -222,7 +222,7 @@ module Forwardable
|
||||||
#{pre}
|
#{pre}
|
||||||
begin
|
begin
|
||||||
#{accessor}
|
#{accessor}
|
||||||
end#{method_call}#{FILTER_EXCEPTION}
|
end#{method_call}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
|
@ -1,13 +1,5 @@
|
||||||
# :stopdoc:
|
# :stopdoc:
|
||||||
module Forwardable
|
module Forwardable
|
||||||
FILE_REGEXP = %r"#{Regexp.quote(File.dirname(__FILE__))}"
|
|
||||||
FILTER_EXCEPTION = <<-'END'
|
|
||||||
|
|
||||||
rescue ::Exception
|
|
||||||
$@.delete_if {|s| ::Forwardable::FILE_REGEXP =~ s} unless ::Forwardable::debug
|
|
||||||
::Kernel::raise
|
|
||||||
END
|
|
||||||
|
|
||||||
def self._valid_method?(method)
|
def self._valid_method?(method)
|
||||||
catch {|tag|
|
catch {|tag|
|
||||||
eval("BEGIN{throw tag}; ().#{method}", binding, __FILE__, __LINE__)
|
eval("BEGIN{throw tag}; ().#{method}", binding, __FILE__, __LINE__)
|
||||||
|
|
|
@ -148,7 +148,7 @@ prelude_eval(VALUE code, VALUE name, int line)
|
||||||
static const rb_compile_option_t optimization = {
|
static const rb_compile_option_t optimization = {
|
||||||
TRUE, /* int inline_const_cache; */
|
TRUE, /* int inline_const_cache; */
|
||||||
TRUE, /* int peephole_optimization; */
|
TRUE, /* int peephole_optimization; */
|
||||||
TRUE, /* int tailcall_optimization; */
|
FALSE,/* int tailcall_optimization; */
|
||||||
TRUE, /* int specialized_instruction; */
|
TRUE, /* int specialized_instruction; */
|
||||||
TRUE, /* int operands_unification; */
|
TRUE, /* int operands_unification; */
|
||||||
TRUE, /* int instructions_unification; */
|
TRUE, /* int instructions_unification; */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue