Forum: IronRuby Code Review: RubyReflectionCache

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and 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

F983f0c990cba2fe743ef62a975ec99c?d=identicon&s=25 Curt Hagenlocher (Guest)
on 2008-10-15 05:52
(Received via mailing list)
Nice!  Looks good.
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

This topic is locked and can not be replied to.