diff options
author | Michal Strehovský <michals@microsoft.com> | 2015-10-28 06:23:17 +0300 |
---|---|---|
committer | Michal Strehovský <michals@microsoft.com> | 2015-10-28 19:17:32 +0300 |
commit | 59c931b0493534094f344b309bee79a707c3ba9f (patch) | |
tree | 3ca0e799de458e93c864a34e55836b9523141b1f /src/JitInterface | |
parent | 3c3b4b37f021be3c689058d4602d581778c29620 (diff) |
Half-implement thread statics
The implementation mirrors the way we implement GC statics. The actual
storage for thread static fields will be allocated at runtime on the GC
heap and the helper to get to the static base will need to indirect
through the GC handle table. Most of the piping within the compiler is
present. What is not present is:
* Actually allocating an object that represents the static block. We
will need to decide whether we want to do it lazily, or on thread
attach, or...
* Putting the "region of handles to thread static blocks" in a thread
static section of the executable. This likely needs some work on the
ObjWriter side.
* The helper to get the thread static base is implemented as INT3.
This way we don't need to blacklist 3 methods for Linux Hello World.
Diffstat (limited to 'src/JitInterface')
-rw-r--r-- | src/JitInterface/src/CorInfoImpl.cs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/JitInterface/src/CorInfoImpl.cs b/src/JitInterface/src/CorInfoImpl.cs index a4ffc22f7..72154bf23 100644 --- a/src/JitInterface/src/CorInfoImpl.cs +++ b/src/JitInterface/src/CorInfoImpl.cs @@ -1167,7 +1167,7 @@ namespace Internal.JitInterface ReadyToRunHelperId helperId; if (field.IsThreadStatic) { - throw new NotImplementedException(); + helperId = ReadyToRunHelperId.GetThreadStaticBase; } else if (field.HasGCStaticBase) { |