mirror of https://github.com/icsharpcode/ILSpy.git
Commit Graph
Select branches
Hide Pull Requests
ast-source-generator
christophwille/membench
copilot/add-field-keyword-auto-properties
custom-signature-decoder-comparer
deconstruction-fixes
enumext
fix/3465
fix/3518
gh-pages
issue1638
master
mdnupdate
natural-type-lambdas-methods
nu/2512
null-coalescing-assignment
release/6.2
release/7.1
release/7.2
release/8.1
stash/beautify-enum-member-declarations
stash/dynamic-await
switch-expression-default-case
#1
#10
#100
#100
#1000
#1001
#1002
#1002
#101
#1010
#1012
#102
#1029
#1030
#1033
#1033
#1039
#1040
#105
#1051
#1058
#106
#1066
#1066
#1072
#1072
#1087
#1096
#1096
#1108
#1119
#112
#1121
#1124
#1129
#1134
#1143
#115
#1165
#1167
#1176
#118
#1198
#1213
#1218
#1218
#122
#1236
#124
#1243
#1246
#125
#1253
#1258
#1274
#1274
#1276
#1277
#1278
#1285
#1289
#129
#1295
#1296
#1299
#130
#1303
#1305
#131
#1317
#132
#1322
#1324
#133
#1347
#1350
#136
#1360
#1363
#137
#137
#138
#139
#1397
#1405
#1409
#1410
#1413
#1417
#1419
#142
#1420
#1421
#1423
#1425
#143
#143
#1432
#144
#1440
#1464
#147
#1471
#1476
#150
#1505
#1510
#1515
#1522
#155
#155
#1550
#1556
#1557
#1561
#1586
#1596
#1600
#1608
#1612
#1633
#1641
#1649
#1652
#1654
#166
#166
#1673
#1679
#1686
#1690
#1694
#170
#170
#1704
#1707
#1708
#1710
#1713
#1714
#1716
#1717
#172
#172
#1723
#1725
#1726
#1727
#1728
#1730
#1735
#1736
#1738
#1739
#1740
#1746
#1748
#1751
#1754
#1763
#1769
#1770
#1790
#1791
#1792
#1797
#1801
#182
#182
#1820
#1825
#1827
#1835
#1838
#1843
#1846
#1847
#1850
#1855
#1857
#1866
#1872
#1880
#1891
#1894
#1897
#1899
#191
#191
#1914
#1920
#1930
#1934
#1937
#1939
#194
#194
#1941
#1951
#1953
#196
#196
#1967
#1968
#1969
#1972
#1974
#1979
#1984
#1986
#1987
#1991
#1994
#1996
#200
#200
#2005
#201
#2016
#2028
#2030
#2031
#2043
#2044
#2045
#2046
#2047
#205
#205
#2055
#2063
#2066
#2067
#2069
#2077
#2081
#2082
#2087
#2095
#2113
#2114
#2119
#2126
#2134
#2135
#2145
#2147
#2150
#2153
#2157
#2160
#2167
#2176
#2178
#2179
#2186
#219
#219
#2191
#2193
#2194
#2201
#2203
#2210
#2211
#2212
#2214
#2218
#2221
#2224
#2227
#2229
#2235
#2238
#2240
#2247
#2251
#226
#226
#2276
#2279
#2281
#2289
#2301
#2308
#2309
#2315
#2316
#2320
#2323
#2325
#2326
#2327
#2333
#2334
#2335
#234
#234
#2341
#2343
#2344
#2345
#2346
#2347
#2350
#2352
#2355
#2357
#2360
#2364
#2369
#2373
#2375
#2376
#2377
#2385
#2386
#2387
#240
#240
#2408
#2412
#2418
#242
#242
#2423
#2425
#2426
#2427
#2431
#2447
#2451
#2454
#2461
#2463
#2465
#2470
#2471
#2476
#2479
#2485
#2489
#2491
#2492
#2494
#2496
#2499
#2509
#2519
#252
#252
#2521
#2523
#2525
#2526
#2529
#2536
#254
#254
#2542
#2546
#2549
#2553
#2554
#2555
#2558
#2560
#2566
#2567
#2568
#2573
#2578
#258
#258
#2585
#2586
#2589
#259
#259
#2595
#260
#260
#2606
#2608
#2616
#262
#262
#2626
#263
#263
#2636
#2639
#2642
#2643
#2649
#2650
#2656
#2660
#2665
#2667
#2670
#2677
#2678
#2679
#2684
#2687
#2693
#2696
#2697
#2698
#2700
#2703
#2708
#2709
#2711
#2713
#2723
#2726
#2729
#2731
#2737
#2738
#2739
#2740
#2743
#2747
#2749
#275
#275
#2752
#2754
#2755
#2756
#276
#276
#2760
#2761
#2762
#2765
#2766
#2767
#2768
#2769
#2774
#2776
#2785
#2789
#2792
#2794
#2795
#2798
#2799
#280
#280
#2802
#2804
#2805
#2810
#2815
#2817
#2828
#283
#283
#2832
#2833
#2835
#2839
#2840
#2841
#2843
#2844
#2845
#2846
#2849
#2849
#285
#285
#2852
#2853
#2854
#2855
#2856
#2857
#286
#286
#2863
#2867
#2868
#2869
#2871
#2873
#2874
#2877
#288
#288
#289
#289
#2890
#2895
#2903
#2906
#2911
#2912
#2931
#2934
#2935
#2936
#2938
#2939
#2944
#2947
#2948
#2952
#2953
#2955
#2959
#2960
#2961
#2966
#2969
#297
#297
#2970
#2971
#2972
#2974
#2976
#2980
#2990
#2991
#2992
#2993
#2994
#2998
#3003
#3005
#3009
#301
#301
#3012
#3013
#3015
#3016
#3017
#3018
#302
#302
#3021
#3024
#3026
#3027
#3029
#3030
#3032
#3035
#3040
#3041
#3042
#3045
#3048
#3049
#3050
#3052
#3058
#306
#306
#3063
#307
#307
#3076
#3077
#308
#308
#3081
#3081
#3082
#3088
#309
#309
#3092
#310
#310
#3106
#311
#311
#3110
#3111
#3114
#3119
#312
#312
#3120
#3121
#3122
#3124
#3125
#3126
#313
#313
#3131
#3132
#3135
#3138
#3139
#314
#314
#3140
#3144
#3146
#3147
#3149
#3164
#3178
#3183
#3184
#3186
#3187
#3191
#3195
#3196
#3198
#3198
#320
#320
#3201
#3203
#3205
#3212
#3215
#3217
#3219
#323
#323
#3231
#3234
#3235
#3238
#3239
#3240
#3243
#3244
#3245
#3248
#3250
#3252
#3257
#3265
#3266
#3271
#3274
#3276
#328
#328
#3280
#3283
#3285
#3287
#3287
#3291
#3292
#3294
#3295
#3297
#3298
#3299
#3302
#3307
#3308
#3314
#3324
#3325
#3328
#3334
#3335
#3336
#3338
#3340
#3346
#3348
#3350
#3356
#3357
#3358
#3359
#3360
#3362
#3365
#3366
#3368
#3369
#3370
#3371
#3373
#3380
#3387
#3389
#3391
#3394
#3398
#3403
#3404
#3404
#3405
#341
#341
#3410
#3413
#3416
#3417
#3418
#3422
#3425
#3427
#3435
#344
#344
#3440
#3443
#3444
#3449
#345
#345
#3455
#3456
#3459
#3463
#3467
#3470
#3471
#3472
#3473
#3474
#348
#348
#3481
#3484
#3487
#3488
#3490
#3493
#3497
#3500
#3501
#3502
#3503
#3504
#3505
#3506
#3507
#3508
#3511
#3514
#3517
#3519
#3523
#3523
#3527
#3529
#3530
#3532
#3533
#3534
#3535
#3536
#3537
#3538
#3540
#3544
#3546
#3550
#3551
#3553
#3554
#3555
#3556
#3560
#3572
#3579
#3580
#3581
#3583
#3586
#3587
#3588
#3589
#3591
#3592
#3592
#3594
#3595
#3596
#3598
#3599
#3604
#3606
#3609
#3613
#3613
#3614
#3619
#3620
#3622
#3623
#3625
#3629
#3630
#3631
#3634
#3635
#3638
#3639
#3640
#3640
#3642
#3642
#3644
#3647
#3648
#368
#368
#37
#383
#383
#384
#384
#394
#394
#396
#396
#398
#398
#40
#401
#401
#402
#402
#403
#403
#404
#411
#411
#413
#413
#415
#420
#422
#423
#426
#426
#428
#431
#431
#433
#433
#443
#449
#450
#451
#452
#453
#454
#455
#462
#463
#463
#467
#469
#469
#476
#477
#478
#478
#481
#484
#484
#486
#487
#488
#488
#495
#501
#503
#503
#512
#513
#514
#515
#516
#52
#521
#523
#525
#533
#535
#539
#546
#550
#552
#568
#569
#569
#570
#576
#576
#581
#586
#586
#587
#596
#596
#597
#601
#601
#604
#604
#608
#613
#618
#618
#620
#620
#621
#621
#624
#625
#626
#626
#632
#632
#636
#636
#640
#640
#642
#651
#651
#656
#658
#658
#663
#667
#667
#668
#671
#672
#674
#674
#676
#681
#687
#687
#689
#693
#693
#695
#697
#70
#703
#706
#707
#711
#720
#720
#724
#724
#727
#727
#728
#728
#732
#732
#734
#734
#738
#738
#739
#743
#756
#757
#758
#758
#767
#767
#777
#777
#786
#786
#791
#791
#794
#794
#800
#802
#802
#813
#813
#818
#826
#826
#832
#832
#833
#835
#835
#836
#844
#847
#848
#850
#863
#870
#870
#871
#873
#873
#875
#876
#876
#877
#879
#879
#881
#881
#886
#887
#892
#892
#897
#900
#903
#904
#909
#909
#910
#923
#924
#925
#925
#927
#940
#940
#946
#96
#960
#976
#987
#988
#992
#998
#998
1.0-Beta
1.0-M1
1.0-M2
1.0-M3
1.0.0
2.0.0
2.1
2.2
2.3
2.3.1
3.0-Preview1
3.0-Preview2
3.0.2
v10.0-preview1
v10.0-preview2
v2.3.2
v2.4
v3.0
v3.0-beta1
v3.0-beta2
v3.0-beta2a
v3.0-beta3
v3.0-beta4
v3.0.1
v3.1-beta1
v3.1-final
v3.1-rc
v3.2-beta
v3.2-rc
v3.2.0
v4.0
v4.0-alpha1
v4.0-beta1
v4.0-beta2
v4.0-beta3
v4.0-rc1
v4.0-rc2
v4.0.1
v5.0
v5.0-preview1
v5.0-preview2
v5.0-preview3
v5.0-preview4
v5.0-rc1
v5.0.1
v5.0.2
v6.0
v6.0-preview1
v6.0-preview2
v6.0-preview3
v6.0-preview4
v6.0-rc1
v6.1
v6.2
v6.2-preview1
v6.2-preview2
v6.2.1
v7.0
v7.0-preview1
v7.0-preview2
v7.0-preview3
v7.0-rc1
v7.0-rc2
v7.1
v7.2
v7.2-preview1
v7.2-preview2
v7.2-preview3
v7.2-preview4
v7.2-rc
v7.2.1
v8.0
v8.0-preview1
v8.0-preview2
v8.0-preview3
v8.0-preview4
v8.0-rc1
v8.1
v8.1.1
v8.2
v9.0
v9.0-preview1
v9.0-preview2
v9.0-preview3
v9.0-rc
v9.1
Select branches
Hide Pull Requests
ast-source-generator
christophwille/membench
copilot/add-field-keyword-auto-properties
custom-signature-decoder-comparer
deconstruction-fixes
enumext
fix/3465
fix/3518
gh-pages
issue1638
master
mdnupdate
natural-type-lambdas-methods
nu/2512
null-coalescing-assignment
release/6.2
release/7.1
release/7.2
release/8.1
stash/beautify-enum-member-declarations
stash/dynamic-await
switch-expression-default-case
#1
#10
#100
#100
#1000
#1001
#1002
#1002
#101
#1010
#1012
#102
#1029
#1030
#1033
#1033
#1039
#1040
#105
#1051
#1058
#106
#1066
#1066
#1072
#1072
#1087
#1096
#1096
#1108
#1119
#112
#1121
#1124
#1129
#1134
#1143
#115
#1165
#1167
#1176
#118
#1198
#1213
#1218
#1218
#122
#1236
#124
#1243
#1246
#125
#1253
#1258
#1274
#1274
#1276
#1277
#1278
#1285
#1289
#129
#1295
#1296
#1299
#130
#1303
#1305
#131
#1317
#132
#1322
#1324
#133
#1347
#1350
#136
#1360
#1363
#137
#137
#138
#139
#1397
#1405
#1409
#1410
#1413
#1417
#1419
#142
#1420
#1421
#1423
#1425
#143
#143
#1432
#144
#1440
#1464
#147
#1471
#1476
#150
#1505
#1510
#1515
#1522
#155
#155
#1550
#1556
#1557
#1561
#1586
#1596
#1600
#1608
#1612
#1633
#1641
#1649
#1652
#1654
#166
#166
#1673
#1679
#1686
#1690
#1694
#170
#170
#1704
#1707
#1708
#1710
#1713
#1714
#1716
#1717
#172
#172
#1723
#1725
#1726
#1727
#1728
#1730
#1735
#1736
#1738
#1739
#1740
#1746
#1748
#1751
#1754
#1763
#1769
#1770
#1790
#1791
#1792
#1797
#1801
#182
#182
#1820
#1825
#1827
#1835
#1838
#1843
#1846
#1847
#1850
#1855
#1857
#1866
#1872
#1880
#1891
#1894
#1897
#1899
#191
#191
#1914
#1920
#1930
#1934
#1937
#1939
#194
#194
#1941
#1951
#1953
#196
#196
#1967
#1968
#1969
#1972
#1974
#1979
#1984
#1986
#1987
#1991
#1994
#1996
#200
#200
#2005
#201
#2016
#2028
#2030
#2031
#2043
#2044
#2045
#2046
#2047
#205
#205
#2055
#2063
#2066
#2067
#2069
#2077
#2081
#2082
#2087
#2095
#2113
#2114
#2119
#2126
#2134
#2135
#2145
#2147
#2150
#2153
#2157
#2160
#2167
#2176
#2178
#2179
#2186
#219
#219
#2191
#2193
#2194
#2201
#2203
#2210
#2211
#2212
#2214
#2218
#2221
#2224
#2227
#2229
#2235
#2238
#2240
#2247
#2251
#226
#226
#2276
#2279
#2281
#2289
#2301
#2308
#2309
#2315
#2316
#2320
#2323
#2325
#2326
#2327
#2333
#2334
#2335
#234
#234
#2341
#2343
#2344
#2345
#2346
#2347
#2350
#2352
#2355
#2357
#2360
#2364
#2369
#2373
#2375
#2376
#2377
#2385
#2386
#2387
#240
#240
#2408
#2412
#2418
#242
#242
#2423
#2425
#2426
#2427
#2431
#2447
#2451
#2454
#2461
#2463
#2465
#2470
#2471
#2476
#2479
#2485
#2489
#2491
#2492
#2494
#2496
#2499
#2509
#2519
#252
#252
#2521
#2523
#2525
#2526
#2529
#2536
#254
#254
#2542
#2546
#2549
#2553
#2554
#2555
#2558
#2560
#2566
#2567
#2568
#2573
#2578
#258
#258
#2585
#2586
#2589
#259
#259
#2595
#260
#260
#2606
#2608
#2616
#262
#262
#2626
#263
#263
#2636
#2639
#2642
#2643
#2649
#2650
#2656
#2660
#2665
#2667
#2670
#2677
#2678
#2679
#2684
#2687
#2693
#2696
#2697
#2698
#2700
#2703
#2708
#2709
#2711
#2713
#2723
#2726
#2729
#2731
#2737
#2738
#2739
#2740
#2743
#2747
#2749
#275
#275
#2752
#2754
#2755
#2756
#276
#276
#2760
#2761
#2762
#2765
#2766
#2767
#2768
#2769
#2774
#2776
#2785
#2789
#2792
#2794
#2795
#2798
#2799
#280
#280
#2802
#2804
#2805
#2810
#2815
#2817
#2828
#283
#283
#2832
#2833
#2835
#2839
#2840
#2841
#2843
#2844
#2845
#2846
#2849
#2849
#285
#285
#2852
#2853
#2854
#2855
#2856
#2857
#286
#286
#2863
#2867
#2868
#2869
#2871
#2873
#2874
#2877
#288
#288
#289
#289
#2890
#2895
#2903
#2906
#2911
#2912
#2931
#2934
#2935
#2936
#2938
#2939
#2944
#2947
#2948
#2952
#2953
#2955
#2959
#2960
#2961
#2966
#2969
#297
#297
#2970
#2971
#2972
#2974
#2976
#2980
#2990
#2991
#2992
#2993
#2994
#2998
#3003
#3005
#3009
#301
#301
#3012
#3013
#3015
#3016
#3017
#3018
#302
#302
#3021
#3024
#3026
#3027
#3029
#3030
#3032
#3035
#3040
#3041
#3042
#3045
#3048
#3049
#3050
#3052
#3058
#306
#306
#3063
#307
#307
#3076
#3077
#308
#308
#3081
#3081
#3082
#3088
#309
#309
#3092
#310
#310
#3106
#311
#311
#3110
#3111
#3114
#3119
#312
#312
#3120
#3121
#3122
#3124
#3125
#3126
#313
#313
#3131
#3132
#3135
#3138
#3139
#314
#314
#3140
#3144
#3146
#3147
#3149
#3164
#3178
#3183
#3184
#3186
#3187
#3191
#3195
#3196
#3198
#3198
#320
#320
#3201
#3203
#3205
#3212
#3215
#3217
#3219
#323
#323
#3231
#3234
#3235
#3238
#3239
#3240
#3243
#3244
#3245
#3248
#3250
#3252
#3257
#3265
#3266
#3271
#3274
#3276
#328
#328
#3280
#3283
#3285
#3287
#3287
#3291
#3292
#3294
#3295
#3297
#3298
#3299
#3302
#3307
#3308
#3314
#3324
#3325
#3328
#3334
#3335
#3336
#3338
#3340
#3346
#3348
#3350
#3356
#3357
#3358
#3359
#3360
#3362
#3365
#3366
#3368
#3369
#3370
#3371
#3373
#3380
#3387
#3389
#3391
#3394
#3398
#3403
#3404
#3404
#3405
#341
#341
#3410
#3413
#3416
#3417
#3418
#3422
#3425
#3427
#3435
#344
#344
#3440
#3443
#3444
#3449
#345
#345
#3455
#3456
#3459
#3463
#3467
#3470
#3471
#3472
#3473
#3474
#348
#348
#3481
#3484
#3487
#3488
#3490
#3493
#3497
#3500
#3501
#3502
#3503
#3504
#3505
#3506
#3507
#3508
#3511
#3514
#3517
#3519
#3523
#3523
#3527
#3529
#3530
#3532
#3533
#3534
#3535
#3536
#3537
#3538
#3540
#3544
#3546
#3550
#3551
#3553
#3554
#3555
#3556
#3560
#3572
#3579
#3580
#3581
#3583
#3586
#3587
#3588
#3589
#3591
#3592
#3592
#3594
#3595
#3596
#3598
#3599
#3604
#3606
#3609
#3613
#3613
#3614
#3619
#3620
#3622
#3623
#3625
#3629
#3630
#3631
#3634
#3635
#3638
#3639
#3640
#3640
#3642
#3642
#3644
#3647
#3648
#368
#368
#37
#383
#383
#384
#384
#394
#394
#396
#396
#398
#398
#40
#401
#401
#402
#402
#403
#403
#404
#411
#411
#413
#413
#415
#420
#422
#423
#426
#426
#428
#431
#431
#433
#433
#443
#449
#450
#451
#452
#453
#454
#455
#462
#463
#463
#467
#469
#469
#476
#477
#478
#478
#481
#484
#484
#486
#487
#488
#488
#495
#501
#503
#503
#512
#513
#514
#515
#516
#52
#521
#523
#525
#533
#535
#539
#546
#550
#552
#568
#569
#569
#570
#576
#576
#581
#586
#586
#587
#596
#596
#597
#601
#601
#604
#604
#608
#613
#618
#618
#620
#620
#621
#621
#624
#625
#626
#626
#632
#632
#636
#636
#640
#640
#642
#651
#651
#656
#658
#658
#663
#667
#667
#668
#671
#672
#674
#674
#676
#681
#687
#687
#689
#693
#693
#695
#697
#70
#703
#706
#707
#711
#720
#720
#724
#724
#727
#727
#728
#728
#732
#732
#734
#734
#738
#738
#739
#743
#756
#757
#758
#758
#767
#767
#777
#777
#786
#786
#791
#791
#794
#794
#800
#802
#802
#813
#813
#818
#826
#826
#832
#832
#833
#835
#835
#836
#844
#847
#848
#850
#863
#870
#870
#871
#873
#873
#875
#876
#876
#877
#879
#879
#881
#881
#886
#887
#892
#892
#897
#900
#903
#904
#909
#909
#910
#923
#924
#925
#925
#927
#940
#940
#946
#96
#960
#976
#987
#988
#992
#998
#998
1.0-Beta
1.0-M1
1.0-M2
1.0-M3
1.0.0
2.0.0
2.1
2.2
2.3
2.3.1
3.0-Preview1
3.0-Preview2
3.0.2
v10.0-preview1
v10.0-preview2
v2.3.2
v2.4
v3.0
v3.0-beta1
v3.0-beta2
v3.0-beta2a
v3.0-beta3
v3.0-beta4
v3.0.1
v3.1-beta1
v3.1-final
v3.1-rc
v3.2-beta
v3.2-rc
v3.2.0
v4.0
v4.0-alpha1
v4.0-beta1
v4.0-beta2
v4.0-beta3
v4.0-rc1
v4.0-rc2
v4.0.1
v5.0
v5.0-preview1
v5.0-preview2
v5.0-preview3
v5.0-preview4
v5.0-rc1
v5.0.1
v5.0.2
v6.0
v6.0-preview1
v6.0-preview2
v6.0-preview3
v6.0-preview4
v6.0-rc1
v6.1
v6.2
v6.2-preview1
v6.2-preview2
v6.2.1
v7.0
v7.0-preview1
v7.0-preview2
v7.0-preview3
v7.0-rc1
v7.0-rc2
v7.1
v7.2
v7.2-preview1
v7.2-preview2
v7.2-preview3
v7.2-preview4
v7.2-rc
v7.2.1
v8.0
v8.0-preview1
v8.0-preview2
v8.0-preview3
v8.0-preview4
v8.0-rc1
v8.1
v8.1.1
v8.2
v9.0
v9.0-preview1
v9.0-preview2
v9.0-preview3
v9.0-rc
v9.1
-
bacab7a00b
Idioms "i++" and "i += k"
David Srbecký 2008-02-06 21:24:54 +0000
-
3f268ec44f
ldsfld stsfld
David Srbecký 2008-02-06 20:57:06 +0000
-
059e91cdd9
Do not include explicit reference to 'this'
David Srbecký 2008-02-06 20:44:43 +0000
-
10a96cf79f
Include member reference and method invocation in precedence list.
David Srbecký 2008-02-06 20:31:02 +0000
-
a284dd920d
Remove parenthesis from: condition, assignment, variable definition
David Srbecký 2008-02-06 20:15:53 +0000
-
109d3f8649
Remove parenthesis that are not needed due to C# left associativity.
David Srbecký 2008-02-06 19:56:04 +0000
-
704a8c769e
Remove some parenthesis that are not needed due to C# operator precedence.
David Srbecký 2008-02-06 19:44:56 +0000
-
0d3dd5de44
Apply the negation reduction twice. Also handle expressions in from "!!a"
David Srbecký 2008-02-06 17:30:10 +0000
-
f1c1d34cba
Simplify expressions by pushing negations inside. Includes application of De Morgan's laws.
David Srbecký 2008-02-06 17:15:27 +0000
-
dacfade7df
Remove parenthesis from primitive value, identifies and expression statements.
David Srbecký 2008-02-06 15:35:10 +0000
-
6faf690899
Parenthesize all expression to ensure correctness.
David Srbecký 2008-02-06 15:25:05 +0000
-
459742f3ca
Simplify short-circuit branches ("a && b" or "a || b"). Two new node types were created for this: SimpleBranch and ShortCircuitBranch. The short-circuit branches are found by pattern finding - single short-circuit branch forms a specific triangular pattern in the control flow graph. Nested short-circuit branches are found by doing this node reduction repeatedly.
David Srbecký 2008-02-06 14:50:36 +0000
-
7abcfaa3ed
Conditional jumps now alone in basic block so that they can be expressed as single bool expression.
David Srbecký 2008-02-02 21:26:25 +0000
-
cefcba99d1
When conditional does not have any common reachable nodes, create only 'true' body. 'False' body is then implicitly the code after the conditional.
David Srbecký 2008-02-02 17:41:12 +0000
-
a455a6be02
Increased the reduction max count to 10000
David Srbecký 2008-02-02 16:10:08 +0000
-
5b997bd44d
Splitted the next statement finding algorithm to several reusable parts.
David Srbecký 2008-02-02 15:59:11 +0000
-
110defad02
The next statement for the end of loop is start of loop
David Srbecký 2008-02-02 14:44:03 +0000
-
ba59de34fb
When looking what follows a 'goto' statement, exit and enter code blocks. This simplifies code like: if (p) { Code(); goto Label; // This goto is redundant } for(;;) { Label: Code(); }
David Srbecký 2008-02-02 14:10:58 +0000
-
e6269f491b
Moved jump reduction to the Ast transform phase
David Srbecký 2008-02-02 12:41:00 +0000
-
3643debd61
The Target of decompilation is now Board. It has plenty of nested 'for' loops and 'if's.
David Srbecký 2008-02-01 23:52:32 +0000
-
eaa7a63343
castclass
David Srbecký 2008-02-01 23:23:52 +0000
-
3ca49743ae
ldtoken
David Srbecký 2008-02-01 23:14:25 +0000
-
49eeb49d1b
newobj
David Srbecký 2008-02-01 22:54:53 +0000
-
6e7f51fad7
Property access. (Detect properties by naming convention; still needs to be done properly)
David Srbecký 2008-02-01 22:47:33 +0000
-
57192a1fdc
stfld
David Srbecký 2008-02-01 22:02:53 +0000
-
86ca89b055
callvirt
David Srbecký 2008-02-01 21:51:07 +0000
-
6e4b542709
ldfld
David Srbecký 2008-02-01 21:47:49 +0000
-
40e1edd7d9
Fixed all bugs that prevented the decompiler from running. The output of decompilation is saved in file output.cs Unsupported expressions are handled a bit more gracefully - for example: IL__callvirt(set_AutoSize(), (IL__ldfld(titleLabel, @this)), 1); this is will eventually become this.titleLabel.AutoSize = 1;
David Srbecký 2008-02-01 21:42:11 +0000
-
bc89f0a071
Target of decompilation is now AboutDialog in the Reversi game.
David Srbecký 2008-02-01 20:28:10 +0000
-
42451cbd9d
Added a Reversi game from http://www.codeproject.com/KB/game/reversi.aspx
David Srbecký 2008-02-01 14:32:43 +0000
-
48c25a5821
Progress Report - Draft 1
David Srbecký 2008-01-30 21:40:54 +0000
-
3aa8cc498c
Initial GUI options loaded loaded from class
David Srbecký 2008-01-28 21:32:35 +0000
-
598dcfd92c
Bugfix in SimplifyTypeReferences - calling it for second time corrupted some type names
David Srbecký 2008-01-28 21:30:49 +0000
-
af14439362
Terminating all optimizations with exceptions
David Srbecký 2008-01-28 21:21:58 +0000
-
27d8b0107d
Include blocks jumping outside the parent not as being conditionals
David Srbecký 2008-01-28 20:49:28 +0000
-
a95748dc66
More GUI options
David Srbecký 2008-01-28 19:47:17 +0000
-
27d70d6897
Reduce "String.Concat(a, b)" to "a + b"
David Srbecký 2008-01-28 18:58:57 +0000
-
35f06e0a4b
Label is not reference counted object anymore, it is just a string. During transform we in two passes - find all live labels - remove all dead ones (the rest).
David Srbecký 2008-01-28 18:25:25 +0000
-
9aff0b724d
Simplify the transform code by using extension methods.
David Srbecký 2008-01-28 18:03:33 +0000
-
479918e7bc
Remove MyBlockStatement.
David Srbecký 2008-01-28 17:21:12 +0000
-
ea50b09c0d
NRefactory: Add NodeCollection.AddRange method
David Srbecký 2008-01-28 17:20:01 +0000
-
07a2cb2a84
NRefactory: Set parent of child when it is added to collection
David Srbecký 2008-01-28 17:15:46 +0000
-
932cf1a232
NRefactory: INode.Children type changed from List<T> to more general IList<T>
David Srbecký 2008-01-28 17:12:38 +0000
-
e42166ca85
Add NRefactory source code
David Srbecký 2008-01-28 16:10:14 +0000
-
34c8127a9b
Restore loop initializer
David Srbecký 2008-01-28 14:30:00 +0000
-
5b48611b69
Replace variable name for integers with "i", "j", "k", etc...
David Srbecký 2008-01-28 14:02:39 +0000
-
08528a768a
Reduce 'if' statements in loops.
David Srbecký 2008-01-27 23:43:05 +0000
-
5b8b80cc72
Restore loop iterator - move assignment from the end of loop.
David Srbecký 2008-01-27 23:13:37 +0000
-
af00ad101a
Restore for loop condition. It is a simple pattern match.
David Srbecký 2008-01-27 23:05:18 +0000
-
075c5bebdb
Remove empty 'else body' of 'if' statement.
David Srbecký 2008-01-27 22:46:07 +0000
-
d086b446e8
Remove flowing redundant jumps at the end of Ast blocks: - Continue at the very end of loop - Empty Return at the very end of method - Goto at the very end of 'if' body, if the goto jumps right after the whole 'if' statement
David Srbecký 2008-01-27 22:26:00 +0000
-
6ebd05c0fe
Simplify type names. For example replace "System.Console.WriteLine" with "Console.WriteLine" because we have a "using System;" statement. Replace "Int32" with "int", etc...
David Srbecký 2008-01-27 18:30:36 +0000
-
8643290a4c
Remove redundant 'goto' statements in form: goto labelX; labelX: command();
David Srbecký 2008-01-27 17:38:35 +0000
-
ecad71d802
Added custom Ast classes for Goto and Label statements that track the reference count of a label. Added an Ast transform to remove dead labels. (first Ast transform in program, I expect many more to come. Some stuff should be rewritten to use these explicit transforms)
David Srbecký 2008-01-27 15:43:40 +0000
-
45bedc8d1d
Try to reconstruct if statements. The following logic is used: Depending on the value of the condition, the control flow will branch to one of two locations - let's call then 'true entry' and 'false entry'. Nodes reachable *only* from the 'true entry' are assumed to be the 'true' body of the if statement. Similarly, nodes reachable only from the 'false entry' are the 'false' body. Nodes reachable from both 'true entry' and 'false entry' and not part of the if statement and are placed after it.
David Srbecký 2008-01-27 14:39:14 +0000
-
356c0b0d2f
Completely rewritten the Node tree structure. It became increasingly difficult to maintain the node links (Predecessors, Successors) consistent during transformations. So rather then keeping them consistent I have implemented an algorithm that can calculate the Predecessors or Successors for any given node. There are a few caches on the way so that the calculation does not calculate everything again every time. Affected caches are automatically flushed when a tree structure changes. This is implemented using 'collection with events'.
David Srbecký 2008-01-27 10:32:26 +0000
-
7bf471eec3
Some set operations that will be need for 'if' simplification
David Srbecký 2008-01-26 12:22:34 +0000
-
dda481d0fe
Maintain node links at all levels, not just at the top one.
David Srbecký 2008-01-26 11:44:09 +0000
-
ff56995219
Reduce some 'goto's in loops to 'break' and 'continue'. Do not output 'goto' for simple fall-through to next node.
David Srbecký 2008-01-24 23:37:18 +0000
-
7df6c364c6
Non-conditional branch does not have 'fall-through' node as successor. Add explicit 'goto' statement after each basic black. More GUI debugging options.
David Srbecký 2008-01-24 21:28:49 +0000
-
b310187433
GUI debugging controls
David Srbecký 2008-01-24 20:07:26 +0000
-
693bb16488
Generate the initial graph. Output the graph as nested blocks.
David Srbecký 2008-01-24 18:22:48 +0000
-
0bff44d922
Create class for each node type
David Srbecký 2008-01-24 16:41:06 +0000
-
faff1bf5a9
Working on graph reduction algorithm. (Graph creation and presentation is still missing)
David Srbecký 2008-01-24 00:35:29 +0000
-
aba6b0950c
Split method body to basic blocks
David Srbecký 2008-01-23 21:23:13 +0000
-
a43af72f9e
Bugfix - keep return if it is labelled.
David Srbecký 2007-11-12 14:30:24 +0000
-
22494bde37
Define local variables when value is first assigned to them
David Srbecký 2007-11-12 14:23:40 +0000
-
82d3debe87
Do not output the very last return statement
David Srbecký 2007-11-12 13:19:36 +0000
-
9eb2441490
Test on the compiler optimized version of quicksort
David Srbecký 2007-11-12 01:28:06 +0000
-
29b95cd28c
Remove some parenthesis
David Srbecký 2007-11-12 01:13:20 +0000
-
acdac3ecf5
Join consecutive expression together if possible
David Srbecký 2007-11-12 01:01:29 +0000
-
37d40932d9
Convert ByteCodeCollection to new data representation: StackExpressionCollection; Modify the generating code to use this data representation
David Srbecký 2007-11-11 23:49:36 +0000
-
ed413b7ec3
Move stack analysis to the ByteCode class
David Srbecký 2007-11-11 22:49:57 +0000
-
b7486c3221
Move StackBehaviour code to separate file
David Srbecký 2007-11-11 21:48:29 +0000
-
53eed43bf5
Moved typing code to ByteCode.GetType()
David Srbecký 2007-11-11 21:42:03 +0000
-
475eab39cf
Move code from Util class to - ByteCode.PopCount - ByteCode.PushCount
David Srbecký 2007-11-11 20:46:08 +0000
-
0fe95f6b0b
Use custom data structure to store bytecode sequence
David Srbecký 2007-11-11 20:21:59 +0000
-
9d82c6c55b
Remove unnecessary labels
David Srbecký 2007-11-11 17:59:59 +0000
-
970706161a
Get type of elements obtained from array
David Srbecký 2007-11-11 17:53:56 +0000
-
a9ab824805
Get type for stack slots (partially implemented); Types are stored as Cecil TypeReferences
David Srbecký 2007-11-11 17:33:11 +0000
-
ffef73b007
Hack - convert int to bool on == operator
David Srbecký 2007-11-09 19:30:05 +0000
-
cfa3ecd70d
Get type of new array
David Srbecký 2007-11-09 17:28:59 +0000
-
56ced90f95
Added "using System;"; Do not create namespace with empty name
David Srbecký 2007-11-09 17:16:47 +0000
-
2642e6de19
Output local variables
David Srbecký 2007-11-09 17:03:27 +0000
-
4468b4a3e1
Use stack analysis to figure out basic data flow - use actual inputs instead of the dummy ones
David Srbecký 2007-11-09 16:49:32 +0000
-
238605c831
Initial stack analysis implementation: Verify that the stack sizes are consistent - ie at a given location the stack size is statically known and constant. Keep track of instruction which pushed a given value on the stack. (Not handling the potential problem at control merge points - this problem does not occur in the quick sort algorithm) The state of the stack is outputted as a comment in the source code
David Srbecký 2007-11-08 17:01:32 +0000
-
306b17db33
Started a type checking algorithm
David Srbecký 2007-11-04 17:09:03 +0000
-
466e199cca
Assign the result of each instruction to a temporary local variable
David Srbecký 2007-11-04 16:08:06 +0000
-
e650e1afe6
Ldelema; Instance method calls
David Srbecký 2007-11-04 15:44:33 +0000
-
5032ab1df0
Implemented 'ret' instruction (function return)
David Srbecký 2007-11-04 15:11:39 +0000
-
c57f053f7a
Add a label in front of every statement
David Srbecký 2007-11-04 14:57:17 +0000
-
8faee275ed
Implemented 'call' instruction
David Srbecký 2007-11-04 14:35:23 +0000
-
8bf08b1e1e
Implemented branching operations
David Srbecký 2007-11-04 14:15:02 +0000
-
fda3f6e0b5
Implemented comparison operators
David Srbecký 2007-11-03 18:31:34 +0000
-
cc2d74dc94
Implemented basic array operations
David Srbecký 2007-11-03 18:26:52 +0000
-
6ee62de047
Finished arithmetic operations
David Srbecký 2007-11-03 17:58:46 +0000
-
af3a01cd44
Rename files
David Srbecký 2007-11-03 17:09:46 +0000
-
7753b88bc5
Use NRefactory to create method bodies -> CodeDom not used anymore
David Srbecký 2007-11-03 16:23:00 +0000
-
e5500abf75
Output the skeleton code using NRefactory instead of CodeDom
David Srbecký 2007-11-03 15:37:41 +0000
-
801a31f8d1
Generate code for some arithmetic operations (some operations are unsupported by CodeDom)
David Srbecký 2007-10-31 19:28:48 +0000