New issue
Advanced search Search tips

Issue 618701 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jul 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug



Sign in to add a comment

Remove InlineCacheState from the Code flags.

Project Member Reported by ishell@chromium.org, Jun 9 2016

Issue description

All ICs store their state either in type feedback vector or in ExtraICState field of the code object. So there's no need to encode InlineCacheState in code flags.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jun 9 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/9dc62d2721bb35178d60d10c52d4f84daff03c78

commit 9dc62d2721bb35178d60d10c52d4f84daff03c78
Author: ishell <ishell@chromium.org>
Date: Thu Jun 09 16:46:12 2016

[ic] [stubs] Remove InlineCacheState field from the code flags.

There are no ICs left that store their state in this field: vector based
ICs use feedback vector and the rest three (BinaryOpIC, CompareIC and
ToBooleanIC) reconstruct their state from the ExtraICState field.

This CL also removes unused InlineCacheState::DEBUG_STUB which was used
mostly in Code::is_debug_stub(). The latter now checks if the code is one
of the debug builtins instead.

BUG= chromium:618701 
LOG=Y

Review-Url: https://codereview.chromium.org/2052763003
Cr-Commit-Position: refs/heads/master@{#36871}

[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/builtins.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/builtins.h
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/code-stubs.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/code-stubs.h
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/arm/debug-arm.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/arm64/debug-arm64.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/ia32/debug-ia32.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/mips/debug-mips.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/mips64/debug-mips64.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/ppc/debug-ppc.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/s390/debug-s390.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/x64/debug-x64.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/debug/x87/debug-x87.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/disassembler.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/external-reference-table.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/globals.h
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/ic/ic.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/ic/ic.h
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/ic/stub-cache.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/objects-inl.h
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/objects.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/src/objects.h
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/9dc62d2721bb35178d60d10c52d4f84daff03c78/test/cctest/test-code-cache.cc

Project Member

Comment 2 by bugdroid1@chromium.org, Jul 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b449dc0b6fc33e92563f1a31cd523f02aa31baae

commit b449dc0b6fc33e92563f1a31cd523f02aa31baae
Author: ishell <ishell@chromium.org>
Date: Wed Jul 13 10:24:55 2016

[ic] Split megamorphic stub cache in two caches (for loads and for stores).

After this CL we can avoid using Code::flags in hash computations for megamorphic
stub caches and therefore the unused ICState field can be finally removed from flags.

BUG= chromium:618701 

Review-Url: https://codereview.chromium.org/2123983004
Cr-Commit-Position: refs/heads/master@{#37708}

[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/arm/code-stubs-arm.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/arm64/code-stubs-arm64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/code-stub-assembler.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/code-stub-assembler.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/external-reference-table.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/heap/mark-compact.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ia32/code-stubs-ia32.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/arm/ic-arm.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/arm/stub-cache-arm.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/arm64/ic-arm64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/arm64/stub-cache-arm64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ia32/ic-ia32.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ia32/stub-cache-ia32.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ic.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ic.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/mips/ic-mips.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/mips/stub-cache-mips.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/mips64/ic-mips64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/mips64/stub-cache-mips64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ppc/ic-ppc.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ppc/stub-cache-ppc.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/s390/ic-s390.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/s390/stub-cache-s390.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/stub-cache.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/stub-cache.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/x64/ic-x64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/x64/stub-cache-x64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/x87/ic-x87.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/x87/stub-cache-x87.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/isolate.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/isolate.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/mips/code-stubs-mips.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/mips64/code-stubs-mips64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ppc/code-stubs-ppc.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/s390/code-stubs-s390.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/type-info.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/type-info.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/x64/code-stubs-x64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/x87/code-stubs-x87.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/test/cctest/test-code-stub-assembler.cc

Project Member

Comment 3 by bugdroid1@chromium.org, Jul 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b449dc0b6fc33e92563f1a31cd523f02aa31baae

commit b449dc0b6fc33e92563f1a31cd523f02aa31baae
Author: ishell <ishell@chromium.org>
Date: Wed Jul 13 10:24:55 2016

[ic] Split megamorphic stub cache in two caches (for loads and for stores).

After this CL we can avoid using Code::flags in hash computations for megamorphic
stub caches and therefore the unused ICState field can be finally removed from flags.

BUG= chromium:618701 

Review-Url: https://codereview.chromium.org/2123983004
Cr-Commit-Position: refs/heads/master@{#37708}

[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/arm/code-stubs-arm.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/arm64/code-stubs-arm64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/code-stub-assembler.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/code-stub-assembler.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/external-reference-table.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/heap/mark-compact.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ia32/code-stubs-ia32.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/arm/ic-arm.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/arm/stub-cache-arm.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/arm64/ic-arm64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/arm64/stub-cache-arm64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ia32/ic-ia32.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ia32/stub-cache-ia32.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ic.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ic.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/mips/ic-mips.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/mips/stub-cache-mips.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/mips64/ic-mips64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/mips64/stub-cache-mips64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ppc/ic-ppc.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/ppc/stub-cache-ppc.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/s390/ic-s390.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/s390/stub-cache-s390.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/stub-cache.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/stub-cache.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/x64/ic-x64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/x64/stub-cache-x64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/x87/ic-x87.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ic/x87/stub-cache-x87.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/isolate.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/isolate.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/mips/code-stubs-mips.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/mips64/code-stubs-mips64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/ppc/code-stubs-ppc.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/s390/code-stubs-s390.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/type-info.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/type-info.h
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/x64/code-stubs-x64.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/src/x87/code-stubs-x87.cc
[modify] https://crrev.com/b449dc0b6fc33e92563f1a31cd523f02aa31baae/test/cctest/test-code-stub-assembler.cc

Project Member

Comment 4 by bugdroid1@chromium.org, Jul 14 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/aa4140b1ccc114b82700471513c715f68b7c5dac

commit aa4140b1ccc114b82700471513c715f68b7c5dac
Author: ishell <ishell@chromium.org>
Date: Thu Jul 14 10:31:57 2016

[ic] [stubs] Don't use Code::flags in megamorphic stub cache hash computations.

This should avoid weird performance issues when changing layout of Code::flags field.

BUG= chromium:618701 

Review-Url: https://codereview.chromium.org/2147433002
Cr-Commit-Position: refs/heads/master@{#37755}

[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/code-stub-assembler.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/code-stub-assembler.h
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/code-stubs.h
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/arm/stub-cache-arm.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/arm64/stub-cache-arm64.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/ia32/stub-cache-ia32.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/ic.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/mips/stub-cache-mips.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/mips64/stub-cache-mips64.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/ppc/stub-cache-ppc.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/s390/stub-cache-s390.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/stub-cache.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/stub-cache.h
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/x64/stub-cache-x64.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/ic/x87/stub-cache-x87.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/type-info.cc
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/src/type-info.h
[modify] https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac/test/cctest/test-code-stub-assembler.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Jul 15 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e6b3002a613da0aa63d039e9629a3688825d22d3

commit e6b3002a613da0aa63d039e9629a3688825d22d3
Author: ishell <ishell@chromium.org>
Date: Fri Jul 15 17:19:32 2016

Revert of [ic] [stubs] Don't use Code::flags in megamorphic stub cache hash computations. (patchset #2 id:20001 of https://codereview.chromium.org/2147433002/ )

Reason for revert:
Unfortunately, the performance issues are still there on Android.

Original issue's description:
> [ic] [stubs] Don't use Code::flags in megamorphic stub cache hash computations.
>
> This should avoid weird performance issues when changing layout of Code::flags field.
>
> BUG= chromium:618701 
>
> Committed: https://crrev.com/aa4140b1ccc114b82700471513c715f68b7c5dac
> Cr-Commit-Position: refs/heads/master@{#37755}

TBR=jkummerow@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG= chromium:618701 

Review-Url: https://codereview.chromium.org/2147213004
Cr-Commit-Position: refs/heads/master@{#37801}

[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/code-stub-assembler.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/code-stub-assembler.h
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/code-stubs.h
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/arm/stub-cache-arm.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/arm64/stub-cache-arm64.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/ia32/stub-cache-ia32.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/ic.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/mips/stub-cache-mips.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/mips64/stub-cache-mips64.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/ppc/stub-cache-ppc.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/s390/stub-cache-s390.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/stub-cache.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/stub-cache.h
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/x64/stub-cache-x64.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/ic/x87/stub-cache-x87.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/type-info.cc
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/src/type-info.h
[modify] https://crrev.com/e6b3002a613da0aa63d039e9629a3688825d22d3/test/cctest/test-code-stub-assembler.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 20 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7da34f8acb99bc513f366aaa8be23742eb30807b

commit 7da34f8acb99bc513f366aaa8be23742eb30807b
Author: ishell <ishell@chromium.org>
Date: Wed Jul 20 14:18:48 2016

[ic] Fix megamorphic stub cache probing on some platforms.

This CL fixes weird performance implications when changing layout of Code::flags field:
it happened that the unused ICStateField with MONOMORPHIC value in the handlers' flags
was accidentally offsetting the underflow bug in stub cache probing code on arm, arm64,
mips and mips64.

Stub cache tests now work even when snapshot is enabled.

Drive-by-change: Fixed counters manipulation on arm64 and mips64.

BUG= chromium:618701 

Review-Url: https://codereview.chromium.org/2161153002
Cr-Commit-Position: refs/heads/master@{#37910}

[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/arm/stub-cache-arm.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/arm64/stub-cache-arm64.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/ia32/stub-cache-ia32.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/mips/stub-cache-mips.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/mips64/stub-cache-mips64.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/ppc/stub-cache-ppc.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/s390/stub-cache-s390.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/x87/stub-cache-x87.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/objects-inl.h
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/objects.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/objects.h
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/test/cctest/test-api.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 20 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7da34f8acb99bc513f366aaa8be23742eb30807b

commit 7da34f8acb99bc513f366aaa8be23742eb30807b
Author: ishell <ishell@chromium.org>
Date: Wed Jul 20 14:18:48 2016

[ic] Fix megamorphic stub cache probing on some platforms.

This CL fixes weird performance implications when changing layout of Code::flags field:
it happened that the unused ICStateField with MONOMORPHIC value in the handlers' flags
was accidentally offsetting the underflow bug in stub cache probing code on arm, arm64,
mips and mips64.

Stub cache tests now work even when snapshot is enabled.

Drive-by-change: Fixed counters manipulation on arm64 and mips64.

BUG= chromium:618701 

Review-Url: https://codereview.chromium.org/2161153002
Cr-Commit-Position: refs/heads/master@{#37910}

[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/arm/stub-cache-arm.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/arm64/stub-cache-arm64.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/ia32/stub-cache-ia32.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/mips/stub-cache-mips.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/mips64/stub-cache-mips64.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/ppc/stub-cache-ppc.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/s390/stub-cache-s390.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/ic/x87/stub-cache-x87.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/objects-inl.h
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/objects.cc
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/src/objects.h
[modify] https://crrev.com/7da34f8acb99bc513f366aaa8be23742eb30807b/test/cctest/test-api.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Jul 21 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8aeb7439c91eb769f752ce87f6fc286c30761580

commit 8aeb7439c91eb769f752ce87f6fc286c30761580
Author: ishell <ishell@chromium.org>
Date: Thu Jul 21 12:57:26 2016

[ic] [stubs] Don't use Code::flags in megamorphic stub cache hash computations.

BUG= chromium:618701 

Review-Url: https://codereview.chromium.org/2167493003
Cr-Commit-Position: refs/heads/master@{#37946}

[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/code-stub-assembler.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/code-stub-assembler.h
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/code-stubs.h
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/arm/stub-cache-arm.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/arm64/stub-cache-arm64.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/ia32/stub-cache-ia32.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/ic.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/mips/stub-cache-mips.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/mips64/stub-cache-mips64.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/ppc/stub-cache-ppc.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/s390/stub-cache-s390.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/stub-cache.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/stub-cache.h
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/x64/stub-cache-x64.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/ic/x87/stub-cache-x87.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/type-info.cc
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/src/type-info.h
[modify] https://crrev.com/8aeb7439c91eb769f752ce87f6fc286c30761580/test/cctest/test-code-stub-assembler.cc

Comment 9 by ishell@chromium.org, Jul 22 2016

Status: Fixed (was: Assigned)
This final CL removes the ICStateField from Code::flags:
https://codereview.chromium.org/2139373002.

Sign in to add a comment