summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorFilip Navara <filip.navara@gmail.com>2019-01-23 22:13:01 +0100
committerJan Kotas <jkotas@microsoft.com>2019-01-23 13:13:01 -0800
commita28b25aacdcd2adb0fdfa70bd869f53ba6565976 (patch)
treed37eeacbb212a5633edabf93300dbcd18980f13f /Documentation
parent797888982e264e2ecfbc436f782f2f6704644e84 (diff)
downloadcoreclr-a28b25aacdcd2adb0fdfa70bd869f53ba6565976.tar.gz
coreclr-a28b25aacdcd2adb0fdfa70bd869f53ba6565976.tar.bz2
coreclr-a28b25aacdcd2adb0fdfa70bd869f53ba6565976.zip
Remove all traces of FEATURE_STACK_PROBE. (#22149)
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/botr/mscorlib.md2
-rw-r--r--Documentation/botr/profilability.md2
-rw-r--r--Documentation/coding-guidelines/clr-code-guide.md17
-rw-r--r--Documentation/project-docs/clr-configuration-knobs.md1
4 files changed, 5 insertions, 17 deletions
diff --git a/Documentation/botr/mscorlib.md b/Documentation/botr/mscorlib.md
index d5fc85e5dd..83c3b68e9d 100644
--- a/Documentation/botr/mscorlib.md
+++ b/Documentation/botr/mscorlib.md
@@ -121,7 +121,7 @@ The QCall entrypoint has to be registered in tables in [vm\ecalllist.h][ecalllis
BOOL QCALLTYPE FooNative::Bar(int flags, LPCWSTR wszString, QCall::StringHandleOnStack retString)
{
// All QCalls should have QCALL_CONTRACT.
- // It is alias for THROWS; GC_TRIGGERS; MODE_PREEMPTIVE; SO_TOLERANT.
+ // It is alias for THROWS; GC_TRIGGERS; MODE_PREEMPTIVE.
QCALL_CONTRACT;
// Optionally, use QCALL_CHECK instead and the expanded form of the contract
diff --git a/Documentation/botr/profilability.md b/Documentation/botr/profilability.md
index 528c3f1e07..1001b6ad99 100644
--- a/Documentation/botr/profilability.md
+++ b/Documentation/botr/profilability.md
@@ -69,7 +69,6 @@ Each and every callback wrapper must have some common gunk at the top. Here's a
// Yay!
ASSERT_NO_EE_LOCKS_HELD();
- SO_NOT_MAINLINE;
}
CONTRACTL_END;
CLR_TO_PROFILER_ENTRYPOINT((LF_CORPROF,
@@ -167,7 +166,6 @@ Each and every Info function must have some common gunk at the top. Here's an e
// Yay!
CANNOT_TAKE_LOCK;
- SO_NOT_MAINLINE;
}
CONTRACTL_END;
PROFILER_TO_CLR_ENTRYPOINT_SYNC((LF_CORPROF,
diff --git a/Documentation/coding-guidelines/clr-code-guide.md b/Documentation/coding-guidelines/clr-code-guide.md
index c1f69b04d2..e212d1a3a2 100644
--- a/Documentation/coding-guidelines/clr-code-guide.md
+++ b/Documentation/coding-guidelines/clr-code-guide.md
@@ -76,9 +76,8 @@ Written in 2006, by:
* [2.10.1.5 LOADS_TYPE(loadlevel)](#2.10.1.5)
* [2.10.1.6 CAN_TAKE_LOCK / CANNOT_TAKE_LOCK](#2.10.1.6)
* [2.10.1.7 EE_THREAD_REQUIRED / EE_THREAD_NOT_REQUIRED](#2.10.1.7)
- * [2.10.1.8 SO_TOLERANT/SO_INTOLERANT](#2.10.1.8)
- * [2.10.1.9 PRECONDITION(expr)](#2.10.1.9)
- * [2.10.1.10 POSTCONDITION(expr)](#2.10.1.10)
+ * [2.10.1.8 PRECONDITION(expr)](#2.10.1.8)
+ * [2.10.1.9 POSTCONDITION(expr)](#2.10.1.9)
* [2.10.2 Is order important?](#2.10.2)
* [2.10.3 Using the right form of contract](#2.10.3)
* [2.10.4 When is it safe to use a runtime contract?](#2.10.4)
@@ -1207,19 +1206,11 @@ You should only use BEGIN/END_GETTHREAD_ALLOWED(_IN_NO_THROW_REGION) if:
If the latter is true, it's generally best to push BEGIN/END_GETTHREAD_ALLOWED down the callee chain so all callers benefit.
-#### <a name="2.10.1.8"/>2.10.1.8 SO_TOLERANT/SO_INTOLERANT
-
-These are related to stack probes. SO_TOLERANT means the function is written in such a way that it is safe to throw a StackOverflow exception between any two instructions. It doesn't update global state, doesn't modify data structures, and doesn't call out to the operating system.
-
-If you don't specify SO_TOLERANT, the function is treated as SO_INTOLERANT.
-
-The CLR asserts if you invoke an SO_INTOLERANT function outside the scope of a stack probe. The probe's purpose is to check in advance if sufficient stack is available and trigger the SO exception before venturing into SO_INTOLERANT code.
-
-#### <a name="2.10.1.9"/>2.10.1.9 PRECONDITION(_expr_)
+#### <a name="2.10.1.8"/>2.10.1.8 PRECONDITION(_expr_)
This is pretty self-explanatory. It is basically an **_ASSERTE.** Both _ASSERTE's and PRECONDITIONS are used widely in the codebase. The expression can evaluate to either a Boolean or a Check.
-#### <a name="2.10.1.10"/>2.10.1.10 POSTCONDITION(_expr_)
+#### <a name="2.10.1.9"/>2.10.1.9 POSTCONDITION(_expr_)
This is an expression that's tested on a _normal_ function exit. It will not be tested if an exception is thrown out of the function. Postconditions can access the function's locals provided that the locals were declared at the top level scope of the function. C++ objects will not have been destructed yet.
diff --git a/Documentation/project-docs/clr-configuration-knobs.md b/Documentation/project-docs/clr-configuration-knobs.md
index 4797d75483..328fdaafb5 100644
--- a/Documentation/project-docs/clr-configuration-knobs.md
+++ b/Documentation/project-docs/clr-configuration-knobs.md
@@ -816,7 +816,6 @@ Name | Description | Type | Class | Default Value | Flags
`MscorsnLogging` | Enables strong name logging | `DWORD` | `INTERNAL` | `0` | REGUTIL_default
`NativeImageRequire` | | `DWORD` | `EXTERNAL` | `0` | REGUTIL_default
`NestedEhOom` | | `DWORD` | `INTERNAL` | `0` | REGUTIL_default
-`NO_SO_NOT_MAINLINE` | | `DWORD` | `EXTERNAL` | `0` | REGUTIL_default
`NoGuiOnAssert` | | `DWORD` | `INTERNAL` | `INTERNAL_NoGuiOnAssert_Default` | REGUTIL_default
`NoProcedureSplitting` | | `DWORD` | `EXTERNAL` | `0` | REGUTIL_default
`NoStringInterning` | Disallows string interning. I see no value in it anymore. | `DWORD` | `INTERNAL` | `1` | REGUTIL_default