Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Issue 2289613002: [turbofan] Remove special JSForInStep and JSForInDone. (Closed)

Created:
4 years, 3 months ago by Benedikt Meurer
Modified:
4 years, 3 months ago
Reviewers:
epertoso
CC:
v8-reviews_googlegroups.com, oth, v8-x87-ports_googlegroups.com, v8-ppc-ports_googlegroups.com, rmcilroy, v8-mips-ports_googlegroups.com
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

[turbofan] Remove special JSForInStep and JSForInDone. These JavaScript operators were special hacks to ensure that we always operate on Smis for the magic for-in index variable, but this never really worked in the OSR case, because the OsrValue for the index variable didn't have the proper information (that we have for the JSForInPrepare in the non-OSR case). Now that we have loop induction variable analysis and binary operation hints, we can just use JSLessThan and JSAdd instead with appropriate Smi hints, which handle the OSR case by inserting Smi checks (that are always true). Thanks to OSR deconstruction and loop peeling these Smi checks will be hoisted so they don't hurt the OSR case too much. Drive-by-change: Rename the ForInDone bytecode to ForInContinue, since we have to lower it to JSLessThan to get the loop induction variable goodness. R=epertoso@chromium.org BUG=v8:5267 Committed: https://crrev.com/1915762cc8caea42727daebfe738bfcdca8ac859 Cr-Commit-Position: refs/heads/master@{#38968}

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+59 lines, -129 lines) Patch
M src/ast/ast.h View 1 chunk +2 lines, -1 line 0 comments Download
M src/compiler/ast-graph-builder.cc View 2 chunks +14 lines, -5 lines 0 comments Download
M src/compiler/bytecode-graph-builder.cc View 2 chunks +6 lines, -3 lines 0 comments Download
M src/compiler/js-generic-lowering.cc View 2 chunks +0 lines, -11 lines 0 comments Download
M src/compiler/js-operator.h View 1 chunk +0 lines, -2 lines 0 comments Download
M src/compiler/js-operator.cc View 1 chunk +0 lines, -2 lines 0 comments Download
M src/compiler/js-typed-lowering.h View 3 chunks +0 lines, -4 lines 0 comments Download
M src/compiler/js-typed-lowering.cc View 4 chunks +0 lines, -24 lines 0 comments Download
M src/compiler/linkage.cc View 1 chunk +0 lines, -2 lines 0 comments Download
M src/compiler/opcodes.h View 1 chunk +0 lines, -2 lines 0 comments Download
M src/compiler/typer.cc View 1 chunk +0 lines, -7 lines 0 comments Download
M src/compiler/verifier.cc View 1 chunk +0 lines, -13 lines 0 comments Download
M src/full-codegen/arm/full-codegen-arm.cc View 1 chunk +1 line, -0 lines 0 comments Download
M src/full-codegen/arm64/full-codegen-arm64.cc View 1 chunk +1 line, -0 lines 0 comments Download
M src/full-codegen/ia32/full-codegen-ia32.cc View 1 chunk +1 line, -0 lines 0 comments Download
M src/full-codegen/mips/full-codegen-mips.cc View 1 chunk +1 line, -0 lines 0 comments Download
M src/full-codegen/mips64/full-codegen-mips64.cc View 1 chunk +1 line, -0 lines 0 comments Download
M src/full-codegen/x64/full-codegen-x64.cc View 1 chunk +1 line, -0 lines 0 comments Download
M src/interpreter/bytecode-array-builder.h View 1 chunk +1 line, -1 line 0 comments Download
M src/interpreter/bytecode-array-builder.cc View 1 chunk +3 lines, -3 lines 0 comments Download
M src/interpreter/bytecode-generator.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M src/interpreter/bytecodes.h View 1 chunk +2 lines, -1 line 0 comments Download
M src/interpreter/bytecodes.cc View 1 chunk +1 line, -1 line 0 comments Download
M src/interpreter/interpreter.cc View 2 chunks +5 lines, -5 lines 0 comments Download
M src/runtime/runtime.h View 1 chunk +1 line, -3 lines 0 comments Download
M src/runtime/runtime-forin.cc View 2 chunks +0 lines, -21 lines 0 comments Download
M test/cctest/interpreter/bytecode_expectations/ForIn.golden View 4 chunks +8 lines, -8 lines 0 comments Download
M test/cctest/interpreter/bytecode_expectations/WideRegisters.golden View 1 chunk +2 lines, -2 lines 0 comments Download
M test/unittests/interpreter/bytecode-array-builder-unittest.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M test/unittests/interpreter/bytecode-array-writer-unittest.cc View 2 chunks +4 lines, -4 lines 0 comments Download

Messages

Total messages: 11 (6 generated)
Benedikt Meurer
4 years, 3 months ago (2016-08-29 08:06:17 UTC) #1
epertoso
lgtm
4 years, 3 months ago (2016-08-29 08:32:07 UTC) #6
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2289613002/1
4 years, 3 months ago (2016-08-29 08:45:32 UTC) #8
commit-bot: I haz the power
Committed patchset #1 (id:1)
4 years, 3 months ago (2016-08-29 08:47:17 UTC) #9
commit-bot: I haz the power
4 years, 3 months ago (2016-08-29 08:47:46 UTC) #11
Message was sent while issue was closed.
Patchset 1 (id:??) landed as
https://crrev.com/1915762cc8caea42727daebfe738bfcdca8ac859
Cr-Commit-Position: refs/heads/master@{#38968}

Powered by Google App Engine
This is Rietveld 408576698