Forum: IronRuby Code Review: RubyReflectionCache

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Cb51033949ffccd982ae32c9f890f25a?d=identicon&s=25 Tomas Matousek (Guest)
on 2008-10-15 05:08
(Received via mailing list)
Attachment: RubyReflectionCache.diff (200 KB)
tfpt review "/shelveset:RubyReflectionCache;REDMOND\tomat"

  Implements profiling of Ruby methods: Given -profile on command line
the compiler instruments each Ruby method by code that captures the
current timestamp (in ticks) in method prologue and updates a global
variable associated with the method in its epilogue. At the end, it
dumps all values into "profile.log" file.

  Implements reflection cache: a static class Methods that contains
properties for each method that is emitted into IL. The properties
return MethodInfo for the method and cache it. The properties are
generated for methods in RubyOps marked by [Emitted] attribute. The
generator ("ClassInitGenerator") now refers to internal classes so it
needs to be signed and a friend assembly of IronRuby.dll

  Adds alias "gencache" that generates ReflectionCache.Generated.cs
file.

Tomas
F983f0c990cba2fe743ef62a975ec99c?d=identicon&s=25 Curt Hagenlocher (Guest)
on 2008-10-15 05:52
(Received via mailing list)
Nice!  Looks good.
irb
Cb51033949ffccd982ae32c9f890f25a?d=identicon&s=25 Tomas Matousek (Guest)
on 2008-10-15 08:09
(Received via mailing list)
We have recently implemented the last feature that prevented irb from
running, so here it is:


C:\M1\Merlin\External\Languages\Ruby\ruby-1.8.6\bin>rbr -X:Interpret irb
irb(main):001:0> 1+1
=> 2
irb(main):002:0> puts <<end
irb(main):003:0" hello world
irb(main):004:0" end
hello world
=> nil
irb(main):005:0> require 'mscorlib'
=> true
irb(main):006:0> include System::Collections::Generic
=> Object
irb(main):007:0> l = List[Fixnum].new
=> []
irb(main):008:0> l.add 1
=> nil
irb(main):009:0> l.add 2
=> nil
irb(main):010:0> l.add 3
=> nil
irb(main):011:0> l
=> [1, 2, 3]
irb(main):012:0> l.each_with_index { |x,i| puts "#{i} -> #{x}" }
0 -> 1
1 -> 2
2 -> 3
=> [1, 2, 3]
irb(main):013:0> exit


Tomas
This topic is locked and can not be replied to.