Support lowering of Function.prototype.call in the JSBuiltinReducer,
which is actually straightforward because of the way we represent JS
calls in TurboFan. Currently we cannot inline the actual target yet,
since inlining still runs before typed lowering, but that will be
possible as well soon(ish).
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/1439533002
Cr-Commit-Position: refs/heads/master@{#31938}
port 1e2770123b (r31914)
original commit message:
Avoid write barriers when storing values in the root set, and use
cheaper write barriers for storing maps or tagged pointers. Also
improve the generated code for write barriers, utilizing the out
of line code mechanism that is available to TurboFan backends,
which moves the unlikely case out of the hot path.
BUG=
Review URL: https://codereview.chromium.org/1435743003
Cr-Commit-Position: refs/heads/master@{#31935}
Changing this value is not guaranteed to work yet, but it needs to be
an arg in order to experiment with it.
Review URL: https://codereview.chromium.org/1427343003
Cr-Commit-Position: refs/heads/master@{#31932}
Popcnt is implemented as an optional operator, which is only implementd by x64
at the moment.
Review URL: https://codereview.chromium.org/1424173006
Cr-Commit-Position: refs/heads/master@{#31928}
Jic and jialc compact branch ops are fixed as they does not have 'forbidden slot' restriction. Also COP1 branches (CTI instructions) added to IsForbiddenAfterBranchInstr().
TEST=cctest/test-disasm-mips/Type0
BUG=
Review URL: https://codereview.chromium.org/1423493006
Cr-Commit-Position: refs/heads/master@{#31922}
The minimum allocation limit already enforces this constraint for normal GCs.
GCs triggered by the memory reducer and external limit should work for all heap sizes.
BUG=chromium:552305
LOG=NO
Review URL: https://codereview.chromium.org/1418293006
Cr-Commit-Position: refs/heads/master@{#31921}
Generated code performs distinct floating multiply and add/subtract
operations. Tests fail when GCC uses fmadd/fmsub to calculate the
expected result since these instructions provide higher accuracy due
to the lack of an intermediate round.
R=machenbach@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1416123007
Cr-Commit-Position: refs/heads/master@{#31918}
This patch extends the typed lowering with a specialized version of 'instanceof' that is used if the "class", i.e. the constructor function, is a known constant.
Unittests check that replacement occurs as intended. Functional correctness is ensured by extensive unit tests covering instanceof already in the testsuite.
TESTS=unittests/JSTypedLoweringTest.{JSInstanceOfSpecializationWithSmiCheck,JSInstanceOfSpecializationWithoutSmiCheck,JSInstanceOfNoSpecialization}
Review URL: https://codereview.chromium.org/1407413014
Cr-Commit-Position: refs/heads/master@{#31916}
The body descriptor supports different visiting policies: it could visit or skip
the code entry and it could visit or skip next function field.
BUG=v8:4531
LOG=Y
Review URL: https://codereview.chromium.org/1422773007
Cr-Commit-Position: refs/heads/master@{#31915}
Avoid write barriers when storing values in the root set, and use
cheaper write barriers for storing maps or tagged pointers. Also
improve the generated code for write barriers, utilizing the out
of line code mechanism that is available to TurboFan backends,
which moves the unlikely case out of the hot path.
R=jarin@chromium.org, mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/1414183006
Cr-Commit-Position: refs/heads/master@{#31914}
RegExp.prototye[@@split] is not yet implement to spec regarding creating
new RegExp object with the SpeciesConstructor.
R=littledan@chromium.org
BUG=v8:4345
LOG=N
Review URL: https://codereview.chromium.org/1427573005
Cr-Commit-Position: refs/heads/master@{#31911}
port 2b4cb2a140 (r31873)
original commit message:
The %StringCharFromCode and %CharFromCode runtime function perform
exactly the same task, so we need only one of them.
BUG=
Review URL: https://codereview.chromium.org/1432063002
Cr-Commit-Position: refs/heads/master@{#31909}
Reason for revert: failed tests on a Windows build.
TBR=rossberg,cbruni,neis
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/1426943007
Cr-Commit-Position: refs/heads/master@{#31907}
Port 7c3396d01c
Original commit message:
Introduce receiver conversion mode specialization for the Call and
CallFunction builtins, so we can specialize the builtin functionality
(actually an optimization only) based on static information from the
callsite (this is basically a superset of the optimizations that were
available with the CallFunctionStub and CallICStub, except that these
optimizations are correct now).
This fixes a regression introduced by the removal of CallFunctionStub,
for programs that call a lot.
R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
BUG=chromium:552244
LOG=n
Review URL: https://codereview.chromium.org/1425083004
Cr-Commit-Position: refs/heads/master@{#31905}
This was found through a VC++ 2015 Update 1 warning about
pointer truncation. The fix is required for VC++ 2015
compatibility.
Review URL: https://codereview.chromium.org/1411403011
Cr-Commit-Position: refs/heads/master@{#31897}
I improved the tests for Word32Clz, Word32Ctz, and Word32Popcnt, and ported
some tests to the BufferedRawMachineAssemblerTester.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/1437493002
Cr-Commit-Position: refs/heads/master@{#31896}
This unconditionally enables zapping of old optimized code maps and
unifies the various zapping paths. The unconditional zapping, even if
heap verification is off, is needed because slots in the code map have
not been recorded and evacuation invariants break.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/1410833009
Cr-Commit-Position: refs/heads/master@{#31895}
This makes sure that --trace-turbo or --turbo-source-positions does not
completely disable inlining. The recent introduction of a finalization
interface to the reducer borked the SourcePositionWrapper reducer.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/1406113008
Cr-Commit-Position: refs/heads/master@{#31893}
1) they always own descriptors,
2) the number of own descriptors is equal to the number of descriptors in the descriptor array.
This allows an initial map of a subclass to share descriptor array with initial map of the parent class (if it already contains properties).
BUG=chromium:551430
LOG=N
Review URL: https://codereview.chromium.org/1411933005
Cr-Commit-Position: refs/heads/master@{#31892}