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:
 | 
			
		||||
module Forwardable
 | 
			
		||||
  FILTER_EXCEPTION = ""
 | 
			
		||||
 | 
			
		||||
  def self._valid_method?(method)
 | 
			
		||||
    iseq = RubyVM::InstructionSequence.compile("().#{method}", nil, nil, 0, false)
 | 
			
		||||
  rescue SyntaxError
 | 
			
		||||
| 
						 | 
				
			
			@ -12,8 +10,7 @@ module Forwardable
 | 
			
		|||
 | 
			
		||||
  def self._compile_method(src, file, line)
 | 
			
		||||
    RubyVM::InstructionSequence.compile(src, file, file, line,
 | 
			
		||||
               trace_instruction: false,
 | 
			
		||||
               tailcall_optimization: true)
 | 
			
		||||
               trace_instruction: false)
 | 
			
		||||
      .eval
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -222,7 +222,7 @@ module Forwardable
 | 
			
		|||
          #{pre}
 | 
			
		||||
          begin
 | 
			
		||||
            #{accessor}
 | 
			
		||||
          end#{method_call}#{FILTER_EXCEPTION}
 | 
			
		||||
          end#{method_call}
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,5 @@
 | 
			
		|||
# :stopdoc:
 | 
			
		||||
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)
 | 
			
		||||
    catch {|tag|
 | 
			
		||||
      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 = {
 | 
			
		||||
	TRUE, /* int inline_const_cache; */
 | 
			
		||||
	TRUE, /* int peephole_optimization; */
 | 
			
		||||
	TRUE, /* int tailcall_optimization; */
 | 
			
		||||
	FALSE,/* int tailcall_optimization; */
 | 
			
		||||
	TRUE, /* int specialized_instruction; */
 | 
			
		||||
	TRUE, /* int operands_unification; */
 | 
			
		||||
	TRUE, /* int instructions_unification; */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue