summaryrefslogtreecommitdiff
path: root/src/vm/object.h
AgeCommit message (Collapse)AuthorFilesLines
2016-12-21Delete FEATURE_LEGACYSURFACE (#8704)Jan Kotas1-8/+0
2016-12-05[x86/Linux] Revise COMPlusThrowCallback (#8430)Jonghyun Park1-0/+2
GetCallerToken and GetImpersonationToken methods in FrameSecurityDescriptorBaseObject are implemented only for Windows-platform.
2016-11-10Expose some things for ns2.0Koundinya Veluri1-3/+16
Mostly: - Exposed flow-related methods on `ExecutionContext` - Enabled and exposed `SynchronizationContext` wait overriding Realted issues: - dotnet/corefx#11638 - dotnet/corefx#11633 - dotnet/corefx#11635 - dotnet/corefx#11636 - dotnet/corefx#13484
2016-11-01Enable the rest of netstandard1.7 globalization APIs (#7935)Tarek Mahmoud Sayed1-2/+0
* Enable more netstandard 1.7 Globalization APIs * Enable Windows support for the new APIs * Fix spaces and line alignments
2016-10-17Enable NumberFormatInfo netstandard 1.7 APIs (#7659)Tarek Mahmoud Sayed1-2/+0
* Enable NumberFormatInfo netstandard 1.7 APIs * Remove ComVisible attributes * Remove more ComVisible attributes
2016-08-23Enable more code under globalization for netcoreTarek Mahmoud Sayed1-14/+9
This fix is to enable the code handling LCID for Windows in globalization namespace
2016-08-14Port serialization implementation to Unix globalization typesStephen Toub1-2/+0
These will need to be tested. They are a straight port from the Windows implementation, but the implementation has diverged, and it's possible (likely) there are some differences I didn't catch.
2016-08-14Restore most serialization implementations in coreclrStephen Toub1-2/+0
I audited all uses of FEATURE_SERIALIZATION in coreclr and removed most of the ifdef'ing. The remaining uses of FEATURE_SERIALIZATION are primary related to actually implementing formatters, CAS-related types, and a few types I've left non-serializable (e.g. ExecutionContext) but that we can revisit later if needed.
2016-07-09Fix exceptions in GC (#6192)Jan Vorlicek1-0/+2
The GC code in general doesn't expect exceptions to be thrown from functions it calls. However, the event creation functions were in fact throwing, so in case of OOM, exception would be thrown from various places of the code. This change creates non-throwing versions of the event creation functions and replaces all usages of the throwing ones in the GC. In addition, I've removed blocks with PAL_TRY that were under NO_CATCH_HANDLERS define and also added Object::SetAppDomainNoThrow, which allowed me to removed EX_TRY from GCHeap::StressHeap where the Object::SetAppDomain was called before.
2016-05-17Update StringObject comment in object.h (#5011)Matt Warren1-5/+1
* m_ArrayLength is no longer present (I did a search of the source and couldn't find it), so this comment is misleading. * Also removing mis-leading comment about high two bits of field
2016-05-10Improve performance of ExecutionContextSwitcher to help async invocation perfgeoffkizer1-1/+4
2016-03-09Delete dead codeJan Kotas1-12/+2
- Delete BINDER, STANDALONE_BINDER and MDIL ifdefs
2016-01-27Update license headersdotnet-bot1-4/+3
2015-10-20Implementation of System V ABI struct passing.Lubomir Litchev1-0/+10
This PR adds support for System V x86_64 ABI classification and calling convention to the VM and the Jit, including, but not limited to Ubuntu Linux and Mac OS X. The general rules outlined in the System V x86_64 ABI (described at http://www.x86-64.org/documentation/abi.pdf) are followed with a few little exceptions, described below: 1. The hidden argument for by-value passed structs is always after the ÎéÎíthisÎéÎí parameter (if there is one.). This is a difference with the Sysetem V ABI and affects only the internal jit calling conventions. For PInvoke calls the hidden argument is always the first parameter since there is no ÎéÎíthisÎéÎí parameter in this case. 2. Managed structs that have no fields are always passed by-value on the stack. 3. The jit proactively generates frame register frames (with RBP as a frame register) in order to aid the native OS tooling for stack unwinding and the like.
2015-10-16Fix Windows x86 build - use macro for friend declarationKoundinya Veluri1-2/+3
2015-10-12Add some fast paths that are missing outside WindowsKoundinya Veluri1-0/+1
- Allocation fast path for arrays of object elements - On Linux, a microbenchmark is 25% faster with the portable fast path - On Windows with the asm fast path, the microbenchmark was 52% faster than on Linux before, and is now 22% faster with the portable fast path - On Windows, the portable fast path is within 4% slower than the asm fast path - Allocation fast path for objects - On Linux, a microbenchmark is 200% faster with the portable fast path - On Windows with the asm fast path, the microbenchmark was 325% faster than on Linux before, and is now 43% faster with the portable fast path - On Windows, the portable fast path is within 1% slower than the asm fast path - Skipped the Box fast path since that seems to be inlined into jitted code using the new object fast path. As a result of adding the new object fast path, boxing perf has also improved outside Windows similarly to above.
2015-10-09Add allocation fast path for arrays of value type elements outside WindowsKoundinya Veluri1-0/+1
- A microbenchmark involving byte array allocation was about 200% faster on Windows compared to Linux - On Windows, using the portable version of the fast path is about 5% slower than using the asm version on the microbenchmark - On Linux, using the portable fast path improves the microbenchmark perf by 160% - With the fast path enabled on Linux, the microbenchmark on Windows (with asm fast path) is now about 17% faster than on Linux.
2015-03-26Fix about 12 kinds of warnings over the codebaseJan Vorlicek1-2/+2
This change fixes: 1) Member initiazalization order in class constructor didn't correspond to the member order in some classes 2) Objects with vtables were copied via memcpy. While this is intentional, cast of the pointers to void* is required to silence clang warning 3) Switch case statements containing values of different enums 4) Casting int to pointer 5) Missing return value in methods with _ASSERTE 6) Class name classifier on methods in the .h 7) Invalid position of the DECLSPEC_ALIGN at few places - it had no effect 8) Invalid position of the 'used' attribute 9) Issue with comparing holders to NULL 10) Operator 'new' returning NULL without being marked with throw() or noexcept 11) Variables marked as 'extern' at the declaration / initialization place 12) Data structure declared as struct at one place and forward declared as class at another Some disabled warnings were no longer happening, so options to disable them were removed too
2015-03-06Add a fourth parameter to the DEFINE_DACVAR macro that is the actual fully ↵Mike McLaughlin1-0/+1
qualified name of the static/global. First pass at the global DAC table support for Linux. Explicitly build the table in the coreclr module instead of extract it from the pdb and put it in a resource. Fixed the SVR gc globals in the DAC table. They had to be seperated and initialized in gceesvr.cpp. Start on global pointer table. PAL functions to write and read the DAC table address between processes. The dac table is now copied from the coreclr process to the DAC/debugger process. The tables were not being built with exactly the same defines so they weren't the same size. Fixed a bug in the read memory implementation. Still assumes pid = 0. Changed the dacTable entries to be RVAs and renabled getting the corclr module base addres (m_globalBase). Added dac table address file cleanup on coreclr shutdown. Filled in the vtable entries in the global dac table. Changed some of the VPTR_* macros to be defined on the coreclr side (RS) to defined a constructor that is used to get the vtable in dactable.cpp. These changes required default constructors to be added to some of the classes. Changed getting the vtable address to not invoke the destructors since the constructor used didn't do anything (like initialize variables, etc.). Added a TODO comment about the debuggee pid not being available in the dac table address file name. Fixed Windows build. Created a couple of new VPTR_* macros that add a default constructor only if building coreclr (not DAC) on Linux. Comment on how these DAC table functions are temporary.
2015-03-03Introduce FC_TypedByRef for passing TypedReferences as FCall argumentsJan Kotas1-2/+2
FC_TypedByRef is defined as TypedByRef& for now to workaround the mismatch between managed and native struct calling convention.
2015-02-21Fix warnings generated when building with Clang on Linux.Pat Gavlin1-3/+3
There were three classes of warnings that needed to be fixed: 1) Warnings for unused typedefs 2) Warnings for pointer to boolena conversions that were always true 3) Warnings for taking the absolute value of unsigned values (1) accounted for the majority of the warnings. All of these warnings originated from macro definitions debugreturn.h, staticcontract.h, or pal_assert.h. In the first two cases, typedefs were used as compile-time checks to ensure certain invariants inside of method or function bodies. These cases were addressed by using an empty member of the typedef under an "if (0)" guard. In the third case, typedefs were used for compile-time assertions that may appear in any location in a source file; these have been updated to use C++11's static_assert. (2) and (3) were much more straightforward: the former was addressed by explicitly comparing the source pointer against NULL and the latter by removing the offending calls to abs(). This change also contains a small update to .gitignore to ignore the binaries directory and CMake artifacts created by build.sh.
2015-02-03Remove non ASCII characters from source filesMatt Ellis1-1/+1
Our native files were more or less encoded in Windows-1252, which causes problems when we try to compile them on machines where the current codepage can't represent everything that Windows-1252 can. With this conversion I just moved characters to their ASCII counterparts (e.g. no smart quotes, the section marker glyph is now "Section"). There were two places where I couldn't do the straight forward thing, in object.h we wanted to insert the Per Mille symbol in a comment so instead I just spelled out the Unicode codepoint. In morph.cpp, there was a comment pointing to a paper by Torbjörn Granlund (note the diaeresis above the second o). In this case, unfortuntely I had to just drop the diaeresis. However, searching for "Torbjorn Granlund" will lead you to the right person. Fixes #49
2015-01-30Initial commit to populate CoreCLR repo dotnet-bot1-0/+4680
[tfs-changeset: 1407945]