Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDietmar Maurer <dietmar@mono-cvs.ximian.com>2001-09-19 15:16:12 +0400
committerDietmar Maurer <dietmar@mono-cvs.ximian.com>2001-09-19 15:16:12 +0400
commit7777454f3498781215ece6c9addcd6775cd53ccc (patch)
treed98438f952970c138567a6e500ac3ff5bfa2589e /docs
parentdc96dd26bb454ea738fef49804820f1cf3216323 (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-thoughts15
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).
+