verwaest@chromium.org
19e1539481
Tag previously GENERIC stubs that potentially IC_Miss as MONOMORPHIC.
...
Review URL: https://chromiumcodereview.appspot.com/12079024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-29 12:00:56 +00:00
danno@chromium.org
a6bc16b6f3
Add StubFailureTrampolineFrames
...
In preparation of supporting stubs that deopt and then need to push their
register-based parameters to an arguments area on the stack that gets properly
collected, add StubFailureTrampolineFrames to hold those parameters.
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/12052053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-29 09:12:20 +00:00
verwaest@chromium.org
c643d9c112
Only update POLYMORPHIC stubs using other POLYMORPHIC or GENERIC stubs.
...
Review URL: https://chromiumcodereview.appspot.com/12088021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13530 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-28 14:41:55 +00:00
verwaest@chromium.org
c8636a2809
Do not try to collect the map if the monomorphic IC stub has no map.
...
This is necessary for monomorphic stubs that rely on instance types,
such as ArrayLength, StringLength and FunctionPrototype.
BUG=chromium:172345
Review URL: https://chromiumcodereview.appspot.com/12082023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13526 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-28 13:19:53 +00:00
verwaest@chromium.org
09d6eccaff
Replace store array length builtin with codestub.
...
Also includes some other minor cleanup to make Keyed related IC code
more uniform.
Review URL: https://chromiumcodereview.appspot.com/11896091
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-25 11:55:29 +00:00
verwaest@chromium.org
2d566c719a
Merge UpdateStoreCaches into a single function dispatching on ComputeStoreMonorphic and UpdateMegamorphicCache.
...
Review URL: https://chromiumcodereview.appspot.com/12057003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13503 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-25 10:34:17 +00:00
verwaest@chromium.org
dd92c41aa1
Merge UpdateLoadCaches into a single function dispatching on
...
ComputeLoadMonorphic and UpdateMegamorphicCache.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-24 13:02:45 +00:00
verwaest@chromium.org
56adca9cc9
Ensure a type-error is thrown when trying to assign to a readonly property on the global scope.
...
Review URL: https://chromiumcodereview.appspot.com/11953056
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13485 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-23 17:27:25 +00:00
verwaest@chromium.org
c1e44f133d
Always fail when trying to store to an undeclared global variable, even if it was found.
...
Finding a property, but not using an IC, indicates that the variable was
found on the prototype (in DOMWindow). Those properties need to be
ignored while storing global properties via the IC.
Review URL: https://chromiumcodereview.appspot.com/12040039
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-23 16:04:19 +00:00
verwaest@chromium.org
e086746ed7
Move polymorphic stub computation and compilation to stub cache
...
Review URL: https://chromiumcodereview.appspot.com/11953025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13478 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-23 15:35:43 +00:00
verwaest@chromium.org
2c070e2300
Merge Store from Keyed and Named store.
...
Review URL: https://chromiumcodereview.appspot.com/12036017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13461 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-22 09:48:59 +00:00
verwaest@chromium.org
3ffcbe3319
Merge Load from Keyed|Named load code.
...
Review URL: https://chromiumcodereview.appspot.com/12038012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-22 09:35:14 +00:00
verwaest@chromium.org
b79a927e74
Migrate FunctionPrototype (Keyed|Named)LoadIC to CodeStub
...
Review URL: https://chromiumcodereview.appspot.com/11941016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13459 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-21 17:54:36 +00:00
verwaest@chromium.org
f80379f3fb
Migrate ArrayLength (Keyed|Named)LoadIC to CodeStub
...
Review URL: https://chromiumcodereview.appspot.com/11938013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-21 17:17:02 +00:00
verwaest@chromium.org
c3d45451f0
Replace special IC builtins and stubs in the map's cache by codestubs.
...
Review URL: https://chromiumcodereview.appspot.com/11973008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13453 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-21 14:53:29 +00:00
verwaest@chromium.org
78b174af29
Allow miss in GENERIC keyed load/store.
...
Review URL: https://chromiumcodereview.appspot.com/11975044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13408 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-17 12:28:37 +00:00
mvstanton@chromium.org
7884216804
Additional work to get array literal allocation tracking working, even with --always-opt
...
BUG=
Review URL: https://codereview.chromium.org/11817017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-17 08:41:27 +00:00
verwaest@chromium.org
36a26b5394
Separate MEGAMORPHIC and GENERIC ic states
...
Review URL: https://chromiumcodereview.appspot.com/11824063
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-16 15:02:58 +00:00
jkummerow@chromium.org
b64765eb62
Better --trace-ic output for UnaryOpICs, matching other IC types
...
Review URL: https://codereview.chromium.org/11826051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-10 14:35:06 +00:00
verwaest@chromium.org
7cb764b780
Combine DEBUG_BREAK and DEBUG_PREPARE_STEP_IN into one IC stub kind DEBUG_STUB, encoding DEBUG_BREAK and DEBUG_PREPARE_STEP_IN as extra ic state.
...
Review URL: https://chromiumcodereview.appspot.com/11821049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-10 14:15:12 +00:00
verwaest@chromium.org
c386538cd2
Use POLYMORPHIC for polymorphic Keyed(Load|Store)IC
...
Review URL: https://chromiumcodereview.appspot.com/11794045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-08 12:01:51 +00:00
verwaest@chromium.org
50d82ca796
Introduce POLYMORPHIC
...
Review URL: https://chromiumcodereview.appspot.com/11747022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13329 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-07 15:36:26 +00:00
verwaest@chromium.org
400b8b8c44
Slight cleanup of UpdateCache code.
...
Review URL: https://chromiumcodereview.appspot.com/11737033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-07 15:35:00 +00:00
verwaest@chromium.org
a8962e89b3
Use enum instead of bool for force_generic (MISS / MISS_FORCE_GENERIC)
...
Review URL: https://chromiumcodereview.appspot.com/11737032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13314 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-04 15:37:59 +00:00
ulan@chromium.org
0606abbaab
Rename RelocInfo::NONE to RelocInfo::NONE32.
...
This CL only does renaming, nothing else.
Followup to:
https://chromiumcodereview.appspot.com/11695006/
There are now NONE and NONE64 RelocInfo types, but only ARM uses them
both at the same time. They were added in:
https://chromiumcodereview.appspot.com/11191029/
R= ulan@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11744020
Patch from JF Bastien <jfb@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-04 10:56:24 +00:00
danno@chromium.org
1f4b4625ff
Re-land Crankshaft-generated KeyedLoad stubs.
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/11528003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13236 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-18 16:25:45 +00:00
danno@chromium.org
64fc1f99cb
Revert 13157, 13145 and 13140: Crankshaft code stubs.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/11498006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-10 11:09:12 +00:00
danno@chromium.org
f19959cd22
Enable stub generation using Hydrogen/Lithium (again)
...
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.
Committed: https://code.google.com/p/v8/source/detail?r=13105
Committed: https://code.google.com/p/v8/source/detail?r=13117
Review URL: https://codereview.chromium.org/10701054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13140 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-05 11:04:10 +00:00
danno@chromium.org
66f6a8182c
Revert 13117: "Enable stub generation using Hydrogen/Lithium (again)"
...
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/11415261
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 17:16:51 +00:00
danno@chromium.org
78b09625d5
Enable stub generation using Hydrogen/Lithium (again)
...
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.
Committed: https://code.google.com/p/v8/source/detail?r=13105
Review URL: https://codereview.chromium.org/10701054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-03 15:51:05 +00:00
danno@chromium.org
0a3bcc8c05
Revert 13105: "Enable stub generation using Hydrogen/Lithium."
...
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/11414262
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13106 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 17:45:45 +00:00
danno@chromium.org
c115ff4e33
Enable stub generation using Hydrogen/Lithium.
...
This initial implementation generates only KeyedLoadICs using the new Hydrogen stub infrastructure.
Review URL: https://codereview.chromium.org/10701054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13105 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-30 17:31:30 +00:00
mmassi@chromium.org
a0582112f8
Revert r13025 and r13026 (they introduced a bug on arm and regressed octane crypto).
...
BUG=
Review URL: https://chromiumcodereview.appspot.com/11316151
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13039 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-23 10:53:03 +00:00
svenpanne@chromium.org
f275b36299
Reduced TLS accesses even further.
...
Thread the Isolate through FindCodeInCache, FindCodeInSpecialCache and
SetProperty. Reduced the number of TLS accesses while running the Octane
benchmark down to 19% compared to the beginning of the cleanups.
Review URL: https://codereview.chromium.org/11411033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-22 07:58:59 +00:00
mmassi@chromium.org
5e7f30a596
Use the property load IC for accessing the array length.
...
BUG=
Review URL: https://chromiumcodereview.appspot.com/11299004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13025 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-21 11:49:15 +00:00
svenpanne@chromium.org
d5f589808d
Removed a bunch of GetExistingThreadLocal calls by threading the Isolate.
...
For Octane, the number of calls go down from 7341629 to 1947880, i.e. they are
reduced by more than 73%. TLS access is not especially cheap, so this exercise
seems worthwhile.
Review URL: https://codereview.chromium.org/11412007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12979 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-16 08:38:11 +00:00
jkummerow@chromium.org
1c086d1202
Lattice-based representation inference, powered by left/right specific type feedback for BinaryOps and comparisons
...
Review URL: https://chromiumcodereview.appspot.com/10837165
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12961 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-14 15:59:45 +00:00
mmassi@chromium.org
ce682a2489
Allow property indexes to refer to slots inside the object header.
...
BUG=
Review URL: https://chromiumcodereview.appspot.com/11365221
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12944 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-13 11:07:04 +00:00
rossberg@chromium.org
8eb704257f
Object.observe: Fixed missing case for turning off ICs.
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/11358122
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12901 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-08 13:15:54 +00:00
rossberg@chromium.org
b80cbd7922
Object.observe: generate change records for named properties.
...
In more detail:
- Set observation bit for observed objects (and make NormalizedMapCache respect it).
- Mutation of observed objects is always delegated from ICs to runtime.
- Introduce JS runtime function for notifying generated changes.
- Invoke this function in the appropriate places (including some local refactoring).
- Inclusion of oldValue field is not yet implemented, nor element properties.
Also, shortened flag to --harmony-observation.
R=verwaest@chromium.org
BUG=
Review URL: https://codereview.chromium.org/11347037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12867 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-11-06 12:32:36 +00:00
danno@chromium.org
43e248d2e5
Use movw/movt instead of constant pool on ARMv7.
...
Some ARM architectures load 32-bit immediate constants more efficiently using movw/movt pairs rather than constant pool loads. This patch allows the assembler to generate one or the other load form at runtime depending on what is faster.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/11037023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-10-18 12:21:42 +00:00
svenpanne@chromium.org
c3df19e692
Fixed comment and simplified the related code a bit.
...
TBR=erik.corry@gmail.com
Review URL: https://chromiumcodereview.appspot.com/10911003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12411 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-30 06:45:45 +00:00
svenpanne@chromium.org
de3c3c0198
Added IC support for native setters on the prototype chain.
...
Review URL: https://chromiumcodereview.appspot.com/10873057
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-29 06:12:46 +00:00
danno@chromium.org
3544e2e875
Disable speculative LICM when it may lead to unnecessary deopts
...
BUG=v8:2250
R=vegorov@chromium.org
TEST=tests/mjsunit/regress/regress-2250.js
Review URL: https://chromiumcodereview.appspot.com/10867033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12375 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-23 21:08:58 +00:00
mstarzinger@chromium.org
15589fe22a
Fix improved LoadICs for dictionaries with callbacks.
...
This fixes the positive lookup performed by these LoadICs, to use the
holder instead of the receiver to perfrom the lookup on. It also extends
this improvement to KeyedLoadICs. And it fixes a bug introduced for the
JavaScript getter case of a LoadIC.
R=erik.corry@gmail.com
BUG=chromium:142088
TEST=cctest/test-api/Regress142088,cctest/test-api/Regress137002b
Review URL: https://chromiumcodereview.appspot.com/10828303
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-14 13:17:47 +00:00
erik.corry@gmail.com
92f30d1df5
Improve load IC so it can call a native accessor even if the holder is
...
in dictionary mode. Add a flag to all maps to indicate whether they are
used for dictionary (normalized) objects or fast mode objects.
Review URL: https://chromiumcodereview.appspot.com/10831153
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-06 14:25:19 +00:00
erik.corry@gmail.com
5c6db6d081
Fix the 137002 fix (Don't generate ICs for accessors on slow
...
case objects). We should be testing the holder for dictionary
mode, not the receiver.
Review URL: https://chromiumcodereview.appspot.com/10827113
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-01 12:35:33 +00:00
verwaest@chromium.org
52bfb2a18e
Moved lastadded from DescriptorArray to Map. Renamed kLastAdded to kEnumCache.
...
Review URL: https://chromiumcodereview.appspot.com/10802034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12146 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-19 14:45:19 +00:00
verwaest@chromium.org
3b5a6ef2e7
Removing LookupTransition from LookupRealNamedProperty and related utility functions.
...
Callsites now have to manually lookup transitions if required. This
avoids unnecessary overhead of looking up transitions when we don't need
them. This also allows us to use IsFound() in many places where
IsProperty() was required previously.
Review URL: https://chromiumcodereview.appspot.com/10779012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12098 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-16 14:47:28 +00:00
verwaest@chromium.org
11e5c9e281
Removed transitions from the accessor pair descriptors.
...
AccessorPair related transitions are now also stored as single map links, simplifying the code that handles transitions. AccessorPairs can now be shared between descriptor arrays, since they can only be mutated after another transition anyway; during which the pair is copied before writing.
Review URL: https://chromiumcodereview.appspot.com/10784014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-16 14:02:50 +00:00