1) monodis output of trunk Boo.Lang.Useful.dll (generated by MS.NET) :
===
.method private virtual hidebysig newslot
instance default class [mscorlib]System.Collections.IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator () cil managed
{
// Method begins at RVA 0x353c
.override class [mscorlib]System.Collections.IDictionary::GetEnumerator
// Code size 25 (0x19)
.maxstack 3
.locals init (
class [mscorlib]System.Collections.IDictionaryEnumerator V_0)
IL_0000: ldarg.0
IL_0001: ldfld class Boo.Lang.Useful.Collections.Cache/LruItem Boo.Lang.Useful.Collections.Cache::_head
IL_0006: callvirt instance class CompilerGenerated.Generator___generator16 class Boo.Lang.Useful.Collections.Cache/LruItem::Generator()
IL_000b: newobj instance void class Boo.Lang.Useful.Collections.Cache/CacheEnumerator::.ctor(class [mscorlib]System.Collections.IEnumerable)
IL_0010: stloc.0
IL_0011: br IL_0017
IL_0016: nop
IL_0017: ldloc.0
IL_0018: ret
} // end of method Cache::System.Collections.IDictionary.GetEnumerator
2) monodis output of Boo.Lang.Useful.dll (generated by mono) :
====
.method private virtual hidebysig newslot
instance default class [mscorlib]System.Collections.IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator () cil managed
{
// Method begins at RVA 0x34ac
.override class [mscorlib]System.Collections.IDictionary::GetEnumerator
// Code size 25 (0x19)
.maxstack 4
.locals init (
class [mscorlib]System.Collections.IDictionaryEnumerator V_0)
IL_0000: ldarg.0
IL_0001: ldfld class Boo.Lang.Useful.Collections.Cache/LruItem Boo.Lang.Useful.Collections.Cache::_head
-
- (process:16769): WARNING **: The class Boo.Lang.AbstractGenerator`1 could not be loaded, used in Boo.Lang, Version=1.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67
Erreur de segmentation (core dumped)
3) monodis output of trunk Boo.Lang.dll (generated by MS.NET):
===
//method AbstractGenerator::GetEnumerator
.method public virtual hidebysig newslot abstract
instance default class [mscorlib]System.Collections.IEnumerator GetEnumerator () cil managed
{
// Method begins at RVA 0x0
} // end of method AbstractGenerator::GetEnumerator
4) monodis output of Boo.Lang.dll (generated by mono gmcs) :
===
// method AbstractGenerator`1::System.Collections.IEnumerable.GetEnumerator
.method private final virtual hidebysig newslot
instance default class [mscorlib]System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () cil managed
{
// Method begins at RVA 0x4ccc
.override class [mscorlib]System.Collections.IEnumerable::GetEnumerator
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class Boo.Lang.AbstractGenerator`1<!0>::GetEnumerator()
IL_0006: ret
} // end of method AbstractGenerator`1::System.Collections.IEnumerable.GetEnumerator
// method line 147
.method public virtual hidebysig newslot abstract
instance default class [mscorlib]System.Collections.Generic.IEnumerator`1<!T> GetEnumerator () cil managed
{ // Method begins at RVA 0x0 } } // end of method AbstractGenerator`1::GetEnumerator
The big difference between (3) and (4) is surprising, maybe the problem is coming from here?
Marked for 0.7.7.