diff options
author | Dietmar Maurer <dietmar@mono-cvs.ximian.com> | 2001-09-19 15:16:12 +0400 |
---|---|---|
committer | Dietmar Maurer <dietmar@mono-cvs.ximian.com> | 2001-09-19 15:16:12 +0400 |
commit | 7777454f3498781215ece6c9addcd6775cd53ccc (patch) | |
tree | d98438f952970c138567a6e500ac3ff5bfa2589e /docs | |
parent | dc96dd26bb454ea738fef49804820f1cf3216323 (diff) |
2001-09-19 Dietmar Maurer <dietmar@ximian.com>
* x86.brg: added more floating point grammar
* testjit.c (mono_compile_method): make local offsets negative
* mono/tests/test-ops.cs: added more tests
svn path=/trunk/mono/; revision=883
Diffstat (limited to 'docs')
-rw-r--r-- | docs/jit-thoughts | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/docs/jit-thoughts b/docs/jit-thoughts index 5d209f04231..9bc624c7bee 100644 --- a/docs/jit-thoughts +++ b/docs/jit-thoughts @@ -149,3 +149,18 @@ either to local variable, to the stack or to array elements. Value types with a size smaller than sizeof(int) are handled like any other basic type. For other value types we load the base address and emit block copies to store them. +Possible Optimisations: +======================= + +Miguel said ORP does some optimisation on IL level, for example moving array +bounds checking out of loops: + +for (i = 0; i < N; i++) { check_range (a, i); a [i] = X; } + +id transformed to: + +if (in_range (a, 0, N)) { for (i = 0; i < N; i++) a[i] = X; } +else for (i = 0; i < N; i++) { check_range (a, i); a [i] = X; } + +The else is only to keep original semantics (exception handling). + |