dotnet-maestro-bot [Sun, 25 Mar 2018 18:00:45 +0000 (11:00 -0700)]
Update BuildTools, CoreClr, CoreFx, PgoData to preview2-02621-01, preview2-26324-04, preview2-26324-01, release-
20180228-0037, respectively
José Rivero [Thu, 22 Mar 2018 18:37:16 +0000 (11:37 -0700)]
Updating scenarios and disabling min_opt and tiered permutations. (#17074)
JC Aguilera [Wed, 21 Mar 2018 16:15:23 +0000 (09:15 -0700)]
Change directory in AgentTools tasks
Matt Mitchell [Tue, 20 Mar 2018 16:40:37 +0000 (09:40 -0700)]
Merge test job updates from master (#17066)
* Remove obselete buildtests job
* Update queues
Jose Perez Rodriguez [Mon, 19 Mar 2018 23:45:28 +0000 (16:45 -0700)]
Adding running tests on Alpine for coreclr build (#17048)
Russ Keldorph [Sat, 17 Mar 2018 21:52:55 +0000 (14:52 -0700)]
Merge pull request #17010 from RussKeldorph/release/2.1
merge master into release/2.1
Russ Keldorph [Sat, 17 Mar 2018 13:37:55 +0000 (13:37 +0000)]
Disable tests for issue #17013
Russ Keldorph [Sat, 17 Mar 2018 11:37:41 +0000 (11:37 +0000)]
Ahson Khan [Fri, 16 Mar 2018 18:05:14 +0000 (11:05 -0700)]
Use vectorized T=byte implementations to optimize all MemoryExtensions APIs for T != byte (#28080)
* Adding IsTypeNumeric helper
* Add more NUint operations and use IsTypeNumeric everywhere.
* Revert addition of LangVersion 7.2
* Fix formatting
* Revert use of nuint and IsNumericType for *IndexOf* APIs
* Fix comment, undo leftover changes, and fix indentation.
* Address PR feedback - use nuint where possible.
* PR feedback - Cleanup SequenceEqual just like SequenceCompareTo
* Add new NUInt operations for netcoreapp/coreclr mirror.
* Address PR feedback
* Add T = char and T = long tests for StartsWith and EndsWith
Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>
Carol Eidt [Sat, 17 Mar 2018 01:39:02 +0000 (18:39 -0700)]
Merge pull request #17000 from sdmaclea/PR-Enable-Arm64-Simd
[Arm64] Enable arm64 simd test
Ben Adams [Sat, 17 Mar 2018 01:24:16 +0000 (21:24 -0400)]
Prevent concurrent use corruption from causing infinite loops (#16991)
Marek Safar [Sat, 17 Mar 2018 00:58:18 +0000 (01:58 +0100)]
Updates unsafe String constructors to be consistent when handling null value (#17002)
JC Aguilera [Fri, 16 Mar 2018 23:51:39 +0000 (16:51 -0700)]
Merge pull request #16980 from jcagme/master
Move extension task at beginning and end of build def
Juan Carlos Aguilera Mendez [Fri, 16 Mar 2018 23:42:34 +0000 (16:42 -0700)]
Add task extension to test pipeline
Juan Carlos Aguilera Mendez [Fri, 16 Mar 2018 23:40:12 +0000 (16:40 -0700)]
Merge branch 'master' of https://github.com/dotnet/coreclr
Jeremy Kuhne [Fri, 16 Mar 2018 22:49:15 +0000 (15:49 -0700)]
Put the path on IOException strings when possible (#16998)
Remove internal only copy of DriveNotFoundException. Will create an issue
to move the implementation down from S.IO.DriveInfo.
Note that this Win32Marshal can be used directly from CoreFX, will follow up
once this flows. (e.g. remove the copy in CoreFX)
Steve MacLean [Fri, 16 Mar 2018 21:11:33 +0000 (17:11 -0400)]
[Arm64] Disable broken tests dependent on #16310
Steve MacLean [Wed, 7 Mar 2018 21:15:00 +0000 (16:15 -0500)]
[Arm64] Enable HW Intrinsic Simd tests
Sung Yoon Whang [Fri, 16 Mar 2018 18:56:24 +0000 (11:56 -0700)]
Fix test for GC.GetAllocatedBytesForCurrentThread to be more lenient with the accuracy (#16976)
Stephen Toub [Fri, 16 Mar 2018 18:10:36 +0000 (14:10 -0400)]
Avoid allocating _IOCompletionCallback when flow is suppressed (#16984)
This delegate was showing up in a sockets allocation trace, even though execution flow is suppressed while creating the associated PreAllocatedOverlapped.
Ahson Khan [Fri, 16 Mar 2018 18:06:01 +0000 (11:06 -0700)]
Change csharp_indent_labels from flush_left to one_less_than_current (#16983)
Juan Carlos Aguilera Mendez [Fri, 16 Mar 2018 16:50:50 +0000 (09:50 -0700)]
Merge branch 'master' of https://github.com/dotnet/coreclr
dotnet-maestro-bot [Fri, 16 Mar 2018 16:41:33 +0000 (11:41 -0500)]
Update CoreClr, CoreFx to preview2-26316-03, preview2-26316-03, respectively (#16988)
Andy Ayers [Fri, 16 Mar 2018 15:07:30 +0000 (08:07 -0700)]
JIT: fix return type mismatch inline block for literal argument (#16966)
When we inline a method that returns one of its arguments, we need to make sure
to apply the callee's view of the argument type.
We fixed this for arguments that are caller locals in #11218. This change applies
similar logic to handle the case where the caller passes a literal constant.
Closes #16944.
Matt Mitchell [Fri, 16 Mar 2018 15:04:23 +0000 (08:04 -0700)]
Remove tests from main pipeline.json (#16975)
* Remove tests from main pipeline.json
Tests are now broken out into a separate json file, which means prodcon builds avoid waiting on tests.
Viktor Hofer [Fri, 16 Mar 2018 14:18:16 +0000 (15:18 +0100)]
Fix comment in IgnoreCase CompareInfo handling.
Viktor Hofer [Fri, 16 Mar 2018 14:04:50 +0000 (15:04 +0100)]
Use managed marvin hashing for IgnoreCase comparison (#16945)
* Use managed marvin hashing for IgnoreCase comparison
* Return rented buffer & reduce string allocation
* Move Marvin to shared partition & PR feedback
* Marvin input slicing & ToUpper optimization
* Use ToUpperInvariant instead of ToUpper
* Use ToUpperInvariant in favor of the whole manual optimization logic
* Fix typo
* Use ToUpperInvariant length for slicing
Fei Peng [Fri, 16 Mar 2018 07:44:47 +0000 (00:44 -0700)]
Implement AVX/AVX2 InsertVector128 and ExtractVector128 intrinsic
Fei Peng [Wed, 14 Mar 2018 00:02:14 +0000 (17:02 -0700)]
Implement AVX Insert/Extract helper-intrinsics in managed code
Fei Peng [Wed, 14 Mar 2018 00:01:59 +0000 (17:01 -0700)]
Add tests for AVX Insert/Extract helper-intrinsics
Fei Peng [Tue, 13 Mar 2018 05:24:40 +0000 (22:24 -0700)]
Add tests for AVX Insert/ExtractVector128
Fei Peng [Tue, 13 Mar 2018 00:20:42 +0000 (17:20 -0700)]
Add tests and templates for AVX2 Insert/Extract
Adam Sitnik [Fri, 16 Mar 2018 12:25:08 +0000 (13:25 +0100)]
Add AllReady scenario to JitBench (#16905)
* reuse MusicStoreBenchmark for AllReady scenario
* bug fix, should set JITBENCH_FRAMEWORK_VERSION, not JITBENCH_TARGET_FRAMEWORK_VERSION
* include informations from AllReady.dll
* temp: point to my fork before the https://github.com/aspnet/JitBench/pull/85 gets merged
* clone the repo and get the submodule, downloading .zip is not enough when working with GIT submodules
* fail benchmark when git command fails
* point to the updated aspnet/JitBench repo, not my fork
Steve MacLean [Fri, 16 Mar 2018 09:51:29 +0000 (05:51 -0400)]
[Arm64/Ubuntu] Enable official builds (#16981)
dotnet-maestro-bot [Fri, 16 Mar 2018 03:33:36 +0000 (22:33 -0500)]
Update CoreClr, CoreFx to preview2-26315-05, preview2-26316-01, respectively (#16970)
Jacek Blaszczynski [Wed, 14 Mar 2018 22:06:32 +0000 (23:06 +0100)]
Convert Sse2 tests to template driven version - part 1
Juan Carlos Aguilera Mendez [Fri, 16 Mar 2018 01:18:49 +0000 (18:18 -0700)]
Move extension task at beginning and end of build def
Atsushi Kanamori [Thu, 15 Mar 2018 13:54:58 +0000 (06:54 -0700)]
Port SequentialEqual() optimizations to ReadOnlySpan overloads (#28073)
Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>
Egor Chesakov [Thu, 15 Mar 2018 20:54:42 +0000 (13:54 -0700)]
Merge pull request #16858 from echesakovMSFT/FixGenerateEventLogCrossArchBuildFailure
Fix etmdummy.h file not found during Linux/arm crosscomponent build
JC Aguilera [Thu, 15 Mar 2018 20:36:15 +0000 (13:36 -0700)]
Merge pull request #16969 from jcagme/master
Replace Agent.HomeDirectory with AgentToolsPath
Juan Carlos Aguilera Mendez [Thu, 15 Mar 2018 20:15:30 +0000 (13:15 -0700)]
Remove AgentToolsPath
Juan Carlos Aguilera Mendez [Thu, 15 Mar 2018 19:10:18 +0000 (12:10 -0700)]
Replace AgentToolsPath
Jan Vorlicek [Thu, 15 Mar 2018 18:57:01 +0000 (19:57 +0100)]
Fix error type check in InternalSetThreadPriority (#16959)
The pthread_setschedparam returns error code as a return value and not
in the errno as the existing code supposes. I have found it when a test
in the lab has failed to set the priority and asserted in this code, but
reported errno as 0.
Also fix the flaky DuplicateHandle test7 that was failing rarely due to the
fact that the secondary thread it has created didn't wait until the main thread
finished fiddling with the priority of that thread.
dotnet-maestro-bot [Thu, 15 Mar 2018 18:15:07 +0000 (13:15 -0500)]
Update CoreClr, CoreFx to preview2-26315-02, preview2-26315-01, respectively (#16949)
Egor Chesakov [Fri, 9 Mar 2018 18:17:54 +0000 (10:17 -0800)]
Fix etmdummy.h file not found during cross crossarchitecture build
Koundinya Veluri [Thu, 15 Mar 2018 17:05:42 +0000 (10:05 -0700)]
Fix to not reuse preallocated jump stubs for dynamic methods (#16941)
Fix to not reuse preallocated jump stubs for dynamic methods
Fixes https://github.com/dotnet/coreclr/issues/16940
- Allocate an extra jump stub per temporary entry points chunk that is shared by all precodes in the chunk. This jump stub always points to PrecodeFixupThunk.
- Use that for PrecodeFixupThunk, and use the precode-associated jump stub for pointing to the jitted code
- Considered allocating the extra jump stub only if coreclr is far away, but it involves reallocation which may be common in some environments/scenarios. Figured 12 extra bytes per dynamic type is not too significant.
Carol Eidt [Thu, 15 Mar 2018 15:14:09 +0000 (08:14 -0700)]
Merge pull request #16813 from CarolEidt/FixDD544983
Mark operands of dead FIELD_LIST as unused
Steve MacLean [Thu, 15 Mar 2018 09:39:41 +0000 (05:39 -0400)]
[Arm64] Fix EmitShuffleThunk reg allocation (#16947)
Brian Sullivan [Thu, 15 Mar 2018 06:57:40 +0000 (23:57 -0700)]
Merge pull request #16928 from briansull/fix-16892
Fix GH Issue 16892 - GC hole due to GT_INDEX_ADDR
Jeremy Kuhne [Thu, 15 Mar 2018 05:16:00 +0000 (22:16 -0700)]
Fix GetTempPath (#16921)
* Fix GetTempPath
GetTempPath and GetTempFileName weren't updated to handle long paths.
Update to use API properly and stop using StringBuilder. Also tweak
Normalize to allow utilizing an existing Span as input.
* Assert for null, fix ProjectN wrap
* Address more feedback
* One more tweak
* Tweak Normalize to be usable in CoreFX
* Change another span Equals
* Split AsSpan() to avoid risk of losing inlining
Brian Robbins [Thu, 15 Mar 2018 02:18:38 +0000 (19:18 -0700)]
Add EventSource TraceLogging Support for EventPipe (#16861)
Egor Chesakov [Thu, 15 Mar 2018 00:43:35 +0000 (17:43 -0700)]
Merge pull request #16794 from echesakovMSFT/DisableFeatureNIBindFallbackByDefault
Disable FEATURE_NI_BIND_FALLBACK by default for all platforms
Egor Chesakov [Wed, 14 Mar 2018 23:46:44 +0000 (16:46 -0700)]
Include Linux/cross-arch components into NuGet packages (#16859)
* Add __DoCrossArchBuild settings to config.json
* HasCrossTargetComponents computes to 'true' on Linux when __DoCrossArchBuild is 1 in dir.props
* Include cross-architecture libclrjit.so crossgen into NuGet props files when HasCrossTargetComponents is 'true'
* Pass $__DoCrossArchBuild to run.sh when generating NuGet packages in build.sh
Egor Chesakov [Wed, 14 Mar 2018 23:45:51 +0000 (16:45 -0700)]
Merge pull request #16895 from echesakovMSFT/DoNotFragileNGenSystemPrivateCoreLibARM
[ARM] Disable fragile NGen when compiling S.P.C.dll for _TARGET_ARM_
Carol Eidt [Wed, 7 Mar 2018 19:12:13 +0000 (11:12 -0800)]
Mark operands of dead FIELD_LIST as unused
This requires fixing the side-effects check in dead code elimination.
Also, fixes gtSetFlags() to be usable from DCE in the non-legacy case.
JC Aguilera [Wed, 14 Mar 2018 23:35:29 +0000 (16:35 -0700)]
Merge pull request #16909 from jcagme/master
Use task extensions on SCEP ops
Juan Carlos Aguilera Mendez [Wed, 14 Mar 2018 23:34:00 +0000 (16:34 -0700)]
Merge branch 'master' of https://github.com/dotnet/coreclr
Vance Morrison [Wed, 14 Mar 2018 22:23:15 +0000 (15:23 -0700)]
Merge pull request #16923 from brianrob/eventlistener_activityid
Plumb the Activity ID Through to EventListener
Brian Sullivan [Wed, 14 Mar 2018 00:16:44 +0000 (17:16 -0700)]
Fix GH Issue 16892 - GC hole due to GT_INDEX_ADDR
Added test case
Stephen Toub [Wed, 14 Mar 2018 22:03:35 +0000 (18:03 -0400)]
Add TaskCanceledException ctor that takes CancellationToken (#16939)
To help with maintaining compatibility when implementing types like SocketsHttpHandler, this ctor allows for constructing a TaskCanceledException with the same inputs as an OperationCanceledException.
Carol Eidt [Wed, 14 Mar 2018 21:56:50 +0000 (14:56 -0700)]
Merge pull request #16832 from dotnetrt/StoreNonTemporal
Implement SSE2 StoreNonTemporal HW intrinsic - complete SSE2 ISA
Juan Carlos Aguilera Mendez [Wed, 14 Mar 2018 21:42:40 +0000 (14:42 -0700)]
Use $(Agent.HomeDirectory)
Anirudh Agnihotry [Wed, 14 Mar 2018 21:33:35 +0000 (14:33 -0700)]
DIfferent Directory Separator for linux (#16936)
Juan Carlos Aguilera Mendez [Wed, 14 Mar 2018 19:10:28 +0000 (12:10 -0700)]
No need of arguments
Juan Carlos Aguilera Mendez [Wed, 14 Mar 2018 19:08:34 +0000 (12:08 -0700)]
Change after Begin/End approach
Michelle McDaniel [Wed, 14 Mar 2018 18:38:24 +0000 (11:38 -0700)]
Turn sizeondisk tests back on (#16937)
dotnet-maestro-bot [Wed, 14 Mar 2018 17:14:37 +0000 (12:14 -0500)]
Update CoreClr to preview2-26314-04 (#16927)
Carol Eidt [Wed, 14 Mar 2018 17:08:31 +0000 (10:08 -0700)]
Merge pull request #16797 from dotnetrt/SetAllVector128_Managed
Managed implementation of SetAllVector128 SSE2 helper HW intrinsic
Carol Eidt [Wed, 14 Mar 2018 16:47:27 +0000 (09:47 -0700)]
Merge pull request #16853 from dotnetrt/CnvertScInt64
Fix ConvertScalarToVector128(U)Int64 codegen and improve tests
Michelle McDaniel [Wed, 14 Mar 2018 16:26:20 +0000 (09:26 -0700)]
Remove call to GenerateLayoutOnly for throughput runs (#16919)
Andon Andonov [Wed, 14 Mar 2018 10:37:05 +0000 (03:37 -0700)]
Mark GenericContext test as incompatible with GCStress (#16918)
Jacek Blaszczynski [Wed, 7 Mar 2018 15:58:28 +0000 (16:58 +0100)]
Convert implementation of SetAllVector128 SSE HW intrinsic to managed
Jacek Blaszczynski [Wed, 7 Mar 2018 14:49:25 +0000 (15:49 +0100)]
Add SSE2 SetAllVector128 helper HW intrinsic tests
Jacek Blaszczynski [Wed, 7 Mar 2018 14:48:24 +0000 (15:48 +0100)]
Managed implementation of SSE2 SetAllVector128 helper HW intrinsic
Tarek Mahmoud Sayed [Tue, 13 Mar 2018 23:44:31 +0000 (16:44 -0700)]
Fix GetHashCode with invariant mode
Wes Haggard [Wed, 14 Mar 2018 00:09:52 +0000 (17:09 -0700)]
Merge pull request #16907 from dotnet-maestro-bot/master-UpdateDependencies
Update CoreFx to preview2-26313-03 (master)
Jan Kotas [Wed, 14 Mar 2018 00:00:50 +0000 (17:00 -0700)]
Revert "Revert "Fix handling of incorrect assemblies on Unix (#16747)" (#16790)" (#16917)
This reverts commit
47bef69b68a35eafa069d08187727684a5f47901.
Brian Robbins [Tue, 13 Mar 2018 23:18:59 +0000 (16:18 -0700)]
Plumb the activity ID through to EventListener.
Jacek Blaszczynski [Thu, 8 Mar 2018 07:28:06 +0000 (08:28 +0100)]
Add SSE2 StoreNonTemporal HW intrinsic tests
Jacek Blaszczynski [Thu, 8 Mar 2018 07:27:10 +0000 (08:27 +0100)]
Implement SSE2 StoreNonTemporal HW intrinsic - complete SSE2 ISA
Carol Eidt [Tue, 13 Mar 2018 20:25:08 +0000 (13:25 -0700)]
Merge pull request #16872 from fiigii/avxpermute
Implement AVX Shuffle and Permute intrinsics
David Mason [Tue, 13 Mar 2018 19:40:30 +0000 (12:40 -0700)]
change bool to bool (#16914)
Jan Vorlicek [Tue, 13 Mar 2018 18:56:34 +0000 (19:56 +0100)]
Fix shuffling thunk for Unix AMD64 (#16904)
The shufflign thunk was generated incorrectly for some edge cases when
a struct was passed in a register or a pair of registers in the
destination, but on stack in the source.
This change implements a new algorithm that ensures that argument slots
are never overwritten before their current value is moved out.
It also adds an extensive regression test that checks various
interesting combinations of arguments that were causing issues before.
Bruce Forstall [Tue, 13 Mar 2018 18:42:04 +0000 (11:42 -0700)]
Merge pull request #16888 from jashook/up_jit_stress_timeout
Up the jit stress timeout to 5 hours
Matt Mitchell [Tue, 13 Mar 2018 17:45:45 +0000 (10:45 -0700)]
Unblock official builds (#16913)
Removing arm64 linux cross build for now
Carol Eidt [Tue, 13 Mar 2018 17:13:31 +0000 (10:13 -0700)]
Merge pull request #16390 from sdmaclea/PR-16176
[Arm64] Mark removed compare zero nodes unused
Carol Eidt [Tue, 13 Mar 2018 17:02:45 +0000 (10:02 -0700)]
Merge pull request #16822 from sdmaclea/PR-ARM64-BASE-INTRINSICS
[Arm64] Base HW Intrinsics
Juan Carlos Aguilera Mendez [Tue, 13 Mar 2018 16:31:15 +0000 (09:31 -0700)]
Adding missing ScepToolsPath variable
Juan Carlos Aguilera Mendez [Tue, 13 Mar 2018 15:52:55 +0000 (08:52 -0700)]
Use task extensions on SCEP ops
dotnet-maestro-bot [Tue, 13 Mar 2018 14:08:20 +0000 (07:08 -0700)]
Update CoreFx to preview2-26313-03
David Mason [Tue, 13 Mar 2018 08:24:20 +0000 (01:24 -0700)]
[local gc] refactor apis for threading and suspension to avoid redundant calls in to the runtime (#16765)
* [Local GC] Refactor calls involving thread modes, suspension, and alloc contexts to always operate on current thread
* BOOL -> bool for enable/disable preemptive routines, also remove an unused call to GetThread
* avoid one indirection by having GCToEEInterface::EnablePreemptiveGC return a bool indicating whether the mode was changed
* Callback on IGCHeap for the runtime to notify the GC when it is trapping threads
* use g_fSuspensionPending instead of GCToEEInterface::CatchAtSafePoint for allow_fgc
* Remove CatchAtSafePoint
* Remove GetThread from WaitLongerNoInstru
* code review feedback
* code review feedback
* change BOOL to bool
dotnet-maestro-bot [Tue, 13 Mar 2018 05:07:57 +0000 (00:07 -0500)]
Update BuildTools, CoreFx to preview2-02612-03, preview2-26313-01, respectively (#16902)
Fei [Tue, 13 Mar 2018 02:56:51 +0000 (18:56 -0800)]
Implement AVX Shuffle and Permute intrinsics
Jeremy Kuhne [Tue, 13 Mar 2018 00:38:26 +0000 (17:38 -0700)]
Fix short path expansion (#16901)
Also make methods internal so I can add better unit tests.
Anirudh Agnihotry [Mon, 12 Mar 2018 23:47:47 +0000 (16:47 -0700)]
Missing Case In Remove Relative Segments (#16869)
Stephen Toub [Mon, 12 Mar 2018 19:25:17 +0000 (15:25 -0400)]
Use a cached canceled task in ValueTask (dotnet/corefx#27967)
When an IValueTaskSource reports it completed due to cancellation by the time we AsTask it, we can use a cached canceled task if a) this is the netstandard build, or b) this is the netcoreapp build and it reported cancellation but threw an exception other than a cancellation exception. We cache the non-generic one in a readonly static, since there's only one of them, but lazily cache the generic one.
Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>
Carol Eidt [Mon, 12 Mar 2018 21:51:32 +0000 (14:51 -0700)]
Merge pull request #16884 from mikedn/lclvar-dead
Remove unused LclVarDsc members
dotnet-maestro-bot [Mon, 12 Mar 2018 17:51:36 +0000 (10:51 -0700)]
Update BuildTools, CoreClr, CoreFx to preview2-02612-02, preview2-26310-01, preview2-26312-02, respectively
Steve MacLean [Mon, 12 Mar 2018 19:42:23 +0000 (15:42 -0400)]
[Arm64/Ubuntu] Update docker tag to include binutils (#16896)
Eugene Rozenfeld [Mon, 12 Mar 2018 19:39:02 +0000 (12:39 -0700)]
Run ILLInk on System.Private.CoreLib.dll to remove dead code. (#16876)
We already run ILLInk on corefx assemblies to remove dead code;
this change enables that for System.Private.CoreLib.dll.
The new ILLink.targets file is similar to the one in corefx.
All runtime dependencies were already computed and rooted in an xml file that
was embedded in System.Private.CoreLib.dll. This change adds ILLinkTrim.xml
with a few manual roots. They are also included in the embedded xml.
The dead code found by ILLink that could be removed from sources was already
removed in https://github.com/dotnet/coreclr/pull/16759 The remaining code removed by ILLink
falls into 4 categories:
1. Inlined constants.
2. Private default constructors when there are no other instance constructors.
3. System.Number+DoubleHelper.Sign that needs to stay in the sources for corert mirror.
4. EventListener._EventSourceCreated event methods (the even field is retained).
ILLink also clears initlocals on all methods so I removed the workaround
we had in jitinterface.cpp.