Commit Graph

311 Commits

Author SHA1 Message Date
bmeurer@chromium.org
d750a6dcd8 Consistently use HStringAdd instead of HCallStub with CodeStub::StringAdd.
Previously there were two ways to actually use the StringAddStub
from Hydrogen:

- Either using HStringAdd (which implied NO_STRING_CHECK_IN_STUB
  and and does the argument handling internally),
- or using HCallStub with CodeStub::StringAdd (which implied
  NO_STRING_ADD_FLAGS and expected the arguments to be on the
  stack already).

R=mvstanton@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15771 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-19 09:42:15 +00:00
mvstanton@chromium.org
b9f0c06ab2 The gc should be able to traverse all AllocationSites for decision making. The sites are threaded into a weak list. Special problems include:
* Allocations of AllocationSites occur in generated code, so generated code needs to be able to add to the list. For now I have a special hydrogen instruction, though it would be nice to use general purpose instructions.
* The snapshot contains AllocationSites, and these need to be re-threaded into the list on deserialization.

Something nice is that the AllocationSites are only created in old space, so a special new space visitor isn't required.

BUG=
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-17 11:50:24 +00:00
mvstanton@chromium.org
4465c83104 Calls to HCheckFunction can be eliminated if the value is an HConstant.
Reland "Calls to HCheckFunction can be eliminated if the value is an HConstant"
(https://codereview.chromium.org/18751003/).

The CL failed because of heap snapshot issues. alph@chromium.org just checked in
a fix for that (https://code.google.com/p/v8/source/detail?r=15694).

BUG=
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-17 08:46:01 +00:00
hpayer@chromium.org
a65cb03955 Added tracing information to the case when allocation folding cannot be performed.
BUG=
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-16 08:54:41 +00:00
mstarzinger@chromium.org
35052bc2ea Reland deprecation of HAllocateObject in favor of HAllocate.
This essentially relands r14930 and r14935 with adaptions to the current
code base. It models the instantiation of an implicit receiver for
CallNew nodes in hydrogen using HAllocate together with generic stores
instead of one specialized HAllocateObject instruction, hence creating a
single choking point for inlined allocation in optimized code.

R=hpayer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-15 15:12:16 +00:00
hpayer@chromium.org
90056df999 Use filler maps for folded allocations when verify heap is turned on.
BUG=
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 15:29:02 +00:00
hpayer@chromium.org
90a8ac78bd Remove filler map when folding allocations and turn on allocation folding.
BUG=
R=titzer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 13:53:54 +00:00
hpayer@chromium.org
99d541a486 Allocation folding integrated into the GVN phase.
BUG=
R=mstarzinger@chromium.org, titzer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 11:41:33 +00:00
mvstanton@chromium.org
448b268962 Revert "Calls to HCheckFunction can be eliminated if the value is an HConstant"
This reverts commit 3f96122cc572f7a0b638c30f65328c3cb3666795.

BUG=
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15590 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 12:19:37 +00:00
olivf@chromium.org
857178ad23 Replace custom builtin invocation instructions by a generic version
BUG=
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15582 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 09:02:23 +00:00
jkummerow@chromium.org
f0811f4e6f Fix and cleanup can_be_minus_zero computation
R=rossberg@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15546 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 11:15:24 +00:00
mvstanton@chromium.org
eea586f2a1 Calls to HCheckFunction can be eliminated if the value is an HConstant
function, and that function handle matches the target handle.

BUG=
R=danno@chromium.org, mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 09:00:59 +00:00
danno@chromium.org
bd50e6d38f Refactoring and cleanup of control instructions
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 10:40:14 +00:00
danno@chromium.org
345cc98a25 Generate StoreGlobal stubs with Hydrogen
- Constants globals are inlined into Hydrogen code using code dependencies that invalidate the Crankshafted code when global PropertyCells or the global object change.
- The more general case generates code that is just as good as the hand-written assembly stubs on all platforms.

R=rossberg@chromium.org, ulan@chromium.org

Committed: http://code.google.com/p/v8/source/detail?r=15419

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 10:34:02 +00:00
yangguo@chromium.org
02674ee414 Keep two empty lines between declarations for cpp files
R=yangguo@chromium.org

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

Patch from Haitao Feng <haitao.feng@intel.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 09:52:11 +00:00
olivf@chromium.org
240c7aced9 Convert UnaryOpStub to a HydrogenCodeStub
BUG=
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 09:26:22 +00:00
olivf@chromium.org
950a372834 Revert "Convert UnaryOpStub to a HydrogenCodeStub"
The problem is the HCallConstantFunction which is not context sensitive, so we leak the builtin. We first need a Hydrogen version of __ IvokeBuiltin.

BUG=
R=danno@chromium.org, machenbach@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-03 19:57:25 +00:00
olivf@chromium.org
0d2fed8f26 Convert UnaryOpStub to a HydrogenCodeStub
BUG=
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-03 14:56:53 +00:00
danno@chromium.org
77c20c30a3 Revert r15419: "Generate StoreGlobal stubs with Hydrogen"
TBR=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-01 15:12:21 +00:00
danno@chromium.org
a3bce19868 Generate StoreGlobal stubs with Hydrogen
- Constants globals are inlined into Hydrogen code using code dependencies that invalidate the Crankshafted code when global PropertyCells or the global object change.
- The more general case generates code that is just as good as the hand-written assembly stubs on all platforms.

R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15419 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-01 13:22:13 +00:00
jkummerow@chromium.org
c7a9bffbcf Clean up the usage of V8_TARGET_ARCH_${arch} and V8_HOST_ARCH_${arch}
R=jkummerow@chromium.org

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

Patch from Haitao Feng <haitao.feng@intel.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 15:34:48 +00:00
mvstanton@chromium.org
83519ec87a Hydrogen array constructor cleanup and improvements
* Cleanup of LCallNewArray::PrintDataTo() method
* Created HCallNewArray::PrintDataTo()
* Created many more tests in array-constructor-feedback.js
* Removed redundant instructions in
  GenerateRecordCallTarget
* Bugfix in CreateArrayDispatchOneArgument: on a call to
  new Array(0), we'd like to set the type feedback cell to
  a packed elements kind, but we shouldn't do it if the
  cell contains the megamorphic sentinel.
* When used from crankshaft, ArrayConstructorStubs can
  avoid verifying that the function being called is the
  array function from the current native context, relying
  instead on the fact that crankshaft issues an
  HCheckFunction to protect the constructor call. (this
  new minor key is used in LCodeGen::DoCallNewArray(), and
  influences code generation in
  CodeStubGraphBuilderBase::BuildArrayConstructor()).
* Optimization: the array constructor specialized for
  FAST_SMI_ELEMENTS can save some instructions by looking
  up the correct map on the passed in constructor, rather
  than indexing into the array of cached maps per element
  kind.

BUG=
R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 13:16:14 +00:00
bmeurer@chromium.org
f11af230e8 Refactor HInferRepresentation into an HPhase and use the phase zone.
Rename HInferRepresentation to HInferRepresentationPhase,
following naming scheme suggested by danno@chromium.org in
https://codereview.chromium.org/17458002

The HInferRepresentationPhase now uses the phase zone for all its
allocations.

Depends on https://codereview.chromium.org/17587008

R=danno@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 07:40:35 +00:00
olivf@chromium.org
21cd74eaa2 Avoid Unnecessary Smi Checks
BUG=
R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-26 17:37:55 +00:00
mstarzinger@chromium.org
bd90e71b01 Fix ugly typo in HValue::UpdateRepresentation.
R=jkummerow@chromium.org
TEST=mjsunit/math-min-max --extra-flags="--gc-interval=500"

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-24 14:34:07 +00:00
jkummerow@chromium.org
cbc8ed7110 HBoundsCheck shouldn't ignore Tagged input representations unconditionally
BUG=v8:2740
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15267 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-21 12:50:02 +00:00
rossberg@chromium.org
0977c60984 Use AST's type field and merge types for unary, binary & compare ICs
R=jkummerow@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-21 11:10:06 +00:00
yangguo@chromium.org
b7b92bd9ac Short-circuit embedded cons strings.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-21 09:24:30 +00:00
verwaest@chromium.org
917ac7d413 Improve range analysis for smi phi
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/17498002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-20 14:11:52 +00:00
olivf@chromium.org
29d3461529 Let NaN flow as double into HBranch + some minor improvements
BUG=
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-20 13:51:03 +00:00
verwaest@chromium.org
4922e3d206 Flexible representation for BuildIncrement, but CannotBeTagged.
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/17028017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-20 13:22:46 +00:00
mstarzinger@chromium.org
ea87d08557 Revert r14930 and r14935 temporarily.
This is a temporary revert to track down a potential perf regression
introduced in r14930. The following two changes were reverted:
- "Deprecate HAllocateObject in favor of HAllocate."
- "Added pretenuring support for call new."

R=danno@chromium.org
BUG=chromium:247504

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-20 10:48:14 +00:00
palfia@homejinni.com
93609033e1 MIPS: Optimise Math.floor(x/y) to use integer division for MIPS.
Use div instruction if some divisors do not have magic number.

Based on commit r11427 (318a9598).

This commit also ports commit r15161 (554d45c1).

BUG=

Review URL: https://codereview.chromium.org/16951016
Patch from Dusan Milosavljevic <Dusan.Milosavljevic@rt-rk.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15181 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-17 15:06:41 +00:00
jkummerow@chromium.org
681cfe9cad Fix MathFloorOfDiv optimization on non-SDIV ARM
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 18:15:49 +00:00
verwaest@chromium.org
328aeb14fb Revert "Improved range analysis for bitwise operations."
This reverts commit r15170

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/17093005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15173 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 17:25:03 +00:00
verwaest@chromium.org
98167ed0a8 Improved range analysis for bitwise operations.
R=fschneider@chromium.org, verwaest@chromium.org

Review URL: https://chromiumcodereview.appspot.com/9156001

Patch from Stephen Adams <sra@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15170 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 16:55:34 +00:00
jkummerow@chromium.org
fb1057ad5d Fix MathFloorOfDiv canonicalization ASSERT failures
- remove outdated ASSERT about instruction type
- add inserted HChanges to the graph

R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 16:27:52 +00:00
jkummerow@chromium.org
de71923b20 Make MathFloorOfDiv optimization trigger more often
BUG=v8:2205
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15161 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 14:33:15 +00:00
verwaest@chromium.org
7cebf3f684 When HBranch sees Smi, it sees Smi.
R=mvstanton@chromium.org

Review URL: https://chromiumcodereview.appspot.com/17064006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15159 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 14:23:05 +00:00
verwaest@chromium.org
41c63d8899 Only infer int32 in HBoundsCheck if input is double or int32.
R=jkummerow@chromium.org, mmassi@chromium.org

Review URL: https://chromiumcodereview.appspot.com/17057004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15156 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 14:14:07 +00:00
verwaest@chromium.org
84759d7e6e Cleanup RepresentationFromUseRequirements, move it to HValue and use it where relevant
BUG=
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/17005004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15155 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 14:13:48 +00:00
jkummerow@chromium.org
9447014780 Skip some conditional deopts for Div/Mul when all uses are truncating.
- set "can be minus zero" flag properly so minus-zero checks are skipped
- skip "integer result?" check in division code when uses are truncating
- drive-by cleanup: consolidated computation of kCanOverflow flag for Add/Sub into range inference phase

BUG=v8:2132
R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15060 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-11 11:43:57 +00:00
jkummerow@chromium.org
57632e208a Increase sanity of integer division handling on ARM
- In the INT32 BinaryOpStub, fix type feedback collection for DIV,
  bringing it in line with other platforms.
- In Lithium codegen, emit proper inlined code, don't call the stub.
- Drive-by fix: assert appropriate CpuFeaturesScope for SDIV.

R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15057 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-11 10:47:44 +00:00
verwaest@chromium.org
8afeaabe57 Allow boundscheck elimination to work on Smi keys.
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16035016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-07 11:00:39 +00:00
verwaest@chromium.org
a3dccd15b0 Don't ignore the actual input representation in UnaryMathOperations
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16035014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14997 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-07 09:11:33 +00:00
verwaest@chromium.org
cb3645fee9 Infer the range of Math.abs
R=jkummerow@chromium.org, svenpanne@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16268009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14996 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-07 09:07:53 +00:00
verwaest@chromium.org
8bd4199fdd Don't force representations in the loop builder.
Additionally, infer None-typed CompareIDAndBranch to Smi+actual input.

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16365004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14960 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-05 17:24:14 +00:00
verwaest@chromium.org
95cd146359 Fix win build
BUG=
R=hpayer@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15934019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14939 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-04 17:15:32 +00:00
jkummerow@chromium.org
20cedf9a4b Liveness analysis for environment slots in Hydrogen
R=titzer@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14938 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-04 16:41:24 +00:00
verwaest@chromium.org
00addf5adc Replace log2 with MostSignificantBit
R=ulan@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15994015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14937 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-04 15:39:56 +00:00