Fix spelling and grammar.
authorBen Monroe <bendono@gmail.com>
Wed, 9 Mar 2016 02:28:46 +0000 (11:28 +0900)
committerBen Monroe <bendono@gmail.com>
Wed, 9 Mar 2016 02:28:46 +0000 (11:28 +0900)
Documentation/botr/dac-notes.md
Documentation/botr/profiling.md
Documentation/botr/ryujit-overview.md
Documentation/botr/virtual-stub-dispatch.md

index f1f64375c603b69f0a8d12236b971d6630fb8811..adeb9a8cee51c7df99ad14932ad469374ad9425b 100644 (file)
@@ -154,7 +154,7 @@ The TADDR and PCODE types we introduced in the example of DAC operation are pure
 
 We also have one special class of PTRs that don't involve marshaling: PTR\_VOID and PTR\_CVOID. These are the target equivalents of void \* and const void \*, respectively. Because TADDRs are simply numbers, they don't have pointer semantics, which means that if we DACize code by converting void \* to TADDR (as was often the case in the past), we often need extra casts and other changes, even in code that does not compile for the DAC. Using PTR\_VOID makes it easier and cleaner to DACize code that uses void \* by preserving the semantics expected for void \*. If we DACize a function that uses PTR\_VOID or PTR\_CVOID, we can't directly marshal data from these addresses, since we have no idea how much data we would need to read. This means we can't dereference them (or even do pointer aritmetic), but this is identical to the semantics of void \*. As is the case for void \*, we generally cast them to a more specific PTR type when we need to use them. We also have a PTR\_BYTE type, which is a standard marshaled target pointer (that supports pointer arithmetic, etc.). In general, when we DACize code, void \* becomes PTR\_VOID and BYTE \* becomes PTR\_BYTE, just as you would expect. [daccess.h][daccess.h] has explanatory comments that provide more details about the use and semantics of the PTR\_VOID type.
 
-Occasionally, legacy code stores a target address in a host pointer type such as void \*. This is always a bug and makes it extremely difficult to reason about the code. It will also break when we support cross-platform, where the pointer types are differenct sizes). In DAC builds, the void \* type is a host pointer which should never contain a target address. Using PTR\_VOID instead allows us to indicate that a void pointer type is a target address. We are trying to eliminate all such uses, but some are quite pervasive in the code and will take a while to eliminate entirely.
+Occasionally, legacy code stores a target address in a host pointer type such as void \*. This is always a bug and makes it extremely difficult to reason about the code. It will also break when we support cross-platform, where the pointer types are different sizes). In DAC builds, the void \* type is a host pointer which should never contain a target address. Using PTR\_VOID instead allows us to indicate that a void pointer type is a target address. We are trying to eliminate all such uses, but some are quite pervasive in the code and will take a while to eliminate entirely.
 
 ### Conversions
 
index b66e236cdd1647ae2354a8fc8e154e04cccf5f22..b83f78b5bd1fae957976492b966dd9c886624192 100644 (file)
@@ -390,7 +390,7 @@ There are four types of statics. The following table describes what they are and
 Exceptions
 ----------
 
-Notifications of exceptions are the most difficult of all notifications to describe and to understand.  This is because of the inherent complexity in exception processing.  The set of exception notifications described below was designed to provide all the information required for a sophisticated profiler – so that, at every instant, it can keep track of which pass (first or second), which frame, which filter and which finally block is being executed, for every thread in the profilee process. Note that the Exception notifications do not provide any _threadID's_ but the a profiler can always call _ICorProfilerInfo::GetCurrentThreadID_ to discover which managed thread throws the exception.
+Notifications of exceptions are the most difficult of all notifications to describe and to understand.  This is because of the inherent complexity in exception processing.  The set of exception notifications described below was designed to provide all the information required for a sophisticated profiler – so that, at every instant, it can keep track of which pass (first or second), which frame, which filter and which finally block is being executed, for every thread in the profilee process. Note that the Exception notifications do not provide any _threadID's_ but a profiler can always call _ICorProfilerInfo::GetCurrentThreadID_ to discover which managed thread throws the exception.
 
 ![Exception callback sequence]: profiling-exception-callback-sequence.png
 
index afbd1a0bfdfcec923db13e85f55760e291d9ad8e..e404b1f91db3843f7bdcfa7e13745ccd75d00136 100644 (file)
@@ -3,7 +3,7 @@ JIT Compiler Structure
 
 # Introduction
 
-RyuJIT is the code name for the next generation Just in Time Compiler (aka “JIT”) for the AMD64 .NET runtime . Its first implementation is for the AMD64 architecture. It is derived from a code base that is still in use for the other targets of .NET.
+RyuJIT is the code name for the next generation Just in Time Compiler (aka “JIT”) for the AMD64 .NET runtime. Its first implementation is for the AMD64 architecture. It is derived from a code base that is still in use for the other targets of .NET.
 
 The primary design considerations for RyuJIT are to:
 
index ef563bfa1a798bdd98ed0dac5a9f89eddee3477f..8d5a52c47a2f9c5384a0ba7491a8ea87fbfdb701 100644 (file)
@@ -79,7 +79,7 @@ This is an array that, for each method body introduced by the type, has a pointe
 
 The reason for this format is that it provides a natural extension to the classic v-table layout. As a result many entries in the slot map (described below) can be inferred by this order and other details such as the total number of virtuals and non-virtuals for the class.
 
-When stub dispatch for virtual instance methods is disabled (as it is currently), the implementation table is non-existant and is substituted with a true vtable. All mapping results are expressed as slots for the vtable rather than an implementation table. Keep this in mind when implementation tables are mentioned throughout this document.
+When stub dispatch for virtual instance methods is disabled (as it is currently), the implementation table is non-existent and is substituted with a true vtable. All mapping results are expressed as slots for the vtable rather than an implementation table. Keep this in mind when implementation tables are mentioned throughout this document.
 
 #### Slot Map