Bryan P. Arant [Wed, 21 Oct 2015 06:13:07 +0000 (23:13 -0700)]
Merge pull request #1817 from bryanar/pri1testfix
Fixing test infrastructure that affects pri1 tests.
Lakshmi Priya [Wed, 21 Oct 2015 02:02:33 +0000 (19:02 -0700)]
Merge pull request #1744 from Priya91/palstring-rest
Use StackString in PAL file apis.
Aditya Mandaleeka [Wed, 21 Oct 2015 00:18:49 +0000 (17:18 -0700)]
Merge pull request #1813 from adityamandaleeka/pal_cleanup
Clean up cleanup code in PAL
Lakshmi Priya Sekar [Mon, 19 Oct 2015 18:01:24 +0000 (11:01 -0700)]
Fix boundary bugs on buffer lengths. Include null char in MAX_LONGPATH.
Bryan Arant [Tue, 20 Oct 2015 23:03:04 +0000 (16:03 -0700)]
Fixing some pri1 tests.
Lubomir Litchev [Tue, 20 Oct 2015 23:14:16 +0000 (16:14 -0700)]
Merge pull request #1806 from LLITCHEV/SystemVStructs
Implementation of System V ABI struct passing.
Lubomir Litchev [Thu, 19 Feb 2015 19:42:30 +0000 (11:42 -0800)]
Implementation of System V ABI struct passing.
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.
Aditya Mandaleeka [Tue, 20 Oct 2015 21:20:15 +0000 (14:20 -0700)]
Remove unused full_cleanup parameter
Mike McLaughlin [Tue, 20 Oct 2015 21:12:31 +0000 (14:12 -0700)]
Merge pull request #1811 from mikem8361/exceptfix
Managed unhandled exceptions for debugging and other fixes
Jan Vorlicek [Tue, 20 Oct 2015 21:02:54 +0000 (14:02 -0700)]
Merge pull request #1805 from sergiy-k/nodebugmsgs
Disable DEBUG_MESSAGES in release build of CoreCLR PAL
Mike McLaughlin [Tue, 20 Oct 2015 01:38:26 +0000 (18:38 -0700)]
Fix issue #1782 unhanded exceptions don't generate core dumps by changing HandleFatalError to end up calling TerminateProcess (which calls the unix abort()) instead of ExitProcess.
Mike McLaughlin [Tue, 20 Oct 2015 00:20:56 +0000 (17:20 -0700)]
Fix assert when unhandled exception is unwound and restored some previous code in the first pass dispatcher so the managed debugger notification is sent at the right time (during the first pass instead after everything is unwound).
Also fixed issue #1799 by not masking SIGTERM anymore.
Matt Mitchell [Tue, 20 Oct 2015 16:06:31 +0000 (09:06 -0700)]
Merge pull request #1775 from mmitche/add-coreclr-linux-tests
Add coreclr Linux tests to CI definition
Matt Mitchell [Tue, 20 Oct 2015 15:52:36 +0000 (08:52 -0700)]
Fixup
Aditya Mandaleeka [Tue, 20 Oct 2015 06:23:43 +0000 (23:23 -0700)]
Merge pull request #1803 from adityamandaleeka/fix_4cf34fe
Revert some changed files from an incorrectly merged commit
Sergiy Kuryata [Tue, 20 Oct 2015 04:13:01 +0000 (21:13 -0700)]
Disable DEBUG_MESSAGES in release build of CoreCLR PAL
This reduces the size of libcoreclr by 1.3MB and improves performace results by a few percent on some benchmarks.
Jan Kotas [Tue, 20 Oct 2015 02:11:20 +0000 (19:11 -0700)]
Merge pull request #1802 from jkotas/networking
Delete remaining vestiges of PAL networking support
Stephen Toub [Tue, 20 Oct 2015 01:53:35 +0000 (21:53 -0400)]
Merge pull request #1800 from stephentoub/invariant_casing_fix
Fix Turkish i casing with invariant culture on Unix
Aditya Mandaleeka [Tue, 20 Oct 2015 01:21:36 +0000 (18:21 -0700)]
Revert some changed files from an incorrectly merged commit.
Commit 4cf34fe seems to have included some unintentional changes which are
affecting the product. This reverts those files to what they should be.
Jan Kotas [Tue, 20 Oct 2015 00:49:57 +0000 (17:49 -0700)]
Delete remaining vestiges of PAL networking support
stephentoub [Mon, 19 Oct 2015 20:35:36 +0000 (16:35 -0400)]
Fix Turkish i casing with invariant culture
It turns out there are some differences in the casing data used by Windows and ICU for our invariant culture. In particular, Turkish 'i' is handled differently.
This change splits the shim ChangeCase function into three: ChangeCaseTurkish (used for Turkish culture), ChangeCaseInvariant (used for Invariant culture), and ChangeCase (used for everything else. ChangeCaseInvariant includes the new special cases. Call sites in the managed code are localized to a single function that determines which native function to invoke.
Bryan P. Arant [Mon, 19 Oct 2015 08:11:21 +0000 (01:11 -0700)]
Merge pull request #1785 from bryanar/managed-test-port
Managed Test Port
Lakshmi Priya Sekar [Mon, 19 Oct 2015 07:37:21 +0000 (00:37 -0700)]
Removed #ifndef CORECLR blocks from shmemory.
Lakshmi Priya Sekar [Mon, 19 Oct 2015 07:11:49 +0000 (00:11 -0700)]
Remove MAX_LONGPATH constraint checks from file name string length.
Lakshmi Priya Sekar [Wed, 7 Oct 2015 01:19:32 +0000 (18:19 -0700)]
Use StackString in PAL file apis.
dotnet-bot [Wed, 30 Sep 2015 19:20:52 +0000 (12:20 -0700)]
Managed Test Port
This is a collection of managed runtime tests from an internal legacy test tree.
Jan Kotas [Sat, 17 Oct 2015 00:11:30 +0000 (17:11 -0700)]
Merge pull request #1789 from jkotas/crsttypetool
Add CrstTypeTool source code
Jan Kotas [Fri, 16 Oct 2015 23:41:55 +0000 (16:41 -0700)]
Add CrstTypeTool source code
This tool is required for updating autogenerated crsttypes.h file
Rama krishnan Raghupathy [Fri, 16 Oct 2015 23:01:37 +0000 (16:01 -0700)]
Merge pull request #1779 from ramarag/control_xplat_event_logging
Controlling Xplat Event logging
Koundinya Veluri [Fri, 16 Oct 2015 22:03:20 +0000 (15:03 -0700)]
Merge pull request #1786 from kouvel/BuildFix
Fix Windows x86 build - use macro for friend declaration
Rama [Thu, 15 Oct 2015 22:16:24 +0000 (15:16 -0700)]
Controlling Xplat Event logging:
Adding an environment variable COMPlus_EnableEventLog to turn on/off
Xplat Event Logging, by default Xplat Event logging is turned off
Nick Guerrera [Fri, 16 Oct 2015 20:41:10 +0000 (13:41 -0700)]
Merge pull request #1783 from nguerrera/explicit-location-model
Be explicit about exposing Assembly.Location in model.xml
Koundinya Veluri [Fri, 16 Oct 2015 20:37:57 +0000 (13:37 -0700)]
Fix Windows x86 build - use macro for friend declaration
Nick Guerrera [Fri, 16 Oct 2015 18:41:39 +0000 (11:41 -0700)]
Merge pull request #1781 from nguerrera/expose-mvid
Expose Module.ModuleVersionId
Nate Amundson [Fri, 16 Oct 2015 16:32:06 +0000 (11:32 -0500)]
Pass __IntermediatesDir to msbuild in build.sh
Currently, building coreclr x-plat fails if not running as root due to
the build trying to copy files to "/ToolRuntime". The issue is that
$(IntermediatesOutputRootPath) is not set when running from build.sh,
and testruntime.targets in buildtools defines ToolRuntimePath as
"$(IntermediateOutputRootPath)ToolRuntime\". The fix is to pass
__IntermediatesDir to msbuild in build_mscorlib, which results in
$(IntermediatesOutputRootPath) being properly set.
This change also adds a skipcoreclr flag to allow the user to skip the
CoreCLR part of the build, similar to the existing skipmscorlib flag.
Nick Guerrera [Fri, 16 Oct 2015 01:07:29 +0000 (18:07 -0700)]
Be explicit about exposing Assembly.Location in model.xml
Aditya Mandaleeka [Fri, 16 Oct 2015 00:46:19 +0000 (17:46 -0700)]
Remove unnecessary condemnation and suspension in PALCommonCleanup.
Aditya Mandaleeka [Fri, 16 Oct 2015 00:19:52 +0000 (17:19 -0700)]
Remove CPalSynchronizationManager::Shutdown
Aditya Mandaleeka [Fri, 16 Oct 2015 00:13:38 +0000 (17:13 -0700)]
Remove unused step logic from PALCommonCleanup.
Matt Mitchell [Thu, 15 Oct 2015 23:26:46 +0000 (16:26 -0700)]
Fixup
Matt Mitchell [Thu, 15 Oct 2015 23:22:36 +0000 (16:22 -0700)]
Fixup
Matt Mitchell [Thu, 15 Oct 2015 23:22:15 +0000 (16:22 -0700)]
Fixup
Matt Mitchell [Thu, 15 Oct 2015 23:19:21 +0000 (16:19 -0700)]
Fixup
Nick Guerrera [Thu, 15 Oct 2015 23:15:14 +0000 (16:15 -0700)]
Expose Module.ModuleVersionId
Jan Kotas [Thu, 15 Oct 2015 21:24:29 +0000 (14:24 -0700)]
Merge pull request #1778 from swaroop-sridhar/comment
Fix a comment in GcInfoEncoder.h
Matt Ellis [Thu, 15 Oct 2015 21:18:51 +0000 (14:18 -0700)]
Merge pull request #1777 from dotnet-bot/from-tfs
Merge changes from TFS
Swaroop Sridhar [Thu, 15 Oct 2015 20:44:32 +0000 (13:44 -0700)]
Fix a comment in GcInfoEncoder.h
Fix a stale comment about stack-slot-base
in the GcInfo Encoder interface.
Bryan P. Arant [Thu, 15 Oct 2015 20:24:28 +0000 (20:24 +0000)]
Merge pull request #1690 from bryanar/changes-to-test-tree
Changes to Test Tree Infrastructure
Matt Ellis [Thu, 15 Oct 2015 19:11:32 +0000 (12:11 -0700)]
Add missing .gitmirror file.
This new folder was introduced in
465f56ef0c9c4b125d890e7ac0757e77d54e193c and needs a .gitmirror file.
[tfs-changeset: 1538359]
Matt Mitchell [Thu, 15 Oct 2015 17:30:08 +0000 (10:30 -0700)]
Fixup
Michelle McDaniel [Thu, 15 Oct 2015 17:30:03 +0000 (10:30 -0700)]
Merge pull request #1770 from adiaaida/addSkipMscorlib
Add skipmscorlib option to build.cmd
Matt Mitchell [Thu, 15 Oct 2015 17:24:21 +0000 (10:24 -0700)]
Add coreclr Linux tests to CI definition
Jan Kotas [Thu, 15 Oct 2015 16:56:13 +0000 (09:56 -0700)]
Merge pull request #1773 from jkotas/gcee-cleanup
Cleanup GC-EE Interface
Michelle McDaniel [Wed, 14 Oct 2015 23:55:47 +0000 (16:55 -0700)]
Skip Crossgen of mscorlib for x86
x86 is currently cannot crossgen mscorlib, but we want to get a build in
the lab so that we make sure we do not break the x86 build of coreclr when
we make changes. This change defaults to skipping crossgen for x86 unless
docrossgen is passed to build.cmd.
Jan Kotas [Thu, 15 Oct 2015 14:14:05 +0000 (07:14 -0700)]
Cleanup GC-EE Interface
- Add proper abstractions for threading methods to GCToEEInterface
- Split sample gcenv into multiple files to avoid redundant content
- Add handle table methods needed by .NET Native WinRT implementation
Part of #1550
Matt Mitchell [Thu, 15 Oct 2015 14:44:53 +0000 (07:44 -0700)]
Merge pull request #1769 from mmitche/fix-type-assert
Remove assert found in internal testing
Jan Kotas [Thu, 15 Oct 2015 14:21:58 +0000 (07:21 -0700)]
Merge pull request #1772 from anurse/anurse/1771-coreconsole-wpgmptr
change coreconsole to use _get_wpgmptr
Andrew Stanton-Nurse [Thu, 15 Oct 2015 05:08:09 +0000 (22:08 -0700)]
Change CoreConsole to use _get_wpgmptr
The first value in argv only contains the string that was used to
launch the process. This means that when the CoreConsole-based
application is on the PATH, some invocations of it (most notably
those done from 'cmd') cause that value to be incomplete.
Changing to use _get_wpgmptr ensures that we always get the full
path to the executable, no matter how it is executed.
Fix #1771
Koundinya Veluri [Wed, 30 Sep 2015 19:20:52 +0000 (12:20 -0700)]
Changes to Test Infrastructure
The following changes are being submitted in order to prepare for a large collection of tests to be ported from the internal legacy test tree.
- Adds "build kinds" to the test tree.
- Adds some documentation for the test tree
- Adds a Test Priority feature (see documentation Documentation/project-docs/tests.md for more information.
- Dropped the cs_template.csproj types and converted to individual CSProject files.
Matt Mitchell [Wed, 14 Oct 2015 23:09:59 +0000 (16:09 -0700)]
Remove assert found in internal testing
This assert was introduced with the fix for #1323 as a sanity check that truly incompatible types couldn't enter this function. However, there are at least some cases where the types could be different. In the case found, REF and LONG were the types and the operand was a GT_LEA, which is handled later in the function.
This assert was introduced with the fix for #1323 as a sanity check that truly incompatible types couldn't enter this function. However, there are at least some cases where the types could be different. In the case found, REF and LONG were the types and the operand was a GT_LEA, which is handled later in the function.
Stephen Toub [Wed, 14 Oct 2015 22:24:34 +0000 (18:24 -0400)]
Merge pull request #1747 from stephentoub/string_tolowerupper_ascii
Add ASCII optimization to string.ToLower/ToUpper on Unix
stephentoub [Wed, 14 Oct 2015 15:29:11 +0000 (11:29 -0400)]
Avoid brancing in ToLower/UpperAsciiInvariant(char)
Rather than comparing the input char against 'A'/'a' and 'Z'/'z', we simply trim off all but the lower 7 bits and do a lookup into a precomputed table. This is ~3-4x faster than the branching version.
Sergiy Kuryata [Wed, 14 Oct 2015 17:47:11 +0000 (10:47 -0700)]
Merge pull request #1761 from kouvel/Instructions
Add some instructions (tests, new APIs)
Sergiy Kuryata [Wed, 14 Oct 2015 16:36:12 +0000 (09:36 -0700)]
Merge pull request #1763 from kouvel/PerfFix
Add string allocation fast path outside Windows
stephentoub [Mon, 12 Oct 2015 19:06:25 +0000 (15:06 -0400)]
Add ASCII optimization to string.ToLower/ToUpper on Unix
Aditya Mandaleeka [Wed, 14 Oct 2015 00:48:03 +0000 (17:48 -0700)]
Merge pull request #1758 from wtgodbe/failingTests
Removed working tests from failing tests file
Matt Ellis [Wed, 14 Oct 2015 00:15:36 +0000 (17:15 -0700)]
Merge pull request #1759 from ellismg/format-corefx-code
Format native CoreFX code to follow conventions
Koundinya Veluri [Tue, 13 Oct 2015 22:49:03 +0000 (15:49 -0700)]
Add string allocation fast path outside Windows
- On Linux, a microbenchmark is 140% faster with the portable fast path
- On Windows with the asm fast path, the microbenchmark was 300% faster than on Linux before, and is now 65% faster with the portable fast path
- On Windows, the portable fast path is 5% slower than the asm fast path
Jose Perez Rodriguez [Tue, 13 Oct 2015 23:12:59 +0000 (16:12 -0700)]
Merge pull request #1669 from joperezr/UseNewBclRewriter
Using DotNetCore version of BclRewriter in mscorlib build
Koundinya Veluri [Tue, 13 Oct 2015 21:04:49 +0000 (14:04 -0700)]
Merge pull request #1755 from kouvel/DisableTests
Disable a couple of tests that are not supported outside Windows
Koundinya Veluri [Tue, 13 Oct 2015 19:58:48 +0000 (12:58 -0700)]
Add some instructions (tests, new APIs)
- Instructions for running CoreCLR and PAL tests outside Windows
- Brief instructions for running CoreFX tests with a private build of CoreCLR outside Windows
- Adding new public APIs to mscorlib
Matt Ellis [Tue, 13 Oct 2015 19:15:54 +0000 (12:15 -0700)]
Run format-code.sh
Matt Ellis [Tue, 13 Oct 2015 19:11:50 +0000 (12:11 -0700)]
Add format-code.sh from CoreFX
Jose Perez Rodriguez [Fri, 2 Oct 2015 16:52:22 +0000 (09:52 -0700)]
Using DotNetCore version of BclRewriter in mscorlib build
William Godbe [Tue, 13 Oct 2015 18:28:07 +0000 (11:28 -0700)]
Removed working tests from failing tests file
Matt Mitchell [Tue, 13 Oct 2015 18:34:03 +0000 (11:34 -0700)]
Merge pull request #1756 from mmitche/add-arm-arm64-cross
Add arm64/arm cross builds to CI definition
Matt Mitchell [Tue, 13 Oct 2015 18:23:48 +0000 (11:23 -0700)]
Add missing quote
Matt Mitchell [Tue, 13 Oct 2015 17:44:58 +0000 (10:44 -0700)]
Use the correct comment style
Matt Mitchell [Tue, 13 Oct 2015 17:38:23 +0000 (10:38 -0700)]
Add arm64/arm cross builds to CI definition
Koundinya Veluri [Tue, 13 Oct 2015 17:29:10 +0000 (10:29 -0700)]
Disable a couple of tests that are not supported outside Windows
Jan Vorlicek [Tue, 13 Oct 2015 14:56:52 +0000 (16:56 +0200)]
Merge pull request #1738 from janvorli/fix-cocreate-guid
Implement CoCreateGuid using uuid_generate on Unix
Jan Vorlicek [Fri, 9 Oct 2015 18:56:43 +0000 (20:56 +0200)]
Implement CoCreateGuid using uuid_generate on Unix
We were generating GUIDs on Unix as random numbers. But that is not
correct since GUIDs have defined structure with bits having specific
meanings. For example, there are four bits that represent the type of
the GUID, which means whether the guid is randomly generated,
name based on SHA1, time based etc.
This change changes the CoCreateGuid to use the uuid_generate function
from the uuid library that should generate well-formed GUIDs on
Linux and OSX and the uuid_create on FreeBSD.
Rama krishnan Raghupathy [Tue, 13 Oct 2015 05:27:21 +0000 (22:27 -0700)]
Merge pull request #1753 from ramarag/lttng_check
Add checks for liblttng-ust-dev at build time
Rama [Mon, 12 Oct 2015 23:56:33 +0000 (16:56 -0700)]
Add checks for liblttng-ust-dev at build time
Jan Vorlicek [Mon, 12 Oct 2015 22:55:35 +0000 (00:55 +0200)]
Merge pull request #1749 from janvorli/improve-frame-destructor
Improve frame destructor performance
Koundinya Veluri [Mon, 12 Oct 2015 22:12:11 +0000 (15:12 -0700)]
Merge pull request #1746 from kouvel/PerfFix2
Add some fast paths that are missing outside Windows
Jan Vorlicek [Tue, 6 Oct 2015 00:25:36 +0000 (02:25 +0200)]
Improve frame destructor performance
This change makes the Frame destructor access thread local storage much less often,
only in rare case when the Frame was not popped before the destructor is called.
Koundinya Veluri [Fri, 9 Oct 2015 18:36:25 +0000 (11:36 -0700)]
Add some fast paths that are missing outside Windows
- 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.
Jan Kotas [Mon, 12 Oct 2015 14:24:11 +0000 (07:24 -0700)]
Merge pull request #1739 from jasonwilliams200OK/master
code,pal: Removes unused headers
Rama krishnan Raghupathy [Mon, 12 Oct 2015 05:28:38 +0000 (22:28 -0700)]
Merge pull request #1598 from ramarag/enablelttng
Enablelttng
Rama [Fri, 9 Oct 2015 01:53:59 +0000 (18:53 -0700)]
This enables Lttng Logging for CoreClr,
The Tracepoint Providers are built as a separate shared object called libcoreclrtraceptprovider and it is
available in the same directory as libcoreclr.so
By Default the ability of Tracing will not be present
To enable the ability of Tracing, the apps need to be run like:
LD_PRELOAD=libcoreclrtraceptprovider.so ./corerun HelloWorld.exe
For now to change Xplat Event Logging mechanism add any events to:
<root>/src/vm/ClrEtwAll.man
Then regenerate files by running :
<root>/src/inc/genXplatLtnng.pl
Conflicts:
Documentation/building/linux-instructions.md
Peter Jas [Sat, 10 Oct 2015 19:05:53 +0000 (19:05 +0000)]
code,pal: Removes unused headers.
`<typeinfo>` and `<errno.h>` were unused in `seh.cpp`.
On FreeBSD, the `errno` macro was conflicting due to these
stale inclusions. The exact cause is still unknown that how
it is building on CI and only failing locally on clean FreeBSD 10.2
installation with Clang 3.5.
Fixes #1091.
Jan Kotas [Sat, 10 Oct 2015 01:46:30 +0000 (18:46 -0700)]
Merge pull request #1733 from kouvel/PerfFix
Add allocation fast path for arrays of value type elements outside Wi…
Steve Harter [Fri, 9 Oct 2015 21:11:25 +0000 (16:11 -0500)]
Merge pull request #1723 from steveharter/FixDefaultLocale
Add support for obtaining default locale in Linux and fix issue with collation not being passed to ICU
Jan Kotas [Fri, 9 Oct 2015 20:15:39 +0000 (13:15 -0700)]
Merge pull request #1737 from dotnet-bot/from-tfs
Merge changes from TFS
Steve Harter [Thu, 8 Oct 2015 22:03:53 +0000 (17:03 -0500)]
Add support for obtaining default locale in Linux and fix issue with @collation= not being passed to ICU
Koundinya Veluri [Thu, 8 Oct 2015 21:40:14 +0000 (14:40 -0700)]
Add allocation fast path for arrays of value type elements outside Windows
- 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.
Bruce Forstall [Fri, 9 Oct 2015 15:38:34 +0000 (08:38 -0700)]
Fix contracts so scanRuntime@x86chk task succeeds
[tfs-changeset: 1535699]
Stephen Toub [Fri, 9 Oct 2015 12:21:00 +0000 (08:21 -0400)]
Merge pull request #1719 from stephentoub/sb_direction
Add [Out] to a couple of StringBuilders in DllImports
Stephen Toub [Fri, 9 Oct 2015 12:18:53 +0000 (08:18 -0400)]
Merge pull request #1722 from stephentoub/casing_branches
Improve String.ToLower/ToUpper throughput on Unix