1
0
Fork 0
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:
nobu 2013-03-22 08:48:44 +00:00
parent 228b29a697
commit cfe937b9b2
2 changed files with 13 additions and 4 deletions

View file

@ -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

View file

@ -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