Simple locks:
Can be acquired at any point regardless of which locks are taken or not.
No other locks can be acquired or released while holding a simple lock.
- Reentrancy is not recomended. (warning)
+ Reentrancy is not recommended. (warning)
Simple locks are leaf locks on the lock lattice.
Complex locks:
WARNING: tried to acquire lock ImageDataLock at mono_image_init_name_cache while holding ImageDataLock at mono_class_from_name
WARNING: tried to acquire lock ImageDataLock at mono_image_init_name_cache while holding ImageDataLock at mono_image_add_to_name_cache
Both of those happen when filling up the name_cache, as it needs to alloc image memory.
- This one is fixable by spliting mono_image_init_name_cache into a locked and an unlocked variants and calling them appropriatedly.
+ This one is fixable by splitting mono_image_init_name_cache into a locked and an unlocked variants and calling them appropriately.
*/
To be clearer, and give an idea of what the algorithm can and
cannot do without describing it in detail... keep in mind that
- only "redunant" checks cannot be removed. By "redundant", I
+ only "redundant" checks cannot be removed. By "redundant", I
mean "already explicitly checked" in the method code.
Unfortunately, analyzing complex expressions is not so easy
In the first case, the BB has exactly two exit BBs, and their
execution conditions are easy to get from the condition of the
branch (see the "get_relation_from_branch_instruction"
- function, and expecially the end of "analyze_block" in
+ function, and especially the end of "analyze_block" in
abcremoval.c.
If there is a switch, the jump condition of every exit BB is
each BB tried to examine all possible conditions between all
variables, filling a sort of "evaluation matrix". The problem
was that the complexity of this evaluation was quadratic (or
- worse) on the number of variables, and that many wariables
+ worse) on the number of variables, and that many variables
were examined even if they were not involved in any array
access.
[1b] Prepare the evaluation graph (empty)
- [1b] Summarize each varible definition, and put
+ [1b] Summarize each variable definition, and put
the resulting relations in the evaluation
graph
* See the definition of page_hash_table in gc_private.h.
* False hits from the stack(s) are much more dangerous than false hits
* from elsewhere, since the former can pin a large object that spans the
- * block, eventhough it does not start on the dangerous block.
+ * block, even though it does not start on the dangerous block.
*/
/*
- Fixed Makefile.direct for DARWIN. (Thanks to Manuel Serrano.)
- There was a race between GC_pthread_detach and thread exit that could
result in a thread structure being deallocated by GC_pthread_detach
- eventhough it was still needed by the thread exit code. (Thanks to
+ even though it was still needed by the thread exit code. (Thanks to
Dick Porter for the small test case that allowed this to be debugged.)
- Fixed version parsing for non-alpha versions in acinclude.m4 and
version checking in version.h.
macros. Currently these macros generally identify platforms instead of
features. In many cases, this is a mistake.
-3) The code currently avoids #elif, eventhough that would make it more
+3) The code currently avoids #elif, even though that would make it more
readable. This was done since #elif would need to be understood by ALL
compilers used to build the collector, and that hasn't always been the case.
It makes sense to reconsider this decision at some point, since #elif has been
/* Try to share the load, since the main stack is empty, */
/* and helper threads are waiting for a refill. */
/* The entries near the bottom of the stack are likely */
- /* to require more work. Thus we return those, eventhough */
+ /* to require more work. Thus we return those, even though */
/* it's harder. */
mse * p;
mse * new_bottom = local_mark_stack
.I "P:"
Refers to a property. If the property is an indexer or takes parameters,
the parameter types are appended to the property name and enclosed with
-paranthesis:
+parenthesis:
\fIP:System.String.Length\fR,
\fIP:System.String.Chars(System.Int32)\fR.
.TP
Don't align stack frames on the x86 architecture. By default, Mono
aligns stack frames to 16 bytes on x86, so that local floating point
and SIMD variables can be properly aligned. This option turns off the
-alignment, which usually saves one intruction per call, but might
+alignment, which usually saves one instruction per call, but might
result in significantly lower floating point and SIMD performance.
.TP
\fB--jitmap\fR
of the number of generic parameters).
.Sp
If the constructor or method take arguments, these are listed within
-paranthesis after the constructor/method name:
+parenthesis after the constructor/method name:
.Sp
.I M:System.Object..ctor
,
.I "P:"
Refers to a property. If the property is an indexer or takes parameters,
the parameter types are appended to the property name and enclosed with
-paranthesis:
+parenthesis:
.I P:System.String.Length
,
.I P:System.String.Chars(System.Int32)
NOTES:
Ngsql is the .Net Data Provider for PosgreSQL. The
-latest verison can be downloaded from
+latest version can be downloaded from
http://npgsql.projects.postgresql.org/
MySql.Data is the MySQL Connector/Net for connecting to MySql databases.
code ();
}
- * Avoid using unecessary open/close braces, vertical space
+ * Avoid using unnecessary open/close braces, vertical space
is usually limited:
good:
MyHelperClass.cli.cs
MyHelperClass.jvm.cs
- By using partial classes.
\ No newline at end of file
+ By using partial classes.
code ();
}
- * Avoid using unecessary open/close braces, vertical space
+ * Avoid using unnecessary open/close braces, vertical space
is usually limited:
good:
// This is a copy of external/referencesource/System.Runtime.Caching/Resources/R.Designer.cs
-// This verison does not use ResourceManager, instead it uses hard coded strings.
+// This version does not use ResourceManager, instead it uses hard coded strings.
// This should be removed once Mono has access to .NET resources.
namespace System.Runtime.Caching.Resources {
for (i = 0; i < ctx.code_size && i < ip_offset; ++i) {
if (ctx.code [i].flags & IL_CODE_FLAG_WAS_TARGET) {
if (!(ctx.code [i].flags & IL_CODE_FLAG_SEEN))
- ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Branch or exception block target middle of intruction at 0x%04x", i));
+ ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Branch or exception block target middle of instruction at 0x%04x", i));
if (ctx.code [i].flags & IL_CODE_DELEGATE_SEQUENCE)
CODE_NOT_VERIFIABLE (&ctx, g_strdup_printf ("Branch to delegate code sequence at 0x%04x", i));
./make_exception_overlap_test.sh exception_entry_overlap_try_over_filter invalid ".try TRY_BLOCK_1 to FILTER_BLOCK_3_A filter FILTER_BLOCK_3 handler CATCH_BLOCK_1 to CATCH_BLOCK_1_END" ".try TRY_BLOCK_2 to TRY_BLOCK_2_END catch [mscorlib]System.Exception handler CATCH_BLOCK_2 to CATCH_BLOCK_2_END" "yes"
-#blocks start in the middle of an intruction
+#blocks start in the middle of an instruction
./make_exception_overlap_test.sh try_block_start_in_the_middle_of_a_instruction invalid ".try AFTER_PREFIX_1 to TRY_BLOCK_1_END catch [mscorlib]System.Exception handler CATCH_BLOCK_1 to CATCH_BLOCK_1_END" ".try TRY_BLOCK_2 to TRY_BLOCK_2_END catch [mscorlib]System.Exception handler CATCH_BLOCK_2 to CATCH_BLOCK_2_END"
./make_exception_overlap_test.sh catch_block_start_in_the_middle_of_a_instruction invalid ".try TRY_BLOCK_1 to TRY_BLOCK_1_END catch [mscorlib]System.Exception handler AFTER_PREFIX_2 to CATCH_BLOCK_1_END" ".try TRY_BLOCK_2 to TRY_BLOCK_2_END catch [mscorlib]System.Exception handler CATCH_BLOCK_2 to CATCH_BLOCK_2_END"