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