d0909e068a
This reverts commit5f81efb4a3. Reason for revert: 3xH bot is green again. Original change's description: > Revert "[vm/aot] Only patch call-sites to monomorphic entry-points when the receiver is proven to be a heap object." > > This reverts commitab2026af45. > > Reason for revert: Flutter 3xH is broken on Golem. > > Original change's description: > > [vm/aot] Only patch call-sites to monomorphic entry-points when the receiver is proven to be a heap object. > > > > Flutter Gallery ARMv8: -0.8% total, -1.3% instructions > > Flutter Gallery ARMv7: -0.7% total, -1.2% instructions > > > > There are some performance regressions, in four categories: > > > > 1. Arithmetic on num types (e.g. MinLib, MaxLib): > > We believe arithmetic on num types is rare in practice, and can be optimized later > > by specializing the call-sites. > > > > 2. Lack of types (e.g. MeshDecompression, ImagingGaussianBlur, Crypto*): > > These (and similar benchmarks) are written in a very untyped style, which is not > > representative of Dart 2 style. We've confirmed that the regressions disappear if > > the benchmarks are annotated with appropriate types. > > > > 3. Megamorphic calls which are specialized in the benchmark (e.g. DeltaBlue): > > DeltaBlue uses string interpolation in one place, so the toString() method in the > > string interpolation helper is monomorphic for _Smis. However, in a realistic programs, > > string interpolation is used much more frequently and with different types, so it's very > > unlikely that this call would be monomorphic. When string interpolation is removed, there's > > a remaining 1.3% regression on DeltaBlue which is not yet accounted for. > > > > 4. Noisy benchmarks > > The remaining regressions are on benchmarks which show frequent jitter historically. > > > > There are also 1-4% improvements on many benchmarks (Golem's "noise" analysis is hiding > > many of them, look at the graphs). > > > > For the reasons above, we believe the regressions justified by the code size improvement. > > > > Change-Id: Ic9b281d4383a6111de9d6f44347976ffa61a6ca6 > > Cq-Include-Trybots:luci.dart.try:vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-bare-linux-release-simarm64-try > > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/128667 > > Commit-Queue: Samir Jindel <sjindel@google.com> > > Reviewed-by: Ryan Macnak <rmacnak@google.com> > > Reviewed-by: Martin Kustermann <kustermann@google.com> > > TBR=kustermann@google.com,rmacnak@google.com,alexmarkov@google.com,sjindel@google.com > > Change-Id: I411aae4b230f2a08146ad3bf3e7a10aa6592db0e > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-bare-linux-release-simarm64-try > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131660 > Reviewed-by: Samir Jindel <sjindel@google.com> > Commit-Queue: Samir Jindel <sjindel@google.com> TBR=kustermann@google.com,rmacnak@google.com,alexmarkov@google.com,sjindel@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I36e4e9d598033fcc934c2cdf5b061aa11255d3b2 Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-bare-linux-release-simarm64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131837 Reviewed-by: Samir Jindel <sjindel@google.com> Commit-Queue: Samir Jindel <sjindel@google.com>
89 lines
6.2 KiB
C++
89 lines
6.2 KiB
C++
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
#ifndef RUNTIME_VM_STUB_CODE_LIST_H_
|
|
#define RUNTIME_VM_STUB_CODE_LIST_H_
|
|
|
|
namespace dart {
|
|
|
|
// List of stubs created in the VM isolate, these stubs are shared by different
|
|
// isolates running in this dart process.
|
|
#define VM_STUB_CODE_LIST(V) \
|
|
V(GetCStackPointer) \
|
|
V(JumpToFrame) \
|
|
V(RunExceptionHandler) \
|
|
V(DeoptForRewind) \
|
|
V(WriteBarrier) \
|
|
V(WriteBarrierWrappers) \
|
|
V(ArrayWriteBarrier) \
|
|
V(PrintStopMessage) \
|
|
V(AllocateArray) \
|
|
V(AllocateMintWithFPURegs) \
|
|
V(AllocateMintWithoutFPURegs) \
|
|
V(AllocateContext) \
|
|
V(CallToRuntime) \
|
|
V(LazyCompile) \
|
|
V(InterpretCall) \
|
|
V(CallBootstrapNative) \
|
|
V(CallNoScopeNative) \
|
|
V(CallAutoScopeNative) \
|
|
V(FixCallersTarget) \
|
|
V(CallStaticFunction) \
|
|
V(OptimizeFunction) \
|
|
V(InvokeDartCode) \
|
|
V(InvokeDartCodeFromBytecode) \
|
|
V(DebugStepCheck) \
|
|
V(UnlinkedCall) \
|
|
V(MonomorphicMiss) \
|
|
V(MonomorphicSmiableCheck) \
|
|
V(SingleTargetCall) \
|
|
V(ICCallThroughCode) \
|
|
V(MegamorphicCall) \
|
|
V(FixAllocationStubTarget) \
|
|
V(Deoptimize) \
|
|
V(DeoptimizeLazyFromReturn) \
|
|
V(DeoptimizeLazyFromThrow) \
|
|
V(UnoptimizedIdenticalWithNumberCheck) \
|
|
V(OptimizedIdenticalWithNumberCheck) \
|
|
V(ICCallBreakpoint) \
|
|
V(UnoptStaticCallBreakpoint) \
|
|
V(RuntimeCallBreakpoint) \
|
|
V(OneArgCheckInlineCache) \
|
|
V(TwoArgsCheckInlineCache) \
|
|
V(SmiAddInlineCache) \
|
|
V(SmiLessInlineCache) \
|
|
V(SmiEqualInlineCache) \
|
|
V(OneArgOptimizedCheckInlineCache) \
|
|
V(TwoArgsOptimizedCheckInlineCache) \
|
|
V(ZeroArgsUnoptimizedStaticCall) \
|
|
V(OneArgUnoptimizedStaticCall) \
|
|
V(TwoArgsUnoptimizedStaticCall) \
|
|
V(Subtype1TestCache) \
|
|
V(Subtype2TestCache) \
|
|
V(Subtype4TestCache) \
|
|
V(Subtype6TestCache) \
|
|
V(DefaultTypeTest) \
|
|
V(TopTypeTypeTest) \
|
|
V(UnreachableTypeTest) \
|
|
V(SlowTypeTest) \
|
|
V(LazySpecializeTypeTest) \
|
|
V(CallClosureNoSuchMethod) \
|
|
V(FrameAwaitingMaterialization) \
|
|
V(AsynchronousGapMarker) \
|
|
V(NullErrorSharedWithFPURegs) \
|
|
V(NullErrorSharedWithoutFPURegs) \
|
|
V(NullArgErrorSharedWithFPURegs) \
|
|
V(NullArgErrorSharedWithoutFPURegs) \
|
|
V(StackOverflowSharedWithFPURegs) \
|
|
V(StackOverflowSharedWithoutFPURegs) \
|
|
V(OneArgCheckInlineCacheWithExactnessCheck) \
|
|
V(OneArgOptimizedCheckInlineCacheWithExactnessCheck) \
|
|
V(EnterSafepoint) \
|
|
V(ExitSafepoint) \
|
|
V(CallNativeThroughSafepoint)
|
|
|
|
} // namespace dart
|
|
|
|
#endif // RUNTIME_VM_STUB_CODE_LIST_H_
|