Commit Graph

26408 Commits

Author SHA1 Message Date
sigurds
45787501e5 [turbofan] Pseudo-inline 'instanceof'
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}
2015-11-10 12:20:11 +00:00
ishell
8e09ee1dba Make JSFunction::BodyDescriptor the only single place that knows how to iterate JSFunction's body.
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}
2015-11-10 11:46:39 +00:00
bmeurer
1e2770123b [turbofan] Avoid unnecessary write barriers and improve code generation.
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}
2015-11-10 11:05:59 +00:00
verwaest
b9d25d86a8 Support fast-path allocation for subclass constructors with correctly initialized initial maps.
BUG=v8:3330
LOG=n

Review URL: https://codereview.chromium.org/1413003008

Cr-Commit-Position: refs/heads/master@{#31913}
2015-11-10 08:51:16 +00:00
ahaas
a594ff73a9 Implemented the ctz Turbo Fan operator for x64.
Ctz is implemented as an optional operator at the moment, which is only
implemented by x64 at the moment.

R=titzer@chromium.org

Review URL: https://codereview.chromium.org/1421163005

Cr-Commit-Position: refs/heads/master@{#31912}
2015-11-10 08:43:00 +00:00
yangguo
9a569ec2c8 [es6] Implement @@split subclassing.
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}
2015-11-10 07:00:44 +00:00
yangguo
483d8b9bd8 Unify setting accessor properties in native code.
R=cbruni@chromium.org

Review URL: https://codereview.chromium.org/1416093006

Cr-Commit-Position: refs/heads/master@{#31910}
2015-11-10 06:58:41 +00:00
zhengxing.li
12a073e69a X87: [runtime] Drop redundant %CharFromCode runtime entry.
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}
2015-11-10 02:25:21 +00:00
bradnelson
318bcbee31 Allow constant heap accesses in asm typer.
BUG= https://code.google.com/p/v8/issues/detail?id=4203
TEST=test-asm-validator
R=titzer@chromium.org,aseemgarg@chromium.org
LOG=N

Review URL: https://codereview.chromium.org/1405993009

Cr-Commit-Position: refs/heads/master@{#31908}
2015-11-10 02:00:03 +00:00
neis
ec0f891d1e Revert of "[es6] Partially implement Reflect.ownKeys."
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}
2015-11-10 00:05:21 +00:00
neis
4194d0ebad [es6] Partially implement Reflect.ownKeys.
Proxies are not properly supported yet.

R=cbruni, rossberg
BUG=

Review URL: https://codereview.chromium.org/1405243006

Cr-Commit-Position: refs/heads/master@{#31906}
2015-11-09 23:30:53 +00:00
mbrandy
74966e61ea PPC: [builtins] Introduce specialized Call/CallFunction builtins.
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}
2015-11-09 21:11:37 +00:00
mbrandy
bdb04d5b8b PPC: [runtime] Drop redundant %CharFromCode runtime entry.
Port 2b4cb2a140

Original commit message:
    The %StringCharFromCode and %CharFromCode runtime function perform
    exactly the same task, so we need only one of them.

R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
BUG=

Review URL: https://codereview.chromium.org/1429953005

Cr-Commit-Position: refs/heads/master@{#31904}
2015-11-09 21:02:46 +00:00
mbrandy
dba4dfb2b0 PPC64: Implemented the Word64Clz TurboFan operator.
R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
BUG=

Review URL: https://codereview.chromium.org/1433733002

Cr-Commit-Position: refs/heads/master@{#31903}
2015-11-09 20:57:02 +00:00
mbrandy
96baec278c PPC: Remove receiver conversion from function prologue
Port 4ab1b05d5e

Original commit message:
    Depends on https://codereview.chromium.org/1407373007/
    After that CL, all receiver conversion is handled by the call builtin.

R=verwaest@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
BUG=

Review URL: https://codereview.chromium.org/1412803014

Cr-Commit-Position: refs/heads/master@{#31902}
2015-11-09 20:55:49 +00:00
mbrandy
44fcc2e795 PPC: Remove CallFunctionStub, always call through the Call builtin (also from CallIC).
Port 44c44521ae

Original commit message:
    This fixes receiver conversion since the Call builtin does it correctly.

R=verwaest@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
BUG=v8:4526
LOG=n

Review URL: https://codereview.chromium.org/1423973006

Cr-Commit-Position: refs/heads/master@{#31901}
2015-11-09 20:48:11 +00:00
rmcilroy
aca03dfca1 [Interpreter] Disable mjsunit/readonly test on ignition due to flakes.
BUG=v8:4280
LOG=N
NOTRY=True
TBR=machenbach@chromium.org

Review URL: https://codereview.chromium.org/1438463002

Cr-Commit-Position: refs/heads/master@{#31900}
2015-11-09 20:46:21 +00:00
fedor
461e5b49d0 binary-operator-reducer: reduce mul+div(shift)
Reduction Input:

    ChangeInt32ToFloat64=>          TruncateFloat64ToInt32
                         Float64Mul=>
    ChangeInt32ToFloat64=>          Float64Div=>TruncateFloat64ToInt32

Output:

         =>  TruncateInt64ToInt32
Int64Mul
         =>  Int64Shr => TruncateInt64ToInt32

Test code:

    function mul(a, b) {
      var l = a & 0x3ffffff;
      var h = b & 0x3ffffff;
      var m = l * h;

      var rl = m & 0x3ffffff;
      var rh = (m / 0x4000000) | 0;

      return rl | rh;
    }

    mul(1, 2);
    var a0 = mul(0x3ffffff, 0x3ffffff);
    mul(0x0, 0x0);
    %OptimizeFunctionOnNextCall(mul);
    var a1 = mul(0x3ffffff, 0x3ffffff);

    print(a0 + ' == ' + a1);

BUG=
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/1350223006

Cr-Commit-Position: refs/heads/master@{#31899}
2015-11-09 20:42:39 +00:00
mlippautz
aecd084dd9 [test] Move away from deprecated API for heap-related tests.
Removed deprecated API usage in
 - test-heap.cc
 - test-incremental-marking.cc
 - test-alloc.cc

BUG=v8:4134
LOG=n

Review URL: https://codereview.chromium.org/1406393005

Cr-Commit-Position: refs/heads/master@{#31898}
2015-11-09 19:48:44 +00:00
brucedawson
744424208b Fix pointer truncation in 64-bit Windows builds
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}
2015-11-09 19:08:07 +00:00
ahaas
7558e93347 Improved some tests in test-run-machops.
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}
2015-11-09 17:42:00 +00:00
mstarzinger
0c1994c64d [heap] Simplify zapping of old optimized code maps.
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}
2015-11-09 17:20:07 +00:00
rmcilroy
8b5a010242 [Interpreter] Skip failing tests on arm.debug in Ignition.
BUG=v8:4280
LOG=N
NOTRY=True
TBR=machenbach@chromium.org

Review URL: https://codereview.chromium.org/1424263004

Cr-Commit-Position: refs/heads/master@{#31894}
2015-11-09 17:13:56 +00:00
mstarzinger
f27d2e593f [turbofan] Fix inlining with --trace-turbo flag.
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}
2015-11-09 16:44:16 +00:00
ishell
2ed1749091 Establish an invariant on initial maps:
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}
2015-11-09 16:27:11 +00:00
rmcilroy
fd6c005982 [Ignition] Skip another failing mjsunittest on ignition.
Skips regress-446389.

BUG=v8:4280
LOG=N
NOTRY=true
TBR=machenbach@chromium.org

Review URL: https://codereview.chromium.org/1412313010

Cr-Commit-Position: refs/heads/master@{#31891}
2015-11-09 16:23:42 +00:00
adamk
9a8c0119ef Properly handle parsing a '%'-prefixed runtime call as a binding pattern
R=rossberg@chromium.org
BUG=chromium:552302
LOG=n

Review URL: https://codereview.chromium.org/1425723004

Cr-Commit-Position: refs/heads/master@{#31890}
2015-11-09 15:32:25 +00:00
rmcilroy
cdc1fe5c3f [Ignition] Fix typo in ignition mjsunit status.
BUG=v8:4280
LOG=N
NOTRY=true

Review URL: https://codereview.chromium.org/1429423002

Cr-Commit-Position: refs/heads/master@{#31889}
2015-11-09 14:56:07 +00:00
mstarzinger
8daa7215d4 [debugger] Move clearing of optimized code map out of GC.
This moves the clearing of all optimized code maps out of the GC and
into the debugger to where it is actually required. The main goal here
is to simplify the logic in the already complex visitor for our shared
function info objects.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/1423713018

Cr-Commit-Position: refs/heads/master@{#31888}
2015-11-09 14:40:01 +00:00
rmcilroy
54fb5c0da5 [Ignition] Fix typo in ignition test262 status.
BUG=v8:4280
LOG=N
NOTRY=true

Review URL: https://codereview.chromium.org/1420203009

Cr-Commit-Position: refs/heads/master@{#31887}
2015-11-09 14:38:50 +00:00
rmcilroy
aa858ffbbd [Ignition] Skip some more mjsunit and test262 tests on ignition.
BUG=v8:4280
LOG=N
NOTRY=true

Review URL: https://codereview.chromium.org/1415143009

Cr-Commit-Position: refs/heads/master@{#31886}
2015-11-09 14:16:26 +00:00
mstarzinger
ce1720690b [turbofan] Bring back early return in JSInliningHeuristic.
This redcues the noise created by --trace-turbo-inlining when there
actually are no candidates being processed.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/1410723004

Cr-Commit-Position: refs/heads/master@{#31885}
2015-11-09 14:15:12 +00:00
zhengxing.li
9acf00c78d X87: [builtins] Introduce specialized Call/CallFunction builtins.
port 7c3396d01c (r31871)

  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.

BUG=

Review URL: https://codereview.chromium.org/1431133002

Cr-Commit-Position: refs/heads/master@{#31884}
2015-11-09 14:05:55 +00:00
jacob.bramley
c701228534 Use a register for the tail call address where appropriate.
BUG=

Review URL: https://codereview.chromium.org/1429063003

Cr-Commit-Position: refs/heads/master@{#31883}
2015-11-09 14:04:42 +00:00
caitpotter88
e63248f6d7 [regexp] remove no-op RegExp.multiline accessor and alias
Remove some non-standard code that doesn't do anything anyways.

While FireFox uses this to set the default value for the multiline flag,
it is nonstandard and slated for removal. The matching behaviour has
never been implemented in either JSC or V8, so there is little
web-compat risk.

The only possible risk could be someone depending on the ToBoolean()
behaviour of the flag, but this seems unlikely.

BUG=v8:3870
LOG=N
R=adamk@chromium.org, littledan@chromium.org, yangguo@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1417733012

Cr-Commit-Position: refs/heads/master@{#31882}
2015-11-09 14:03:26 +00:00
Michael Achenbach
bde296670c Whitespace change to test ignition.
Cr-Commit-Position: refs/heads/master@{#31881}
2015-11-09 13:43:07 +00:00
bmeurer
339f0439e1 [turbofan] Remove unused BuildLoadGlobalProxy from AstGraphBuilder.
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/1413783010

Cr-Commit-Position: refs/heads/master@{#31880}
2015-11-09 12:50:28 +00:00
mstarzinger
270be9351c [turbofan] Switch message object manipulation to JSOperator.
This switches loading and storing of the message object within the
Isolate to use JavaScript operators built by the JSOperatorBuilder
instead of machine operators. This is a preparation for a stricter
representation selection for loads and stores.

R=jarin@chromium.org

Review URL: https://codereview.chromium.org/1412443010

Cr-Commit-Position: refs/heads/master@{#31879}
2015-11-09 12:44:31 +00:00
balazs.kilvady
bddf8c9e08 MIPS: Adapt long branches to use bc & balc on r6.
BUG=

Review URL: https://codereview.chromium.org/1431813002

Cr-Commit-Position: refs/heads/master@{#31878}
2015-11-09 11:25:24 +00:00
ulan
d763c7d089 Do not print stack-trace for OOM when GC is in progress.
BUG=chromium:553051
LOG=NO

Review URL: https://codereview.chromium.org/1433663002

Cr-Commit-Position: refs/heads/master@{#31877}
2015-11-09 11:07:07 +00:00
mstarzinger
087513d6d4 [heap] Separate out optimized code map processing.
This separates the post-processing step for optimized code maps out of
the CodeFlusher. It uses the complete SharedFunctionInfo::Iterator to
visit all candidates instead of gathering candidates during marking.

Gathering candidates during marking no longer makes sense, now that the
majority of SharedFunctionInfo objects will hold such an optimized code
map. Also it reduces complexity of the implementation. Also conflating
this mechanism with "code flushing" was confusing.

This reverts commit 7f1fb29faa.

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/1418453008

Cr-Commit-Position: refs/heads/master@{#31876}
2015-11-09 11:05:51 +00:00
bmeurer
9e9d1cb373 [turbofan] Run inlining within the regular reducer fixpoint.
Introduce Reducer::Finalize, which get's called by the GraphReducer once
all reductions are done, and use this to implement full inlining as part
of the regular reducer fixpoint.

R=jarin@chromium.org
BUG=v8:4493
LOG=n

Review URL: https://codereview.chromium.org/1419373012

Cr-Commit-Position: refs/heads/master@{#31875}
2015-11-09 10:54:57 +00:00
jacob.bramley
d7166acd2b [arm64] Fix a GCC build warning.
BUG=

Review URL: https://codereview.chromium.org/1414283009

Cr-Commit-Position: refs/heads/master@{#31874}
2015-11-09 09:34:42 +00:00
bmeurer
2b4cb2a140 [runtime] Drop redundant %CharFromCode runtime entry.
The %StringCharFromCode and %CharFromCode runtime function perform
exactly the same task, so we need only one of them.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/1417743007

Cr-Commit-Position: refs/heads/master@{#31873}
2015-11-09 09:28:24 +00:00
yangguo
742ae613ec Do not switch to two-byte string in String.fromCharCode if avoidable.
R=bmeurer@chromium.org
BUG=v8:4536
LOG=N

Review URL: https://codereview.chromium.org/1427743008

Cr-Commit-Position: refs/heads/master@{#31872}
2015-11-09 08:53:42 +00:00
bmeurer
7c3396d01c [builtins] Introduce specialized Call/CallFunction builtins.
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=yangguo@chromium.org
BUG=chromium:552244
LOG=n

Review URL: https://codereview.chromium.org/1436493002

Cr-Commit-Position: refs/heads/master@{#31871}
2015-11-09 08:48:33 +00:00
jarin
aea89b93d2 [deoptimizer] Fixes to printing, remove unused parameters.
Review URL: https://codereview.chromium.org/1425143008

Cr-Commit-Position: refs/heads/master@{#31870}
2015-11-09 06:08:13 +00:00
mtrofin
ab1d270a72 [assembler] Introduce proper AssemblerBase::Print() for improved debuggability.
While working on frame elision, I wanted to disassemble codegen in the
debugger, as the code generation is progressing. I discovered we had a
 "Print" member on the x64 assembler, without any implementation. I
pulled it up to AssemblerBase and gave it an implementation that
should work for the other architectures.

Also checked that ia32, x87, arm and arm64 assemblers didn't have
such an implementation - free Print.

Arm64 has a naming conflict with the v8::internal::Disassembler. I
renamed the arm64 type with a more specific name.

Opportunistically fixed a bug in the name converter. This debug-time
printer doesn't provide a Code object, which should be OK with the
name converters, by the looks of other APIs there. All this means is that
when using the Print() API, we just get addresses dumped without any
context (like what this address may be - a stub maybe, etc). This seems
fine for the scenario.

There may be other places that assume a Code object. Since this is
a diagnostics-only scenario, for codegen developers, I feel it is
reasonable to fix such other places as we find them.

Review URL: https://codereview.chromium.org/1431933003

Cr-Commit-Position: refs/heads/master@{#31869}
2015-11-09 05:39:38 +00:00
pkotwicz
be4d1b19df Update v8_external_startup_data_assets for https://codereview.chromium.org/1422793004/
BUG=chromium:547162
LOG=Y

Review URL: https://codereview.chromium.org/1412933009

Cr-Commit-Position: refs/heads/master@{#31868}
2015-11-08 01:44:48 +00:00
ishell
37a9be505a Regression test for JSRegExp literals sharing.
JSRegExp's properties backing stores must not be shared.

BUG=chromium:548580
LOG=N

Review URL: https://codereview.chromium.org/1429743006

Cr-Commit-Position: refs/heads/master@{#31867}
2015-11-07 08:19:27 +00:00