[Mono-bugs] [Bug 486408] New: Optimize does not work for long jump

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Mar 18 08:12:49 EDT 2009


https://bugzilla.novell.com/show_bug.cgi?id=486408


           Summary: Optimize does not work for long jump
    Classification: Mono
           Product: Mono: Class Libraries
           Version: unspecified
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Cecil
        AssignedTo: jbevain at novell.com
        ReportedBy: msafar at novell.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


Optimize does not work in all cases, here is one example

Jump at IL_0094 should be optimized to br.s but it's not



   IL_0088:  ldloc.2
    IL_0089:  castclass  System.String
    IL_008e:  call       string
System.Environment::ExpandEnvironmentVariables(string)
    IL_0093:  stloc.2
    IL_0094:  br         IL_0108

    IL_0099:  ldloc.0
    IL_009a:  ldc.i4.4
    IL_009b:  bne.un.s   IL_00be

    IL_009d:  ldc.i4.0
    IL_009e:  stloc.s    V_7
    IL_00a0:  ldloc.3
    IL_00a1:  ldarg.2
    IL_00a2:  ldsfld     native int System.IntPtr::Zero
    IL_00a7:  ldloca.s   V_0
    IL_00a9:  ldloca.s   V_7
    IL_00ab:  ldloca.s   V_1
    IL_00ad:  call       int32
Microsoft.Win32.Win32RegistryApi::RegQueryValueEx(native int,
                                                                               
 string,
                                                                               
 native int,
                                                                               
 valuetype Microsoft.Win32.RegistryValueKind&,
                                                                               
 int32&,
                                                                               
 int32&)
    IL_00b2:  stloc.s    V_4
    IL_00b4:  ldloc.s    V_7
    IL_00b6:  box        System.Int32
    IL_00bb:  stloc.2
    IL_00bc:  br.s       IL_0108

    IL_00be:  ldloc.0
    IL_00bf:  ldc.i4.3
    IL_00c0:  bne.un.s   IL_00d5

    IL_00c2:  ldarg.0
    IL_00c3:  ldarg.1
    IL_00c4:  ldarg.2
    IL_00c5:  ldloc.0
    IL_00c6:  ldloca.s   V_8
    IL_00c8:  ldloc.1
    IL_00c9:  call       instance int32
Microsoft.Win32.Win32RegistryApi::GetBinaryValue(class
Microsoft.Win32.RegistryKey,
                                                                               
         string,
                                                                               
         valuetype Microsoft.Win32.RegistryValueKind,
                                                                               
         uint8[]&,
                                                                               
         int32)
    IL_00ce:  stloc.s    V_4
    IL_00d0:  ldloc.s    V_8
    IL_00d2:  stloc.2
    IL_00d3:  br.s       IL_0108

    IL_00d5:  ldloc.0
    IL_00d6:  ldc.i4.7
    IL_00d7:  bne.un.s   IL_0102

    IL_00d9:  ldnull
    IL_00da:  stloc.2
    IL_00db:  ldarg.0
    IL_00dc:  ldarg.1
    IL_00dd:  ldarg.2
    IL_00de:  ldloc.0
    IL_00df:  ldloca.s   V_9
    IL_00e1:  ldloc.1
    IL_00e2:  call       instance int32
Microsoft.Win32.Win32RegistryApi::GetBinaryValue(class
Microsoft.Win32.RegistryKey,
                                                                               
         string,
                                                                               
         valuetype Microsoft.Win32.RegistryValueKind,
                                                                               
         uint8[]&,
                                                                               
         int32)
    IL_00e7:  stloc.s    V_4
    IL_00e9:  ldloc.s    V_4
    IL_00eb:  brtrue.s   IL_0100

    IL_00ed:  ldloc.s    V_9
    IL_00ef:  call       string
Microsoft.Win32.RegistryKey::DecodeString(uint8[])
    IL_00f4:  ldc.i4.1
    IL_00f5:  newarr     System.Char
    IL_00fa:  callvirt   instance string[] System.String::Split(char[])
    IL_00ff:  stloc.2
    IL_0100:  br.s       IL_0108

    IL_0102:  newobj     instance void System.SystemException::.ctor()
    IL_0107:  throw

    IL_0108:  ldloc.s    V_4
    IL_010a:  brfalse.s  IL_0114

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list