summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorJohn Doe <github.john.doe@outlook.com>2018-06-19 13:26:30 -0700
committerJan Kotas <jkotas@microsoft.com>2018-06-19 13:26:30 -0700
commitd92a3cf483b06a7103a80e4ed8c8ee8a519a688e (patch)
treeb87d7e279766fb020bd522d08cdc0ac74e180352 /Documentation
parent3643c064f7b41558e08ef16337d8c0379d238138 (diff)
downloadcoreclr-d92a3cf483b06a7103a80e4ed8c8ee8a519a688e.tar.gz
coreclr-d92a3cf483b06a7103a80e4ed8c8ee8a519a688e.tar.bz2
coreclr-d92a3cf483b06a7103a80e4ed8c8ee8a519a688e.zip
Typo (#18550)
* accesible -> accessible * acheive -> achieve * addtional -> additional * affars -> affairs * approch -> approach * archtecture -> architecture * aritmetic -> arithmetic * arquired -> acquired * assigments -> assignments * assmblies -> assemblies
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/botr/clr-abi.md2
-rw-r--r--Documentation/botr/dac-notes.md2
-rw-r--r--Documentation/building/crossgen.md2
-rw-r--r--Documentation/design-docs/code-versioning.md2
-rw-r--r--Documentation/design-docs/eh-writethru.md2
-rw-r--r--Documentation/design-docs/first-class-structs.md2
-rw-r--r--Documentation/design-docs/inline-size-estimates.md6
-rw-r--r--Documentation/project-docs/jit-testing.md2
8 files changed, 10 insertions, 10 deletions
diff --git a/Documentation/botr/clr-abi.md b/Documentation/botr/clr-abi.md
index 6f37357742..ea5a49ed97 100644
--- a/Documentation/botr/clr-abi.md
+++ b/Documentation/botr/clr-abi.md
@@ -603,7 +603,7 @@ JIT32 only generates one epilog (and causes all returns to branch to it) when th
# Synchronized Methods
-JIT32/RyuJIT only generates one epilog (and causes all returns to branch to it) when a method is synchronized. See `Compiler::fgAddSyncMethodEnterExit()`. The user code is wrapped in a try/finally. Outside/before the try body, the code initializes a boolean to false. `CORINFO_HELP_MON_ENTER` or `CORINFO_HELP_MON_ENTER_STATIC` are called, passing the lock object (the "this" pointer for instance methods or the Type object for static methods) and the address of the boolean. If the lock is acquired, the boolean is set to true (as an 'atomic' operation in the sense that a Thread.Abort/EH/GC/etc. cannot interrupt the Thread when the boolean does not match the arquired state of the lock). JIT32/RyuJIT follows the exact same logic and arguments for placing the call to `CORINFO_HELP_MON_EXIT` / `CORINFO_HELP_MON_EXIT_STATIC` in the finally.
+JIT32/RyuJIT only generates one epilog (and causes all returns to branch to it) when a method is synchronized. See `Compiler::fgAddSyncMethodEnterExit()`. The user code is wrapped in a try/finally. Outside/before the try body, the code initializes a boolean to false. `CORINFO_HELP_MON_ENTER` or `CORINFO_HELP_MON_ENTER_STATIC` are called, passing the lock object (the "this" pointer for instance methods or the Type object for static methods) and the address of the boolean. If the lock is acquired, the boolean is set to true (as an 'atomic' operation in the sense that a Thread.Abort/EH/GC/etc. cannot interrupt the Thread when the boolean does not match the acquired state of the lock). JIT32/RyuJIT follows the exact same logic and arguments for placing the call to `CORINFO_HELP_MON_EXIT` / `CORINFO_HELP_MON_EXIT_STATIC` in the finally.
# Rejit
diff --git a/Documentation/botr/dac-notes.md b/Documentation/botr/dac-notes.md
index adeb9a8cee..bd2aec315e 100644
--- a/Documentation/botr/dac-notes.md
+++ b/Documentation/botr/dac-notes.md
@@ -152,7 +152,7 @@ In addition to pointer types, the DAC must also marshal static and global values
The TADDR and PCODE types we introduced in the example of DAC operation are pure target addresses. These are actually integer types, rather than pointers. This prevents code in the host from incorrectly dereferencing them. The DAC does not treat them as pointers either. Specifically, because we have no type or size information no dereferencing or marshalling can occur. We use these primarily in two situations: when we are treating a target address as pure data and when we need to do pointer arithmetic with target addresses (although we can also do pointer arithmetic with PTR types). Of course, because TADDRs have no type information for the target locations they specify, when we perform address arithmetic, we need to factor in the size explicitly.
-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.
+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 arithmetic), 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 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.
diff --git a/Documentation/building/crossgen.md b/Documentation/building/crossgen.md
index ff26094214..cc825b4dde 100644
--- a/Documentation/building/crossgen.md
+++ b/Documentation/building/crossgen.md
@@ -55,7 +55,7 @@ Using native images
-------------------
Running CrossGen on an assembly creates a "native image" file, with the extension of `.ni.dll` or `.ni.exe`.
-You should include the native images in your app, either by replacing the original MSIL assmblies with the native images, or by putting the native images next to the MSIL assemblies.
+You should include the native images in your app, either by replacing the original MSIL assemblies with the native images, or by putting the native images next to the MSIL assemblies.
When the native images are present, CoreCLR runtime will automatically use it instead of the original MSIL assemblies.
Common errors
diff --git a/Documentation/design-docs/code-versioning.md b/Documentation/design-docs/code-versioning.md
index 2542c77cb4..fdf8413871 100644
--- a/Documentation/design-docs/code-versioning.md
+++ b/Documentation/design-docs/code-versioning.md
@@ -381,5 +381,5 @@ A few (completely uncommited) thoughts on how this area of the code might evolve
- On stack replacement requires that publication not only redirect new method invocations to a new version, but also continued execution of existing method invocations must redirect to a new version.
- Performance improvements that utilize more memory / cpu efficient data structures.
- Add new build pipeline stage accessible from managed code APIs to do self-modifying code.
-- Add new build pipeline stage accesible from out-of-process or maybe runtime managed that could handle hot-patching app deployment scenarios.
+- Add new build pipeline stage accessible from out-of-process or maybe runtime managed that could handle hot-patching app deployment scenarios.
- Allow for an extensible set of stages rather than the current hard-coded set, perhaps to allow N profilers to all collaboratively edit. Some form of multi-profiler collaboration has long been requested and this seems a fairly powerful (and potentially way too complicated) form.
diff --git a/Documentation/design-docs/eh-writethru.md b/Documentation/design-docs/eh-writethru.md
index 966a80f163..602ac0ba23 100644
--- a/Documentation/design-docs/eh-writethru.md
+++ b/Documentation/design-docs/eh-writethru.md
@@ -61,7 +61,7 @@ There are a number of wrinkles informing this design based on how the JIT models
- The jit does not model which handlers are reachable from a given protected region,
so considers a variable live into a handler if it is live into any handler in the method.
-It is posible to do better than the "store every definition" approch outlined
+It is posible to do better than the "store every definition" approach outlined
in the design, but the expectation is that this would require posibly
modifying the model in the JIT and staging more throughput intensive analyses.
With these considerations this design was selected and further improvements
diff --git a/Documentation/design-docs/first-class-structs.md b/Documentation/design-docs/first-class-structs.md
index a461ba572b..039db9406a 100644
--- a/Documentation/design-docs/first-class-structs.md
+++ b/Documentation/design-docs/first-class-structs.md
@@ -360,7 +360,7 @@ And Here is the resulting code just prior to code generation:
│ ┌──▌ const struct4 0 REG rax $81
└──▌ return struct4 REG NA $140
```
-Finally, here is the resulting code that we were hoping to acheive:
+Finally, here is the resulting code that we were hoping to achieve:
```
xor eax, eax
```
diff --git a/Documentation/design-docs/inline-size-estimates.md b/Documentation/design-docs/inline-size-estimates.md
index 12286c7f5d..b7a2f16bf9 100644
--- a/Documentation/design-docs/inline-size-estimates.md
+++ b/Documentation/design-docs/inline-size-estimates.md
@@ -27,7 +27,7 @@ sort of size estimate `CallerSize'`. The simplest estimate is that
(1) `CallerSize'` = `CallerSize + CalleeSize`
```
-However, calling conventions impose some addtional code overhead on
+However, calling conventions impose some additional code overhead on
both the caller and callee. The caller must set up arguments in
registers or on the stack, and if there is a return value, might need
to move it or store it somewhere. It also might need to spill values
@@ -47,7 +47,7 @@ the number and kind of arguments passed from caller to callee.
Note that it's entirely possible that `Overhead > CalleeSize`, so
that `CallerSize' < CallerSize`, that is the inline not only results
-in faster code but also in smaller code. Indeed this state of affars
+in faster code but also in smaller code. Indeed this state of affairs
is increasingly common with that advent of modern programming styles
that emphasize building functionality out of lots of small procedures.
@@ -198,7 +198,7 @@ to be practical.
Second, even if we could obtain the actual size of prospective inline
candidates, we might not want to use this data. The final code
sequence emitted by the compiler depends intimately on details of the
-target archtecture, runtime conventions (ABIs), and capabilites of the
+target architecture, runtime conventions (ABIs), and capabilites of the
compiler phases that run after inlining. If we allow feedback into hey
heuristics by incorporating data from these "downstream" sources, we
introduce various forms of coupling that have important
diff --git a/Documentation/project-docs/jit-testing.md b/Documentation/project-docs/jit-testing.md
index 63c6a63dd9..bebcf2106e 100644
--- a/Documentation/project-docs/jit-testing.md
+++ b/Documentation/project-docs/jit-testing.md
@@ -43,7 +43,7 @@ It seems sensible for Microsoft to focus on opening up the JIT self-host
(aka JITSH) tests first. A few other tasks are also Microsoft specific and are
marked with (MS) below.
-Other than that the priority, task list, and possibly assigments are open to
+Other than that the priority, task list, and possibly assignments are open to
discussion.
### (MS) Bring up equivalent of the JITSH tests