Such feature would incur a significant performance hit to all applications. If 
you really need to get all instances of some class you can e.g. monkey-patch 
its initialize method and store the instances in a (weak) list. Although we 
could provide a command line option that would allow us to match MRI's 
semantics of each_object precisely, I don't see a strong use case for such 
feature. All use cases I have seen so far could be implemented in much more 
efficient way that doesn't rely on ObjectSpace.

Tomas

From: ironruby-core-boun...@rubyforge.org 
[mailto:ironruby-core-boun...@rubyforge.org] On Behalf Of Shay Friedman
Sent: Sunday, October 25, 2009 10:10 PM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Something's wrong with ObjectSpace

I don't have a specific need for that right now. However, it does sound logical 
to me that you'd want to get all the strings in your application. It becomes 
even more reasonable when you run each_object with Thread, to find out all 
defined. This doesn't work as well.

But, this is not the most used class out there so I IronRuby will continue to 
ROCK despite that.

Thanks for the reply Tomas,
Shay.
On Mon, Oct 26, 2009 at 1:00 AM, Tomas Matousek 
<tomas.matou...@microsoft.com<mailto:tomas.matou...@microsoft.com>> wrote:
This is by design. We don't support enumerating objects that are not modules. A 
string instance is not a module.
Why do you need to enumerate all allocated strings?

Tomas

-----Original Message-----
From: 
ironruby-core-boun...@rubyforge.org<mailto:ironruby-core-boun...@rubyforge.org> 
[mailto:ironruby-core-boun...@rubyforge.org<mailto:ironruby-core-boun...@rubyforge.org>]
 On Behalf Of Shay Friedman
Sent: Sunday, October 25, 2009 1:26 PM
To: ironruby-core
Subject: [Ironruby-core] Something's wrong with ObjectSpace

Hey,

The next REPL session works fine in MRI but in IR it throws an error:
>>> str = "sss"
=> "sss"
>>> ObjectSpace.each_object(String) { |x| puts x }
d:\IronRuby\GitRepository2\ironruby\Merlin\Main\Languages\Ruby\Libraries.LCA_RESTRICTED\Builtins\ObjectSpace.cs:37:in
`each_object': each_object only supported for objects of type Class or Module 
(RuntimeError)
       from :0

I looked a bit into it and IR identifies String as a descendant of Object and 
not Module as it expects. This problem makes it impossible to run each_object 
on Numeric as well (and I guess more types that are mapped directly to CLR 
types).

Should I create a bug?

Thanks!
Shay.
--
--------------------------------------------------
Shay Friedman
Author of IronRuby Unleashed
http://www.IronShay.com
Follow me: http://twitter.com/ironshay
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org<mailto:Ironruby-core@rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core

_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org<mailto:Ironruby-core@rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core



--
--------------------------------------------------
Shay Friedman
Author of IronRuby Unleashed
http://www.IronShay.com
Follow me: http://twitter.com/ironshay
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to