[Ironruby-core] Some feedback on the compile/test process

Daniele Alessandri suppakilla at gmail.com
Thu Apr 16 11:14:16 EDT 2009


On Thu, Apr 16, 2009 at 12:35, Thibaut Barrère
<thibaut.barrere at gmail.com> wrote:

> I ran the whole irtests suite after applying the attached patch, based
> on what Daniel described.

You can find a slightly modified patch attached to this mail, this is
what I'm going to push on my repository. I think this one is better
than the first one as it removes the overhead of Convert.ToString and
it reduces the number of unboxing operations from object to double.

-- 
Daniele Alessandri
http://www.clorophilla.net/blog/
http://twitter.com/JoL1hAHN
-------------- next part --------------
diff --git a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs
index 6da6a3d..0d18961 100644
--- a/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs
+++ b/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs
@@ -621,22 +621,23 @@ namespace IronRuby.Builtins {
 
             if ((list = obj as List<object>) != null) {
                 return IListOps.Join(tosConversion, list, NewLine);
             } else if ((hash = obj as IDictionary<object, object>) != null) {
                 return IDictionaryOps.ToMutableString(tosConversion, hash);
             } else if (obj == null) {
                 return MutableString.Create("nil");
             } else if (obj is bool) {
                 return MutableString.Create((bool)obj ? "true" : "false");
             } else if (obj is double) {
-                var result = MutableString.Create(obj.ToString());
-                if ((double)(int)(double)obj == (double)obj) {
+                double value = (double)obj;
+                var result = MutableString.Create(value.ToString(System.Globalization.CultureInfo.InvariantCulture));
+                if ((double)(int)value == value) {
                     result.Append(".0");
                 }
                 return result;
             } else if ((str = obj as MutableString) != null) {
                 return str;
             } else {
                 return Protocols.ConvertToString(tosConversion, obj);
             }
         }
 


More information about the Ironruby-core mailing list