-
Notifications
You must be signed in to change notification settings - Fork 214
Runtime merge #579
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Runtime merge #579
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This is possibly fixed by dotnet/runtime#44124 Since that PR mono will throw a ThreadStartException instead of an ExecutionEngineException if thread creation fails. The threadpool already catches ThreadStartException and can deal with thread creation failure. Related to dotnet/runtime#43981
This PR introduces interned string support to the bindings layer along with some related changes:
The JS bindings layer maintains a pair of string intern tables, one mapping JS string -> managed pointer and the other mapping managed pointer -> JS string.
Any interned managed string is automatically added to the JS intern tables when it crosses the bindings boundary, to avoid duplicate allocations + reduce time spent copying/decoding text.
Signatures gain a new type token S which specifies that the argument is an interned string. If the string passed is not already interned, the JS bindings will automatically intern it on both sides.
The bindings layer logic for creating a new managed string will automatically look it up in the local intern table (unless it is large) and use the existing managed string if an interned string is found.
mono_wasm_get_obj_type and similar APIs now return a distinct type ID for interned strings. The logic for this is awkward but doing it in the driver is much faster than trying to do it from JS.
Partial support for converting JS Symbol instances to interned managed strings in the bindings layer. I didn't finish this yet because v8 shell's Symbol support is broken, but it's a good way to achieve interning because the JS runtime exposes interning for symbols.
* Linux: don't use deprecated sysctl * Handle deprecated sysctl in coreclr, gc, corehost.
* Add `MarshalInfo::IsValueClass`. * Add `TypeHandle* pTypeHandle` to `SizeOf`. * Add a few asserts/start using inline function instead of macro. * use TARGET_POINTER_SIZE instead of STACK_ELEM_SIZE. * Use `m_curOfs` instead of `m_idxStack` in `ArgIteratorBase` on all platforms. Before some platforms were using stackSlots, some curOfs in bytes. * Use byte sizes and offsets in `ArgLocDesc`. Fix arm32. x86 fixes. use StackSize on ArgSizes Add `GetStackArgumentByteIndexFromOffset` and return back the old values for asserts. another fix * Stop using `#define STACK_ELEM_SIZE` * Add `isFloatHfa`. * delete checking code. because it won't pass on arm64 apple. * arm64 apple fixes. * roundUp the stack size. * Add a reflection test. * Return byte offset from `GetNextOfs`. It is not a complete fix for arm64 apple, but covers most cases. * Add `FLOAT_REGISTER_SIZE` * Use StackElemSize for ` pLoc->m_byteStackSize`. * replace `assert` with `_ASSERTE`. * Use `ALIGN_UP` in the code that I have changed. * rename `m_curOfs` as `m_ofsStack`. * delete "ceremony " from `StackElemSize`. * Delete `cSlots` and don't call `StackElemSize` on `GetArgSize`. * Fix an assert. * Fix nit. * fix wrong return for hfa<float>. * fix nit. * Fix crossgen job.
* First pass to move the vm to use CorInfoCallConvExtension for all IL-stub-related calling convention needs. * Use CorInfoCallConvExtension all the way down to the native function signature emit stage. * PR feedback. * Fix variable name. * Update src/coreclr/vm/dllimport.cpp
The current implementation has an inefficiency. When moving a file across volumes, and when the target file doesn't exist, the "rename" syscall will be called twice (unsuccesfully) instead of once. By branching on "overwrite" from the beginning, we avoid calling the first "rename" in vain. Co-authored-by: Konstantin Gukov <[email protected]>
…on Windows (#47034) * Enable GetHostEntryAsync_InvalidHost_LogsError on Windows too * Use WaitForErrorEventAsync instead of a naive Task.Delay Cf. dotnet/runtime#47034 (comment)
* Optimize Activity Ids * Generate long random numbers and make the generator object a threadstatic * Addnew line at the end of the file * Update the Random number generator * Fix Full Framework failure * Address the feedback regarding ranomizing Guid bits * address more Feedback * Address more feedback
Looks like it was never bumped to bring in dotnet/core-eng#10033 (comment)
…d net461 (#46458) * Reduce allocations in System.Threading.Channels for netstandard2.* and net461 System.Threading.Channels.AsyncOperation<TResult> is well optimized for .NET Core, but there are no optimizations for .NET Standard 2.0 and .NET Framework. They use the same code as .NET Standard 1.3. * Remove execution flow suppression as redundant * Rollback QueueUserWorkItem
'sisxth' -> 'sixth' Fixes #47292
* Exporting DotNetRuntimeInfo from singlefilehost * move runtimeinfo into a separate lib * enable runtimeinfo on macOS * export only runtimeinfo * fix FreeBSD build * revert DLLEXPORT change
* Parse method call chain model file and resolve methods * Resolve methods from Azure profile trace building a list of caller->callees with counts to use in compilation heuristics * Resolves the two main forms of methods we see in the traces: ``` System.Core.ni.dll!System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.__Canon,System.__Canon].MoveNext Microsoft.Azure.Monitoring.WarmPath.FrontEnd.Middleware.SecurityMiddlewareBase`1+<Invoke>d__6[System.__Canon]!MoveNext ```
…name contains android (#47045) Co-authored-by: Steve Pfister <[email protected]>
During my work on switching over framework library crossgenning to use Crossgen2 I noticed that jitinterface is missing the file version information. This change fixes the issue. Thanks Tomas
* Improved logger for the AOT compiler. The logic is mostly taken from IL Linker where prople spent a bunch of time on it. * Bunch of other changes.
This PR intentionally does not include any of the modifications on top of them or other files that will be needed to wire them up to the build.
This reverts commit f3cd4c6.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.