Commit Graph

2885 Commits

Author SHA1 Message Date
verwaest@chromium.org
2c2fce0c94 Remove keyed_store_calling convention and friends
BUG=
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 12:21:41 +00:00
verwaest@chromium.org
7378f07a20 Encapsulate the holder in the PropertyHolderCompilers
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 12:01:48 +00:00
verwaest@chromium.org
d07de6ed59 Encapsulate type in the PropertyHandlerCompiler
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 10:09:10 +00:00
verwaest@chromium.org
b337649d14 Only generate a single normal IC per kind per slow-mode map.
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 17:02:52 +00:00
verwaest@chromium.org
3416d1133f Clean up name distinction between Keyed ICs and Element Handlers
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22679 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 16:07:34 +00:00
verwaest@chromium.org
0a099371a3 Remove all compilation related interface from the StubCache
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 16:04:07 +00:00
mstarzinger@chromium.org
c0f6b34199 Support for dynamic write-barrier counters everywhere.
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22676 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 14:38:39 +00:00
mstarzinger@chromium.org
947740a6d8 Revert "Make --always-opt also optimize toplevel code."
TBR=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 13:08:51 +00:00
mvstanton@chromium.org
6980c4277c CallIC customization stubs must accept that a vector slot is cleared.
The CallIC Array custom IC stub read from the type vector, expecting
to get an AllocationSite. But there are paths in the system where a
type vector can be re-created with default values, even though we
currently grant an exception to clearing of vector slots with
AllocationSites in them at gc time.

BUG=392114
LOG=N
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22668 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 11:53:30 +00:00
mstarzinger@chromium.org
34f5edd500 Make --always-opt also optimize toplevel code.
R=jacob.bramley@arm.com, titzer@chromium.org, rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 11:41:42 +00:00
yangguo@chromium.org
a8a02a51f1 Inline Math.fround in optimized code.
R=svenpanne@chromium.org
BUG=v8:3469
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22665 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 11:34:08 +00:00
verwaest@chromium.org
3c873c4305 Restructure the IC / Handler compilers
BUG=
R=ishell@chromium.org, mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-25 17:50:53 +00:00
yangguo@chromium.org
029b8a2379 For-of on null or undefined is an error
The latest ES6 draft changed the behavior of for-of on null / undefined,
which for once is a simplification.

R=rossberg@chromium.org
BUG=

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

Patch from Andy Wingo <wingo@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22602 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-24 13:40:08 +00:00
verwaest@chromium.org
5767cd143d Always use the LoadStubCompiler for Load handlers, also for keyedload handlers.
BUG=
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22551 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 11:16:29 +00:00
verwaest@chromium.org
b8eb36a934 Only to the relevant checks in LoadFunctionPrototype
BUG=
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22550 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 11:12:11 +00:00
yangguo@chromium.org
fc5b5f2dc5 Propagate serialization flag to inner functions.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 09:35:06 +00:00
verwaest@chromium.org
9b3f0cbcb5 Move function prototype handling into a special handler rather than IC
Adjust hydrogen handling of function.prototype to be based on map feedback. Handle non-instance prototype loading using an IC rather than in the hydrogen instruction. In the future, remove the special instruction and replace by multiple hydrogen instructions.

BUG=
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22526 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-22 14:27:53 +00:00
rmcilroy@chromium.org
79d7803555 [Arm]: Assert that movw/movt is only emitted for Armv7 targets
R=jochen@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 16:20:19 +00:00
mvstanton@chromium.org
6d3fc8a322 Introduce FLAG_vector_ics.
When FLAG_vector_ics is true, then AST nodes that use Load and KeyedLoad ICs
will allocate a type vector slot to store feedback information. Full codegen
will emit a load of the slot into a register if the flag is on.

Support is incomplete, right now the IC doesn't know how to use the feedback
slot.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 11:19:56 +00:00
rossberg@chromium.org
2dc3d0bdc6 Remove harmony-typeof
This was an early experiment in the Harmony era that turned out to
not be compatible with the web.

BUG=None
LOG=Y
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22497 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 10:20:54 +00:00
Jacob.Bramley@arm.com
e4d4f1d5d2 ARM: never record safepoint with doubles
R=bmeurer@chromium.org, ulan@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22496 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 10:15:08 +00:00
jkummerow@chromium.org
1211f606ae Cache IC handlers on the prototype's map if possible
instead of on the receiver's map. Lazily overwrite cached handler if it is
identical to the handler that just missed.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-18 13:50:21 +00:00
Jacob.Bramley@arm.com
38cb7830aa Unravel kHeapObjectTagSize from the stub cache.
The stub cache used kHeapObjectTagSize to scale indices, but there
doesn't appear to be a direct need for this. Instead, the stub cache has
its own kCacheIndexShift quantity.

BUG=
R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22466 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-18 09:57:39 +00:00
mvstanton@chromium.org
54636ae4e2 StubCallInterfaceDescriptor and CallInterfaceDescriptor are unified under a base class InterfaceDescriptor.
Handling of the context register had to be massaged to effect the unification. This will make it easier to call hydrogen code stubs directly from crankshaft.

R=danno@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-17 11:50:04 +00:00
rmcilroy@chromium.org
51a6b0fd9d Add back a static_cast<int32_t> to assembler-arm.cc to fix WebView build.
The WebView Mac builder is having trouble with resolving set_at_offset with an
intptr_t argument to the correct overload. Add back the static_cast which
was present before r22293 to resolve this.

R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22446 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-17 10:34:59 +00:00
mstarzinger@chromium.org
5963ae48a8 Rename [Load/Delete]ContextSlot for consistency after r22379.
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-16 12:03:33 +00:00
mstarzinger@chromium.org
5874bd08c0 Allow embedding of ConsString objects into code.
R=yangguo@chromium.org
BUG=v8:2803
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-15 10:51:12 +00:00
jkummerow@chromium.org
23cf62232f Drop unnecessary receiver validity checks from {Load,Store}IC_Normal.
Since these builtins are used as handlers after a map check/dispatch, they don't need to check the receiver again.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-15 08:07:25 +00:00
mvstanton@chromium.org
086290baf0 Use the same registers for StoreIC and KeyedStoreIC.
Based on https://codereview.chromium.org/389283002 ("Use register parameters in ElementsTransitionGenerator") which must land first.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 20:43:41 +00:00
mvstanton@chromium.org
490c6171ed Use register parameters in ElementsTransitionGenerator.
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 15:03:38 +00:00
verwaest@chromium.org
e3a269b77f Remove ASSERT since there are tons of different ASSIGN variants
BUG=
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 14:42:33 +00:00
verwaest@chromium.org
aa7198dfdd This CL simplifies var / const by ensuring the behavior is consistent in itself, and with regular JS semantics; between regular var/const and eval-ed var/const.
Legacy const is changed so that a declaration declares a configurable, but non-writable, slot, and the initializer reconfigures it (when possible) to non-configurable non-writable. This avoids the need for "the hole" as marker value in JSContextExtensionObjects and GlobalObjects. Undefined is used instead.

BUG=
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 14:01:04 +00:00
mvstanton@chromium.org
18961d7c03 Revert "Use the same registers for StoreIC and KeyedStoreIC."
This reverts commit r22358 due to release mode arm64 test failures.

TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-11 14:50:59 +00:00
mvstanton@chromium.org
8a0267f96e Use the same registers for StoreIC and KeyedStoreIC.
The x64 and ia32 platforms already did this, port to arm and arm64.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-11 13:53:19 +00:00
mvstanton@chromium.org
3d880be540 Use a register spec for StoreIC and KeyedStoreIC.
This continues refactoring already applied for LoadIC in r22035 (https://code.google.com/p/v8/source/detail?r=22035).

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-10 14:59:47 +00:00
m.m.capewell@googlemail.com
577984b3d6 ARM: sligthly reduce deopt tables size
BUG=
R=ulan@chromium.org, bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-09 14:08:13 +00:00
rmcilroy@chromium.org
ae6496e6ea [Arm]: Optimize ConstantPoolBuilder::Populate code by minimizing calls to OffsetOfElementAt
Calling OffsetOfElementAt becomes expensive when compiling functions with many
constant pool entries.  This was causing a regression in MandreelLatency due
to the time spent populating the constant pool array for large compiled
functions.

This change avoids calling OffsetOfElementAt for each entry, and instead keeps
track of the current offsets in ConstantPoolBuilder::Populate.  This gives the
following improvements on a Nexus 5:

                     Inline CP  |  OOL CP (before CL)  |  OOL CP (after CL)
Mandreel:               4305    |        3961          |       4120
MandreelLatency:        2298    |        1198          |       1994
Octane Score:           5197    |        4982          |       5152

R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-09 09:08:37 +00:00
verwaest@chromium.org
ad6202d989 Fix computed properties on object literals with a double as propertyname.
BUG=390732
LOG=y
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22255 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 17:08:54 +00:00
verwaest@chromium.org
cef7b20ec0 Only create arguments-maps in the bootstrapper, remove now obsolete ValueType flag.
TBR=dslomov@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 13:27:37 +00:00
dslomov@chromium.org
7050e6fa06 Revert "Only create arguments-maps in the bootstrapper, remove now obsolete ValueType flag."
This reverts commit r22240 for breaking tests on Linux.

Revert "Remove SetOwnPropertyIgnoreAttribute uses from the bootstrapper"

This reverts commit r22241 for breaking tests on Linux.

TBR=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 13:12:29 +00:00
verwaest@chromium.org
1ef7582e7e Only create arguments-maps in the bootstrapper, remove now obsolete ValueType flag.
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22240 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 12:21:01 +00:00
svenpanne@chromium.org
018ef484b9 More OStreamsUse OStreams more often.
This is a mostly mechanical CL (more than 90% Emacs macros and
query-replace-regexp) moving FILE*/StringStream*-based APIs to
OStream-based APIs. There are a few places where this had to stop,
otherwise the CL would be even bigger, but this can easily and
incrementally cleaned up later.

R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 09:57:29 +00:00
yangguo@chromium.org
29b59adbf6 Revert "Remove unnecessary check in RegExpExecStub."
This reverts r22203 and r22205.

TBR=danno@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22211 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 20:21:00 +00:00
rmcilroy@chromium.org
40af47d46a [Arm]: Enable use of extended out-of-line constant pool for Arm.
- Adds support to the Arm assembler to use extended constant pools.
 - Update (set_)target_address_at to support extended constant pool load
   updates.
 - Replace Operand::is_single_instruction with Operand::instructions_required
   Due to the fact that different constant pool load types require different
   numbers of instructions.
 - Various cleanups of ConstantPoolBuilder to cleaner integration of the
   extended constant pool building.
 - Update GetRelocatedValue such that offsets to both map_check and bool_load
   are explicitly provided, rather than location of bool_load being inferred
   based on map_check, since the code inbetween is no longer of a predictable
   size.
 - Update MacroAssembler::GetRelocatedValueLocation() to add support for
   getting a value from an extended constant pool entry.
 - Update Debug::SetAfterBreakTarget() to use target_address_from_return_address
   when checking for debug breaks at constant pool load points.
 - Change ConstantPoolIterateBody to iterate over both heap and code pointer in
   the small section before moving onto the extended section, to work around the
   requirement of the serializer that pointers are iterated in-order.
 - Increase old_pointer_space SizeOfFirstPage() to offset the fact that constant
   pools are now in the old pointer space (rather than code).

R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22209 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 17:01:14 +00:00
yangguo@chromium.org
87dfaa8951 Remove unnecessary check in RegExpExecStub.
R=ulan@chromium.org
BUG=v8:592
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22202 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 14:03:10 +00:00
svenpanne@chromium.org
d7934d1fbe Start using OStreams.
Note that until everything is OStream-based, there are a few places
where we have to do some impedance matching. A few accessors had to be
const-corrected on the way.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 07:18:30 +00:00
ishell@chromium.org
2c94151e6e Reland r22082 "Replace HeapNumber as doublebox with an explicit MutableHeapNumber."
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-01 15:02:31 +00:00
verwaest@chromium.org
26eae0c429 Clean up the global object naming madness.
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-01 12:12:34 +00:00
mvstanton@chromium.org
351ed4c8a1 KeyedLoadIC should have same register spec as LoadIC.
On arm, arm64 and x64 there is a different register specification between LoadIC and KeyedLoadIC.

It would be nicer if these are the same, allowing some key optimizations.

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22103 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 15:56:50 +00:00
jochen@chromium.org
7f6e65a283 Fix compilation on arm after r22092
TBR=yangguo@chromium.org
LOG=n
BUG=none

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22094 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 13:47:20 +00:00