-
Notifications
You must be signed in to change notification settings - Fork 3.8k
/
ChangeLog
14626 lines (8820 loc) · 461 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2008-09-06 Zoltan Varga <vargaz@gmail.com>
* mini.c (mono_spill_call): Handle pinvoke+soft float on arm.
* aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
methods to their code to avoid computing the full name of wrappers and
doing a lookup in a string hash table.
2008-09-05 Zoltan Varga <vargaz@gmail.com>
* tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
(mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
(mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
'buf'.
* aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all
jumped to the same entry in plt_jump_table.
2008-09-02 Rodrigo Kumpera <rkumpera@novell.com>
* method-to-ir.c (initialize_array_data): Handle field with RVA from
dynamic images.
(Ported from trunk)
2008-08-29 Geoff Norton <gnorton@novell.com>
* aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
segment, and doesn't properly handle .space as .text. Fixes
AOT Mach/ARM
2008-08-29 Geoff Norton <gnorton@novell.com>
* mini.c: Disable the mach exception handler when running on
ARM
2008-08-29 Geoff Norton <gnorton@novell.com>
* aot-compiler.c: Patch from Renaldas Zioma to properly register
globals on Darwin/ARM
2008-08-28 Zoltan Varga <vargaz@gmail.com>
* mini.c: Avoid not initializing the runtime when doing AOT compilation,
since too many things depend on it. Instead, call
mono_runtime_set_no_exec ().
* aot-compiler.c: Add an 'asm-only' AOT option.
* mini.c: Avoid initializing the runtime when doing AOT compilation.
(mini_method_compile): Don't add the method to the jit_info table when
during AOT compilation.
2008-08-27 Bill Holmes <billholmes54@gmail.com>
Backport of r111724.
* mini-amd64.h : Fix a compiler warning.
* exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
Changed to use a callback function to retrieve the unwind info.
This avoids problems observed when code blocks were removed by
unloading an app domain.
* mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole
and branch excludes for Winx64. The fix in exceptions-amd64.c allows them
to work properly.
Contributed under MIT/X11 license.
2008-08-27 Bill Holmes <billholmes54@gmail.com>
Backport of r111722.
* mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
case to keep the stack aligned to 8.
Contributed under MIT/X11 license.
2008-08-26 Zoltan Varga <vargaz@gmail.com>
* aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
avoid repeated linear searches.
2008-08-25 Zoltan Varga <vargaz@gmail.com>
* aot-compiler.c (add_method): Avoid adding a method twice.
(add_wrappers): Add runtime invoke wrappers for all methods.
* mini.c (mono_method_to_ir): Handle the !aot case in CEE_MONO_ICALL_ADDR.
2008-08-24 Zoltan Varga <vargaz@gmail.com>
* mini.c (mono_method_to_ir2): Rethrow the correct exception in
CEE_RETHROW. Fixes #419634.
* exceptions.cs: Add a new test.
* generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
to mono_type_stack_size_internal () since some callers might not pass in
an rgctx.
* mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
instrument_prolog. Fixes #419878.
2008-08-22 Zoltan Varga <vargaz@gmail.com>
* mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
Fixes #419273.
2008-08-20 Bill Holmes <billholmes54@gmail.com>
Backport of r111197
* exceptions-amd64.c (seh_handler): For Winx64 adding missing copy
of nonvolatile registers back from MonoContext to CONTEXT.
Contributed under MIT/X11 license.
2008-08-20 Bill Holmes <billholmes54@gmail.com>
Backport of r111194
* mini-amd64.c (mono_arch_get_delegate_invoke_impl): When shifting the
arguments on Winx64 there are only 4 argument registers. For this
logic to work the last argument must be pulled from the stack.
Contributed under MIT/X11 license.
2008-08-19 Zoltan Varga <vargaz@gmail.com>
* mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
Fixes #418381.
2008-08-16 Zoltan Varga <vargaz@gmail.com>
* mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
insertion into jump_table_hash into mono_codegen (), also implement proper
locking.
2008-08-14 Zoltan Varga <vargaz@gmail.com>
* mini.c (mini_method_compile): Abort aot compilation for generic
methods if generic sharing is disabled.
* mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
an mrgctx.
2008-08-13 Bill Holmes <billholmes54@gmail.com>
* mini-amd64.c (mono_arch_cpu_optimizazions): Remove peephole and branch
from default optimizaton list on Winx64.
* mini-amd64.c (emit_tls_get): Added Winx64 specific implementation for GetTLS.
* mini-amd64.c (mono_arch_emit_prolog): Adding an offset on Winx64 to get
the LMF from the MonoJitTlsData structure.
* mini-amd64.c (mono_arch_setup_jit_tls_data): Added Winx64 implementation.
Contributed under MIT/X11 license.
2008-08-12 Zoltan Varga <vargaz@gmail.com>
* driver.c (main_thread_handler): Allow AOT compilation of multiple
assemblies in one run.
* aot-compiler.c (mono_compile_assembly): Only print out a count of
skipped methods if it is not 0.
2008-08-12 Zoltan Varga <vargaz@gmail.com>
* mini-amd64.c (emit_call_body): Use image->aot_module instead of
assembly->aot_module.
* aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
hash table. This simplifies and speeds up a lot of code, and fixes support
for .netmodules.
2008-08-12 Zoltan Varga <vargaz@gmail.com>
* mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
with the runtime.
* mini-exceptions.c: Ditto.
2008-08-11 Zoltan Varga <vargaz@gmail.com>
* aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
called while holding the loader lock. Fixes #415608.
(mono_aot_get_method_from_token_inner): Ditto.
2008-08-08 Zoltan Varga <vargaz@gmail.com>
* aot-compiler.c (mono_aot_parse_options): Disable no-dlsym option for now.
* mini.c (mono_resolve_patch_target): Don't error out on missing icalls
while aot compiling.
* mini.c driver.c aot-compiler.c: Update after
mono_marshal_get_native_wrapper () signature changes.
* mini.c (mono_resolve_patch_target): Error out if an icall is not found.
(mono_method_to_ir): Handle new CEE_MONO_ICALL_ADDR opcode.
2008-08-07 Zoltan Varga <vargaz@gmail.com>
* aot-runtime.c (load_named_code): Pass the sofile to find_symbol, not the
MonoAotModule.
* exceptions-arm.c (mono_arch_get_throw_exception_generic): Add aot
support.
* aot-runtime.c (load_named_code): Handle 'mono_arm_throw_exception'.
* mini-arm.c (mono_arch_register_lowlevel_calls): Register
mono_arm_throw_exception as a jit icall.
2008-08-06 Zoltan Varga <vargaz@gmail.com>
* aot-compiler.c (mono_compile_assembly): Correct the computation of
acfg->nmethods.
(add_wrappers): Don't emit jit icall wrappers etc. into every image.
2008-08-02 Zoltan Varga <vargaz@gmail.com>
* mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
a float HFA. Fixes #413621.
2008-07-31 Zoltan Varga <vargaz@gmail.com>
* mini.h: Add a declaration for mono_aot_register_module ().
* aot-compiler.c aot-runtime.c: Merge some mach changes from Renaldas Zioma.
* debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
* aot-compiler.c aot-runtime.c: Add a 'static' option to generate aot files
which can be statically linked into an executable.
2008-07-31 Bill Holmes <billholmes54@gmail.com>
* aot-compiler.c : Backport of r108759. Fix win32 build.
Contributed under MIT/X11 license.
2008-07-29 Massimiliano Mantione <massi@ximian.com>
* mini.c (sigprof_signal_handler): call the new "runtime initialized"
profiler hook.
Backported from trunk (r108631).
2008-07-27 Zoltan Varga <vargaz@gmail.com>
* debug-mini.c (mono_debug_close_method): Avoid a crash if jit->this_var
is not set.
2008-07-25 Martin Baulig <martin@ximian.com>
* debug-debugger.c
(debugger_get_boxed_object): GC-protect the last 16 objects.
(debugger_runtime_invoke): Likewise.
2008-07-24 Zoltan Varga <vargaz@gmail.com>
* aot-runtime.c aot-compiler.c: Merge with the version in HEAD.
2008-07-24 Mark Probst <mark.probst@gmail.com>
* mini-exceptions.c: Free a MonoType with
mono_metadata_free_type() instead of g_free().
* aot-runtime.c: Free a MonoType.
Backported from trunk.
2008-07-24 Bill Holmes <billholmes54@gmail.com>
* mini-amd64.c (mono_arch_call_opcode) : Winx64 fix. Use the size
variable computed above as the copy length for arguments of storage
type ArgValuetypeAddrInIReg.
Contributed under MIT/X11 license.
2008-07-24 Bill Holmes <billholmes54@gmail.com>
* mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix. When omitting the
frame pointer the stack adjustment value must be saved to the unwind
info structure.
Contributed under MIT/X11 license.
2008-07-23 Martin Baulig <martin@ximian.com>
* debug-mini.c (mono_debug_close_method): Check
`MONO_INST_IS_DEAD' for `this'.
2008-07-22 Bill Holmes <billholmes54@gmail.com>
* inssel-amd64.brg : Adding rules for OP_VTARG_ADDR that are used for
Winx64 struct arguments.
* mini-amd64.c (mono_arch_allocate_vars) : Implementing the ArgValuetypeAddrInIReg
argument case. Setting the argument op to OP_VTARG_ADDR (OP_REGOFFSET)).
* mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
Implementing the ArgValuetypeAddrInIReg argument case. When the address
of a struct is passed in a register it must be saved with the other
volatile argument on the stack.
Contributed under MIT/X11 license.
2008-07-21 Bill Holmes <billholmes54@gmail.com>
* mini-amd64.c (get_call_info): Winx64 fix for passing floats.
The float param registers and other param registers must be the
same index on Windows x64.
Contributed under MIT/X11 license.
2008-07-21 Rodrigo Kumpera <rkumpera@novell.com>
* mini.c: Make the previous fix GC safe.
Backported from trunk.
2008-07-21 Bill Holmes <billholmes54@gmail.com>
Back port from trunk. r108343
* mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
on Winx64. This type will not be passed on the stack (ArgOnStack), but
ArgValuetypeAddrInIReg instead.
Contributed under MIT/X11 license.
2008-07-21 Raja R Harinath <harinath@hurrynot.org>
* Makefile.am (version.h): Allow a trailing '/' in the repository URL.
2008-07-18 Rodrigo Kumpera <rkumpera@novell.com>
* mini.c: Use mono_runtime_class_init_full to avoid leaking memory
for types which the initialization fails. Raises the provided exception
at the right stop after cleanup. Backported from trunk.
2008-07-14 Zoltan Varga <vargaz@gmail.com>
* mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as
it has too much register pressure.
2008-07-13 Zoltan Varga <vargaz@gmail.com>
* inssel.brg (CEE_CASTCLASS): Remove some dead code.
2008-07-12 Zoltan Varga <vargaz@gmail.com>
* mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
on x86.
* mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
on amd64 similar to the way it is done on arm.
* mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
* aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for
consistency, normalize error messages, avoid loading aot-only modules in
normal mode.
* driver.c (mono_main): Rename --aot-only command line option to --full-aot
for consistency.
* aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
2008-07-11 Martin Baulig <martin@ximian.com>
* debug-debugger.h
(MonoDebuggerInfo): Add `interruption_request'.
2008-07-12 Zoltan Varga <vargaz@gmail.com>
* aot-compiler.c (emit_plt): Remove some dead code.
* exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
* aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
return the plt info offset belonging to a given plt entry.
* mini-trampolines.c (mono_aot_plt_trampoline): Use
mono_aot_get_plt_info_offset.
* aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
similar to the amd64 code by makeing jumps through a separate jump table
instead of embedding the jump addresses into the code.
2008-07-11 Zoltan Varga <vargaz@gmail.com>
* mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
method.
2008-07-10 Martin Baulig <martin@ximian.com>
* mini.c (mini_method_compile): Disable generics sharing when
running in the debugger.
2008-07-10 Zoltan Varga <vargaz@gmail.com>
* mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
* inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
the local register allocator from running out of registers on x86 when
using aot.
2008-07-10 Bill Holmes <billholmes54@gmail.com>
* inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when
expressing IntMin for the VS Compiler. See Compiler Warning (level 2)
C4146.
Contributed under MIT/X11 license.
2008-07-10 Zoltan Varga <vargaz@gmail.com>
* aot-compiler.c: Get rid of whitespace in the generated assembly file to
speed up the assembler.
2008-07-09 Zoltan Varga <vargaz@gmail.com>
* mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
support.
* mini.c: Move the soft float handling macros a bit earlier, add
NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
place.
* mini.h: Add prototype for mono_arch_fixup_jinfo.
* mini.c (mini_init): In aot-only mode, set the root domain code manager to
read-only to help catch code allocation requests.
* mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
and turn it off when using --aot-only or when compiling with --aot=full.
* mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
jump table for switches from the normal domain mempool, not the code
manager.
* mini-trampolines.c (get_unbox_trampoline): New function to return an
unbox trampoline which handles aot-only mode too.
* aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
an AOTed unbox trampoline.
* aot-compiler.c (emit_trampolines): Emit unbox trampolines.
2008-07-09 Bill Holmes <billholmes54@gmail.com>
* wapihandles.c: Fixing MSVC builds. Include statement changed from <> to
""
Contributed under MIT/X11 license.
2008-07-09 Bill Holmes <billholmes54@gmail.com>
* mini.c (mono_codegen): Allocate space at the end of the code block and store
the unwind information for the method at the end of the allocated block.
* mini-amd64.h: Added declarations for the unwind routines and adding field to
MonoCompileArch to hold the unwind info for SEH on Winx64
* mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
frame pointer info for the method being compiled.
* exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
the call to mono_exception_from_token.
* exceptions-amd64.c: Added mono_arch_unwindinfo* implementations. This code is responsible
storing the method prolog information in a format that the Winx64 SEH can understand. This
information is stored a the end of the method block because it is all 32-bit offset based.
Contributed under MIT/X11 license.
2008-07-09 Zoltan Varga <vargaz@gmail.com>
* mini.h: Remove duplicate definitions of the mini_wapi_ functions.
* wapihandles.c: Fix warnings.
* aot-runtime.c (load_aot_module): Add a missing error message in aot-only
mode.
* mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling
mono_jit_compile_method in aot-only mode since that calls the type
initializer.
* mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
get_delegate_invoke_impl in aot-only mode.
* mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
2008-07-08 Zoltan Varga <vargaz@gmail.com>
* trace.c (mono_trace_enter_method): Fix printing of Type instances.
* aot-compiler.c (compile_method): Disable the check for GSHARED since it
is on by default.
* inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
* tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
init trampoline from the AOT file as well.
* mini-amd64.c (mono_arch_register_lowlevel_calls): Register
mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
code.
* mini.c (mini_init): Move the call to mono_exceptions_init () after
mono_init.
* exceptions-amd64.c: Add _full variants for the remaining exception code
creation functions as well, allow emission of relocatable code, remove
caching since that is now done by the caller.
* mini-exceptions.c: Add _full variants for the remaining exception code
creation functions as well, add aot-only support.
* aot-compiler.c (compile_method): Allow calls to methods of constructed types
if we can determine a proper token for them.
(add_wrappers): Add a few more wrappers.
(emit_method_code): Remove some dead code.
(emit_trampolines): Emit exception code too.
* mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
* jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
mono_array_new_va which avoids varargs.
* mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
* mini-trampolines.c: Call mono_create_specific_trampoline () instead of
mono_arch_create_specific_trampoline () in all places.
* aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
a bit so it can be used for other things as well.
* mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
on demand as well.
* exceptions-amd64.c: Rename the caching from the exception code creation
functions, it is done by the caller instead.
* exceptions-amd64.c: Change the signature of the exception code creation
functions to allow the creation of relocatable code later.
* mini-exceptions.c: Add a set of functions to query the various
runtime-generated exception functions.
* mini.c mini-exceptions.c: Use the newly added functions instead of the
mono_arch_.. () functions.
2008-07-07 Zoltan Varga <vargaz@gmail.com>
* mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
* aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
* mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
(mini_get_vtable_trampoline): Ditto.
* tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
code in the AOT case by returning the code size and a list of relocations to
the caller.
* mini-trampolines.c (mono_create_specific_trampoline): New helper function.
2008-07-07 Bill Holmes <billholmes54@gmail.com>
* mini-amd64.c: On Winx64 the calling convention always requires the caller to
clean the stack.
Contributed under MIT/X11 license.
2008-07-07 Zoltan Varga <vargaz@gmail.com>
* aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
so the buffer size can be computed correctly. Fixes #404735.
* debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
normally as cfg->debug_info is already freed.
2008-07-06 Zoltan Varga <vargaz@gmail.com>
* mini-amd64.c: For calls returning vtypes in registers, don't store
the return address on the stack, instead allocate a separate local for
it. Fixes #404729.
2008-07-05 Mark Probst <mark.probst@gmail.com>
* mini-trampolines.c, mini.h: Add an argument to
mono_create_jit_trampoline_in_domain() for turning off the adding
of the sync wrapper.
* mini.c: Use the JIT trampoline without sync instead of
ldftn_nosync in static RGCTX invoke wrappers so that the call can
be patched.
2008-07-04 Mark Probst <mark.probst@gmail.com>
* driver.c: Turn on GSHARED optimization by default.
2008-07-04 Zoltan Varga <vargaz@gmail.com>
* mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
to MONO_TRAMPOLINE_JIT since it better reflects what it does.
* mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
create a variant of the generic trampoline code callable from AOTed trampolines.
* tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
trampoline code callable from AOTed trampolines.
* aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
2008-07-04 Mark Probst <mark.probst@gmail.com>
* inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
pass-through manner.
* mini.c: Generic method sharing. Pass MRGCTX to generic methods
and don't fail sharing for them anymore.
* mini-exceptions.c: Handle exceptions in shared generic methods.
* generic-sharing.c: When checking the context of a generic
method, also check its class's context. Don't treat wrappers as
sharable.
* mini-trampolines.c: Some code factored out to
metadata/generic-sharing.c. Handle the MRGCTX case.
* jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
we must deal with the method being of another instantiation of the
class. Add static rgctx invoke wrappers to generic methods.
2008-07-04 Mark Probst <mark.probst@gmail.com>
* mini.c: Provide all jit infos of generic shared methods with a
generic jit info.
* mini-exceptions.c: Handle the new situation that a generic info
might be available, but not info about the this/vtable/mrgctx
variable.
2008-07-03 Mark Probst <mark.probst@gmail.com>
* mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
generic methods.
2008-07-03 Zoltan Varga <vargaz@gmail.com>
* dominators.c (check_dominance_frontier): Fix a warning.
* mini.h: Add some missing prototypes.
* ssa.c local-propagation.c debug-debuger.c: Fix warnings.
* driver.c (mono_jit_init_version): Correct the comments since the first
argument should be the name of the root domain, not a filename.
* aot-runtime.c (make_writable): Error out if this is called while running
with --aot-only.
(load_aot_module): Ditto.
* aot-compiler.c: Really fix the computation of method indexes.
* mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous
optimizations as this is no longer called frequently.
* mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
method and the invoke impl code and pass it to the delegate trampoline instead of
just the delegate class.
2008-07-02 Zoltan Varga <vargaz@gmail.com>
* aot-compiler.c: Fixup the computation of method indexes.
(add_wrappers): Create the base methods of the runtime invoke wrappers using
the method builder infrastructure.
* aot-runtime.c (decode_exception_debug_info): Don't crash if the method
has no header.
* mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
mode, load the method right away instead of creating a trampoline.
* mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
* mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
some checks a bit.
2008-07-01 Zoltan Varga <vargaz@gmail.com>
* aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
(mono_aot_load_method): Use method_index instead of method->token.
* mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
can handle icalls etc. properly.
* mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
* aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
* mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
(mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
JIT_ICALL_ADDR patch type.
* patch-info.h: Add JIT_ICALL_ADDR patch type.
* mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
request flag.
(mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
* patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
2008-06-30 Zoltan Varga <vargaz@gmail.com>
* mini.c: Use domain->jit_code_hash_lock for controlling access to
domain->jit_code_hash.
2008-06-29 Zoltan Varga <vargaz@gmail.com>
* mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
2008-06-27 Zoltan Varga <vargaz@gmail.com>
* mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
get_this_arg_from_call, let it compute it when needed.
* mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
gsctx from code only when needed.
* mini-trampolines.c (get_generic_context): Rename this to
mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
it can be called by the arch backends.
* mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
2008-06-26 Zoltan Varga <vargaz@gmail.com>
* driver.c (mono_main): Add experimental --aot-only command line option.
* mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
set.
2008-06-26 Kornél Pál <kornelpal@gmail.com>
* driver.c (DllMain): Remove mono_module_handle.
Contributed under MIT/X11 license.
2008-06-25 Zoltan Varga <vargaz@gmail.com>
* aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
for emitting methods which are not in the source assembly. Detect and report
failure of assembling+linking.
* aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
* aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
2008-06-24 Rodrigo Kumpera <rkumpera@novell.com>
* mini.c: Check if stats is enabled so we don't allocate memory when not needed.
2008-06-24 Zoltan Varga <vargaz@gmail.com>
* mini.h: Remove some obsolete prototypes.
* mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
2008-06-24 Mark Probst <mark.probst@gmail.com>
* mini.c (get_object_generic_inst): Variable-sized arrays are not
supported by Visual Studio, so use alloca().
2008-06-23 Zoltan Varga <vargaz@gmail.com>
* mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
Fixes #402585.
2008-06-23 Mark Probst <mark.probst@gmail.com>
* mini.c: Fail sharing of a generic method if it contains an open
catch clause (because we don't pass MRGCTXs yet).
2008-06-23 Mark Probst <mark.probst@gmail.com>
* mini.c: When compiling a method with generic sharing, insert the
method instantiated with an all-Object generic context into the
jit info table, instead of the context of the first instantiation
of the method we happen to compile.
2008-06-18 Martin Baulig <martin@ximian.com>
* debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
`major_version' and `minor_version'.
2008-06-17 Mark Probst <mark.probst@gmail.com>
* generic-sharing.c, mini.c, mini.h, aot-runtime.c:
mono_method_is_generic_sharable_impl() takes an additional
argument specifying whether to treat type variables as reference
types.
2008-06-17 Mark Probst <mark.probst@gmail.com>
* mini.h: Removed obsolete prototypes.
2008-06-17 Mark Probst <mark.probst@gmail.com>
* mini.c: Don't fail generic sharing for initobj and sizeof - we
already handle them.
2008-06-17 Mark Probst <mark.probst@gmail.com>
* mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
tramp-x86.c: Added a MonoGenericContext* argument to
mono_arch_get_unbox_trampoline() so that it can call other
functions which require it.
2008-06-17 Mark Probst <mark.probst@gmail.com>
* mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
mono_arch_get_this_arg_from_call() takes a
MonoGenericSharingContext* as well.
2008-06-17 Mark Probst <mark.probst@gmail.com>
* mini.c: Factor out code for emitting unbox into emit_unbox() and
implement generic sharing of unbox.
2008-06-17 Mark Probst <mark.probst@gmail.com>
* mini.c: Don't compute the vtable to determine whether a field is
special static, because it might not work for open types.
2008-06-17 Mark Probst <mark.probst@gmail.com>
* mini.c: Removed the unused token_type and token_source arguments
from get_runtime_generic_context_ptr().
2008-06-17 Marek Habersack <mhabersack@novell.com>
* mini.c (ADD_BINOP): fix the build
2008-06-16 Zoltan Varga <vargaz@gmail.com>
* mini.c (ADD_BINOP): When operating on a native int and an int32, insert
a widening op.
2008-06-16 Mark Probst <mark.probst@gmail.com>
* mini.h: Removed class relations enum that's not used anymore.
2008-06-16 Mark Probst <mark.probst@gmail.com>
* tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
* mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
the lazy fetch trampoline access code.
2008-06-15 Zoltan Varga <vargaz@gmail.com>
* mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
2008-06-14 Zoltan Varga <vargaz@gmail.com>
* mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
* mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
* mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
2008-06-13 Zoltan Varga <vargaz@gmail.com>
* mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
intrinsics.
* mini-ops.h: Add MIN/MAX_UN opcodes.
* mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
intrinsics.
* basic-math.cs: Add more min/max tests.
* inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
2008-06-13 Mark Probst <mark.probst@gmail.com>
* mini.c: Small fix in the prologue of emit_castclass.
2008-06-13 Zoltan Varga <vargaz@gmail.com>
* inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
* mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
do not work even for unsigned types. Fixes #400014.
* basic-math.cs: Add regression tests for unsigned Min/Max.
2008-06-13 Mark Probst <mark.probst@gmail.com>
* mini.c: Added additional context_used argument to several
functions, which will be needed for sharing generic methods. Use
GET_RGCTX macro wherever appropriate. Declare only one
context_used in mono_method_to_ir().
2008-06-13 Mark Probst <mark.probst@gmail.com>
* mini.c, generic-sharing.c: Removed generic class relations.
* mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
functions due to MRGCTX changes.
2008-06-13 Mark Probst <mark.probst@gmail.com>
* inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
graph.c, local-propagation.c, aliasing.c: New opcodes for calls
with calculated IMT.
* mini.c: Generic sharing of calls via generic interfaces.
* jit-icalls.c, jit-icalls.h: Helper function for compiling a
generic method with non-constant MonoGenericContext*. Instead,
the context is taken out of the method itself.
2008-06-13 Mark Probst <mark.probst@gmail.com>
* mini.c: Generic sharing of ldvirtftn.
2008-06-13 Mark Probst <mark.probst@gmail.com>
* mini.c: Generic sharing of ldftn.
2008-06-13 Mark Probst <mark.probst@gmail.com>
* mini.c: Do pass VTable/RGCTX argument to static generic methods.
2008-06-13 Mark Probst <mark.probst@gmail.com>
* mini.c: Generic sharing of the special case of ldtoken followed
by a call to GetTypeFromHandle.
2008-06-13 Mark Probst <mark.probst@gmail.com>
* mini.c: Generic sharing of box for nullable types.
2008-06-13 Zoltan Varga <vargaz@gmail.com>
* mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
are passed on the stack. Fixes #324807.
2008-06-12 Bill Holmes <billholmes54@gmail.com>
* mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
for the ArgValuetypeAddrInIReg case.
* mini-amd64.c:mono_arch_allocate_vars: Adding a case for
ArgValuetypeAddrInIReg to avoid asserts. Code needs to be added here.
* mini-amd64.c: mono_arch_call_opcode: Adding Winx64 code for an ArgInfo of
type ArgValuetypeAddrInIReg. The code emitted will copy the argument to a
local variable and pass the local variable by reference to the called method.
* mini-amd64.c: mono_arch_emit_prolog: Adjust the stack for calls to
mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
Contributed under MIT/X11 license.
2008-06-10 Rodrigo Kumpera <rkumpera@novell.com>
* debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
* debug-mini.c (mono_debug_print_vars): Release memory after printing
everything.
2008-06-10 Martin Baulig <martin@ximian.com>
* debug-mini.c
(mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
2008-06-09 Kornél Pál <kornelpal@gmail.com>
* main.c: Add and set argv [argc] to NULL to match C specification that fixes
possible error when no arguments are passed.
Contributed under MIT/X11 license.
2008-06-09 Rodrigo Kumpera <rkumpera@novell.com>