mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	forwardable.rb: reduce allocations in def_delegators
* lib/forwardable.rb (Forwardable::FILE_REGEXP): create regexp object outside sources for eval, to reduce allocations in def_delegators wrappers. //o option does not make each regexps shared. patch by tmm1 (Aman Gupta) in [ruby-core:53620] [Bug #8143]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39875 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									228b29a697
								
							
						
					
					
						commit
						cfe937b9b2
					
				
					 2 changed files with 13 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,10 @@
 | 
			
		|||
Fri Mar 22 17:48:34 2013  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* lib/forwardable.rb (Forwardable::FILE_REGEXP): create regexp object
 | 
			
		||||
	  outside sources for eval, to reduce allocations in def_delegators
 | 
			
		||||
	  wrappers.  //o option does not make each regexps shared.  patch by
 | 
			
		||||
	  tmm1 (Aman Gupta) in [ruby-core:53620] [Bug #8143].
 | 
			
		||||
 | 
			
		||||
Fri Mar 22 17:38:42 2013  Nobuyoshi Nakada  <nobu@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* load.c (rb_feature_p), vm_core.h (rb_vm_struct): turn
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -102,6 +102,8 @@ module Forwardable
 | 
			
		|||
  # Version of +forwardable.rb+
 | 
			
		||||
  FORWARDABLE_VERSION = "1.1.0"
 | 
			
		||||
 | 
			
		||||
  FILE_REGEXP = %r"#{Regexp.quote(__FILE__)}"
 | 
			
		||||
 | 
			
		||||
  @debug = nil
 | 
			
		||||
  class << self
 | 
			
		||||
    # If true, <tt>__FILE__</tt> will remain in the backtrace in the event an
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +172,7 @@ module Forwardable
 | 
			
		|||
        begin
 | 
			
		||||
          #{accessor}.__send__(:#{method}, *args, &block)
 | 
			
		||||
        rescue Exception
 | 
			
		||||
          $@.delete_if{|s| %r"#{Regexp.quote(__FILE__)}"o =~ s} unless Forwardable::debug
 | 
			
		||||
          $@.delete_if{|s| Forwardable::FILE_REGEXP =~ s} unless Forwardable::debug
 | 
			
		||||
          ::Kernel::raise
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			@ -203,14 +205,14 @@ end
 | 
			
		|||
#       puts "serviced!"
 | 
			
		||||
#     end
 | 
			
		||||
#   end
 | 
			
		||||
#   
 | 
			
		||||
#
 | 
			
		||||
#   module Facade
 | 
			
		||||
#     extend SingleForwardable
 | 
			
		||||
#     def_delegator :Implementation, :service
 | 
			
		||||
#   end
 | 
			
		||||
#
 | 
			
		||||
#   Facade.service #=> serviced!
 | 
			
		||||
#   
 | 
			
		||||
#
 | 
			
		||||
# If you want to use both Forwardable and SingleForwardable, you can
 | 
			
		||||
# use methods def_instance_delegator and def_single_delegator, etc.
 | 
			
		||||
module SingleForwardable
 | 
			
		||||
| 
						 | 
				
			
			@ -262,7 +264,7 @@ module SingleForwardable
 | 
			
		|||
        begin
 | 
			
		||||
          #{accessor}.__send__(:#{method}, *args, &block)
 | 
			
		||||
        rescue Exception
 | 
			
		||||
          $@.delete_if{|s| %r"#{Regexp.quote(__FILE__)}"o =~ s} unless Forwardable::debug
 | 
			
		||||
          $@.delete_if{|s| Forwardable::FILE_REGEXP =~ s} unless Forwardable::debug
 | 
			
		||||
          ::Kernel::raise
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue