dslomov@chromium.org
7e44408fc6
Stores and compound assignments for named super properties.
...
R=ishell@chromium.org , arv@chromium.org , verwaest@chromium.org
BUG=v8:3330
LOG=N
Review URL: https://codereview.chromium.org/593073002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 08:16:24 +00:00
yangguo@chromium.org
2a67e48f0e
Move i18n-related runtime functions into a separate file.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/597943003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24202 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-25 07:16:15 +00:00
bmeurer@chromium.org
50c466e883
[turbofan] Add backend support for float32.
...
LOG=n
BUG=v8:3589
TEST=compiler-unittests,cctest
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/596703004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 11:08:35 +00:00
svenpanne@chromium.org
82e5de6bdd
Make the detailed reason for deopts mandatory on all platforms.
...
Boring semi-mechanical stuff...
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/598953002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24178 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 10:47:29 +00:00
yangguo@chromium.org
43538e57a4
Refactor bailout reasons and disable optimization in more cases.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/596783002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24161 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 07:08:27 +00:00
jkummerow@chromium.org
9583236d84
Fix method dispatch in Keyed/StoreIC, and JumpIfNotUniqueName usage
...
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/592113002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-23 09:20:36 +00:00
svenpanne@chromium.org
7384467552
Further improve deopt reason output.
...
* Make the detailed deopt reason mandatory on x64, other platforms
will follow in separate CLs.
* Extracted and improved jump table entry sharing logic: When
--trace-deopt is on, we get separate entries for different deopt
reasons. This enables us to distinguish the several reasons single
instructions can have.
* Don't emit superfluous jump table comments: The bailout ID is still
visible, and the jump table entry number is not interesting (but
easy to determine if really needed).
* Unify the internal name of the jump table member across platforms.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/595513002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-22 14:16:38 +00:00
svenpanne@chromium.org
bc609aff70
Merge RecordComment invocations into DeoptimizeIf calls.
...
This way the deoptimization reasons are actually threaded through to
the jump table. Tiny cleanup of related MIPS/MIPS64 code on the way.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/585423002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24111 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-22 09:50:12 +00:00
svenpanne@chromium.org
cebe41bd23
Emit source positions in deopt comments, too.
...
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/587223002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-22 09:05:22 +00:00
svenpanne@chromium.org
e76254071e
Introduce a class to carry around a deoptimization reason.
...
As discussed in https://codereview.chromium.org/582743002/ , here a
mechanical refactoring...
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/587623002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24103 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-22 06:36:57 +00:00
dslomov@chromium.org
e36aacdee2
Implement loads and calls from 'super'
...
R=verwaest@chromium.org , arv@chromium.org
BUG=v8:3330
LOG=N
Review URL: https://codereview.chromium.org/527963002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24078 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 11:08:04 +00:00
svenpanne@chromium.org
33ddb37ba3
Removed confusing defensive programming in GenerateJumpTable.
...
For a given address/type pair we should always find a deoptimization
bailout ID, otherwise something is wrong. This was already asserted on
ARM, but we now do this consistently on all platforms.
Removed some usesless naming creativity on the way.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/587473003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24077 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 11:06:59 +00:00
svenpanne@chromium.org
264c7fe3cd
Emit comment with instruction+reason before deopt calls.
...
Note that we still need to migrate from sometimes emitting those
comments by hand to passing a reason explicitly, but this can be done
incrementally in separate CLs.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/582743002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 06:27:06 +00:00
mvstanton@chromium.org
eca5875b9d
Convert KeyedLoad indexed interceptor case to a Handler.
...
Currently, KeyedLoads on objects with indexed interceptors are handled with a
special stub. Instead, key on the map and handler mechanism for more uniform
treatment.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/575373004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 13:28:32 +00:00
mvstanton@chromium.org
200095c3e7
Move state sentinels into TypeFeedbackVector.
...
These sentinels were in the wrong place, living in only tangentially related class TypeFeedbackInfo, but they codify state in the TypeFeedbackVector.
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/579153003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24037 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 12:31:31 +00:00
svenpanne@chromium.org
80d9d6df30
Thread the Lithium instruction down to DeoptimizeIf and friends.
...
This is a purely mechanical refactoring and a first step towards being
able to report more helpful deoptimization reasons. With this
refactoring, we know at least the mnemonic of the instruction causing
the deopt, although this is not used yet. Future steps will be using
the mnemonic, passing additional explicit deopt reasons and removing
the fragile machinery of searching for code comments.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/559143003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24026 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 09:53:08 +00:00
titzer@chromium.org
f6807d7897
Rename Runtime_CompileUnoptimized to Runtime_CompileLazy, because that is what it does. Split Compiler::GetUnoptimizedCode into two variants, one for lazy compilation (which can return optimized code!) and the other that actually returns unoptimized code.
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/547293004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24012 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-17 15:29:42 +00:00
svenpanne@chromium.org
ac1b9b11dc
Fixed deopt reasons in TaggedToI.
...
Every DeoptimizeIf should be preceded by a RecordComment explaining
the reason. In the long run, the reason should be an argument of
DeoptimizeIf, but we're not there yet.
On x87, things are a bit ugly due to some pushing/popping, so if
somebody feels inclined to improve this: Feel free. Probably the right
approach would be reloading instead of the push/pop horror.
Another thing is our inconsistent handling of the "done" continuation
of deferred code on the various platforms, I made tiny changes on the
way, but this should better be unified somehow, with all those
micro-optimizations removed.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/578583002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23996 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-17 09:51:17 +00:00
mvstanton@chromium.org
a4176d2052
Removing ic.h from code-stubs.h
...
CodeStubs use state types defined in ic.h, but this has the unfortunate effect of spreading ic.h all over the place. Instead, define these shared state types in ic-public.h and allow ic.h to concern itself with internal state change of the ICs.
More work could/should be done here, but this is a first step.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/565873002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23977 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 12:51:33 +00:00
verwaest@chromium.org
3a448aac19
The value register in storefield(smi) is not used as a temp
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/551803005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23969 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 09:47:45 +00:00
jarin@chromium.org
e401262400
Reland "Change the order of arguments of the (One|Two)ByteSeqStringSetChar intrinsic."
...
This relands commit r23899.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/565093002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23910 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 10:58:43 +00:00
jarin@chromium.org
bc0674d0a7
Revert "Change the order of arguments of the (One|Two)ByteSeqStringSetChar intrinsic."
...
This reverts commit r23899.
TBR=ulan@chromium.org
Review URL: https://codereview.chromium.org/552253003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 08:49:22 +00:00
jarin@chromium.org
91e97f8371
Change the order of arguments of the (One|Two)ByteSeqStringSetChar intrinsic.
...
This makes the syntactic order consistent with the evaluation order.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/561133005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 08:18:29 +00:00
mvstanton@chromium.org
af495313d4
Turbofan needs a code handle and a CallInterfaceDescriptor. At the same time we spread knowledge about how to create the initial IC code object too widely. Consolidate code creation and unify it with a descriptor via CodeFactory.
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/567433002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-11 13:18:58 +00:00
mvstanton@chromium.org
febf84a333
Added CallInterfaceDescriptors to all code stubs. A handful
...
of code stubs are too complex to be described this way, and
they are encoded with the macro
DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR().
Along the way:
* allowed inheritance of CallInterfaceDescriptors.
* Defined static Register methods for some of the new
CallInterfaceDescriptors. We could go a lot further here, but
it doesn't have to be done immediately.
* Added Representation arrays to some CallInterfaceDescriptors,
especially where future hydrogen versions of the stubs could
benefit from this knowledge.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/551043005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23854 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-11 07:11:10 +00:00
arv@chromium.org
45d8e74cd6
ES6: Add support for method shorthand in object literals
...
This is governed by the harmony-object-literals flag.
BUG=v8:3516
LOG=Y
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/477263002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23846 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 16:39:42 +00:00
yangguo@chromium.org
4e670fd05e
Rename ascii to one-byte where applicable.
...
R=dcarney@chromium.org , marja@chromium.org
Review URL: https://codereview.chromium.org/559913002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23840 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 12:38:12 +00:00
yangguo@chromium.org
8470a7783b
Do not use CodeStub::FindInCache if not necessary.
...
GetCode does the FindInCache check as well.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/548313002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23795 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-09 11:45:53 +00:00
yangguo@chromium.org
9da1d7dc15
Get CallInterfaceDescriptor directly from CodeStub.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/552803002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 15:18:54 +00:00
yangguo@chromium.org
014c0fe278
Initialize CodeStubInterfaceDescriptor in the constructor.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/553833002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 13:27:56 +00:00
mvstanton@chromium.org
6e1ebdcbc3
To aid vector-based load ic work, we need to be able to handle
...
the megamorphic load case in hydrogen. A simple approach is to
wrap the probe activity in a hydrogen instruction.
The instruction is novel in that it always tail-calls away.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/535873002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 12:51:29 +00:00
bmeurer@chromium.org
dab61bc310
Replace our home-grown BitCast with bit_cast from Chrome/Google3.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/553843002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23767 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 09:11:11 +00:00
yangguo@chromium.org
b7ea991a06
Do not cache CodeStubInterfaceDescriptor on the isolate.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/544123002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-05 15:20:45 +00:00
yangguo@chromium.org
a6260ee47b
Unify JSEntryStub and JSConstructEntryStub, and some more code stub cleanups.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/545163002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-05 15:12:49 +00:00
svenpanne@chromium.org
051972d240
Generalized division via multiplication.
...
We can now compute the magic numbers for all combinations of 32bit and
64bit (un)signed multiplications.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/532003004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23730 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-05 11:48:47 +00:00
yangguo@chromium.org
2e80f58239
Introduce code stub constructors for stub keys.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/542613003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23716 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-05 07:44:31 +00:00
yangguo@chromium.org
5294179e4c
Remove dead code for inline string hashing.
...
This has become obsolete since hydrogenized StringAdd.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/544613002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-04 12:15:09 +00:00
yangguo@chromium.org
62ba2c8b7f
Clean up code stubs and ensure distinct major keys.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/530343005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23655 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-03 13:14:55 +00:00
mvstanton@chromium.org
dd6d2e0737
CallDescriptors::InitializeForIsolate() is no longer needed.
...
CallInterfaceDescriptors initialize themselves lazily. Soon we can also tear
down the CodeStubInterfaceDescriptor explicit initialization step.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/535103002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23652 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-03 12:25:13 +00:00
yangguo@chromium.org
3ef636f7fa
Minor-key-ify remaining code stubs.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/535733004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-03 11:41:54 +00:00
mvstanton@chromium.org
c2fe5b2b68
Make concrete classes for individual call descriptors. The ic-convention classes that hold register specifications are merged into these new call descriptor classes, which should represent a final home for that information.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/527093002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-03 10:51:51 +00:00
yangguo@chromium.org
d0c3652d96
Unify some PlatformCodeStubs.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/527933002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-03 07:20:03 +00:00
bmeurer@chromium.org
c582b41d36
Fix native arm build.
...
TBR=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/533653003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 13:55:41 +00:00
bmeurer@chromium.org
7d0d01005c
First step to cleanup the power-of-2 mess.
...
TEST=base-unittests,cctest,mjsunit
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/528993002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23617 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 13:36:35 +00:00
yangguo@chromium.org
946a25640c
Minor-key-ify four stubs.
...
- ICCompareStub
- BinaryOpICStub
- CompareNilICStub
- VectorLoadStub
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/529773002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23605 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 11:51:25 +00:00
bmeurer@chromium.org
30f18f0f7d
Use Chrome compatible naming for compiler specifics.
...
Less useless creativity is best creativity!
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/526223002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 07:07:52 +00:00
mvstanton@chromium.org
3a7b5b44c1
InterfaceDescriptor becomes CallInterfaceDescriptor.
...
There was no difference between these two classes in a hierarchical
relationship.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/532473002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 12:15:25 +00:00
jarin@chromium.org
a668cd6fc8
Context deoptimization and removal of the deoptimization block in Turbofan
...
This adds context deoptimization to Turbofan and Crankshaft (also submitted separately as https://codereview.chromium.org/515723004/ ).
The second patchset removes the deoptimization/continuation block from calls.
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/522873002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 09:31:14 +00:00
mvstanton@chromium.org
8786006022
Multiple stubs can point to the same calling convention.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/523583002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23546 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 09:18:39 +00:00
mvstanton@chromium.org
9514d34e14
Refactoring InterfaceDescriptors away from code-stubs.h
...
Clean up and create seperation between the concept of a call descriptor and a
code stub interface descriptor. The former is just concerned with how to call,
but the latter has many extra hints related to code generation and
deoptimization for the implementation of a particular code stub.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/517993002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 10:40:02 +00:00
yangguo@chromium.org
545c04b9bd
Minor-key-ify BinaryOpICWithAllocationSiteStub.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/506003002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23444 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-27 10:00:06 +00:00
mvstanton@chromium.org
d8b48c0a1d
Minor-key-ify new LoadICTrampolineStub.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/500423002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23409 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 14:56:35 +00:00
mvstanton@chromium.org
76e22ca629
Added vector-based loadic hydrogen stubs. Not yet callable.
...
The next step is to integrate the use of vector[slot] into the IC
infrastructure so it can do the right thing for a vector-based ic.
Then these stubs can be installed. For now, they immediately bail out
to the miss handler.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/499343002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23405 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 14:12:47 +00:00
yangguo@chromium.org
2e42f62981
Minor-key-ify CallICStub and CallIC_ArrayStub.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/491143003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23403 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 13:10:01 +00:00
yangguo@chromium.org
a6e503ad92
Change more PlatformCodeStubs to encode properties in the minor key.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/498283002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 10:39:20 +00:00
mvstanton@chromium.org
295448a4ea
Move register conventions out of the IC classes.
...
A change to a convention shouldn't require recompilation of ic.h/.cc.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/486213003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 09:50:09 +00:00
bmeurer@chromium.org
90c8932596
Replace our homegrown ARRAY_SIZE() with Chrome's arraysize().
...
Our own ARRAY_SIZE() was pretty bad at error checking. If you use
arrasize() in a wrong way, the compiler will issue an error instead of
silently doing the wrong thing. The previous ARRAY_SIZE() macro is still
available as ARRAYSIZE_UNSAFE() similar to Chrome.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/501323002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 09:19:24 +00:00
mvstanton@chromium.org
40d581f7f1
Eliminate code duplication in lithium calls to vector-based LoadICs
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/500073002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 14:12:12 +00:00
yangguo@chromium.org
899fe964ad
Encode CEntryStub properties in the minor key.
...
Eventually, all stubs should encode its properties in the minor key
so that stubs can be restored directly from the stub key.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/502713003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 13:09:02 +00:00
verwaest@chromium.org
2803733a3b
Move handler compilers to handler-compiler
...
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/497083002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23346 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 11:17:37 +00:00
jarin@chromium.org
d8295050d2
Fix deoptimization address patching in Turbofan to use safepoints.
...
Since the deopt patch address needs to be available during GC to
resolve safepoints, we need to move it to the code object (instead of
the deoptimization input data) - accessing a separate fixed array
is not safe during GC. This CL adds a deoptimization_pc field to
each safepoint. The fields points to the deoptimization block.
The CL also fixes wrong register allocator constraints for
frame states on calls. These should always live on the stack
because registers are not preserved during a call.
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/504493002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23334 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 07:02:19 +00:00
verwaest@chromium.org
30c3981c2c
Move IC code into a subdir and move ic-compilation related code from stub-cache into ic-compiler
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/483683005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-22 11:43:39 +00:00
verwaest@chromium.org
3baab5e688
Rewrite StoreIC handling using the LookupIterator. Continued from patch 494153002
...
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/478043006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-22 11:38:21 +00:00
rmcilroy@chromium.org
2934927450
Fix unused-variable error on release builds.
...
TBR=ulan@chromium.org
Review URL: https://codereview.chromium.org/466333006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-21 13:50:13 +00:00
rmcilroy@chromium.org
5dee3e0e2e
Add ARMv6 support for the out-of-line constant pool.
...
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/496443003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23278 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-21 13:26:47 +00:00
rmcilroy@chromium.org
37d886bc09
Add missing ConstantPoolUnavailableScopes on JS return.
...
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/494733002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23276 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-21 12:59:18 +00:00
verwaest@chromium.org
604031af8b
Use LookupIterator for CompileLoadInterceptor and delete Object::Lookup
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/466283003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23168 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 15:03:13 +00:00
bmeurer@chromium.org
e4db78e705
[arm] Recognize comparisons of shifts with zero.
...
For example, recognize
0 == r1 << r2
and generate a single
MOVS rt, r1, lsl r2
instruction.
TEST=cctest,compiler-unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/478233002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 11:10:01 +00:00
yangguo@chromium.org
84edfa3d0c
Purge unused internalized string accessors.
...
R=marja@chromium.org
Review URL: https://codereview.chromium.org/471923002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 07:54:19 +00:00
rmcilroy@chromium.org
ee26e273cb
[turbofan]: Fix TurboFan for out-of-line constant pool on Arm.
...
Use LeaveFrame so that the constant pool pointer register is correctly restored
when using the out-of-line constant pool. Also clean up duplicate code in
builtins-arm.cc.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/469283002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23134 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-15 14:35:00 +00:00
mstarzinger@chromium.org
44247036a7
Fix newly discovered presubmit errors.
...
R=jochen@chromium.org
Review URL: https://codereview.chromium.org/462033002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23081 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-12 13:33:35 +00:00
verwaest@chromium.org
aade11ede0
We should never allocate a 0-sized buffer, so never grow from 0.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/446933003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22947 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 17:48:31 +00:00
verwaest@chromium.org
a6384ade6b
Get rid of the "spare buffer" cache.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/446923002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 16:56:52 +00:00
yangguo@chromium.org
46bda34130
Abstract out fetching of break_address in debug mode
...
If the platform has a variable length call sequence
more than simple offset math is required. This can
be true with out of line constant pools on PowerPC.
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/427863003
Patch from Andrew Low <andrew_low@ca.ibm.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 13:56:58 +00:00
verwaest@chromium.org
0ef3978a13
Always use the StoreFieldStub to do the actual storing.
...
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/443963002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22931 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 13:18:36 +00:00
verwaest@chromium.org
b8ab822040
Hydrogenize (and share) StoreField except heapobject (for now).
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/443873002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 09:31:10 +00:00
verwaest@chromium.org
5aaf1487da
Load constants from the DescriptorArray
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/442763002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 08:02:21 +00:00
yangguo@chromium.org
0fb57e51d4
Check that external references are registered in the serializer.
...
Inspired by a patch by Slava Chigrin <vchigrin@yandex-team.ru>
R=jkummerow@chromium.org , vchigrin@yandex-team.ru
Review URL: https://codereview.chromium.org/441983002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22896 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 07:20:14 +00:00
jkummerow@chromium.org
e051112fc6
Restore performance of accesses to JSGlobalProxy after r22802
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/446523002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 10:44:17 +00:00
verwaest@chromium.org
5a2de1fced
Remove special frontend for callbacks with slow-mode holders.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/436273002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22856 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 10:27:10 +00:00
bmeurer@chromium.org
d07a2eb806
Rename ASSERT* to DCHECK*.
...
This way we don't clash with the ASSERT* macros
defined by GoogleTest, and we are one step closer
to being able to replace our homegrown base/ with
base/ from Chrome.
R=jochen@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/430503007
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 11:34:54 +00:00
verwaest@chromium.org
838c0ab285
Reuse the nonexistent handler frontend for transition handlers
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/437953003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22808 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 10:47:10 +00:00
verwaest@chromium.org
e508f1d404
Cleanup in stub-cache.cc; remove unused ArrayLength store ICs.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/430783002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22805 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 09:09:21 +00:00
mstarzinger@chromium.org
ab1cb70c8d
Ensure LModByPowerOf2I only gets environment when it deopts.
...
R=svenpanne@chromium.org
TEST=mozilla (with new --always-opt)
Review URL: https://codereview.chromium.org/423093009
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22803 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 08:47:15 +00:00
jkummerow@chromium.org
84525e2b2f
Avoid one repeated property lookup when computing load ICs.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/429053005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 08:34:56 +00:00
mstarzinger@chromium.org
e4894b366a
Unify InstanceofStub interface descriptors.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/437483003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-31 12:07:30 +00:00
yangguo@chromium.org
e0412e382b
Fix typos in LMathFround declarations.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/425243002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22738 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-31 08:40:09 +00:00
danno@chromium.org
a1383e2250
Land the Fan (disabled)
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/426233002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 13:54:45 +00:00
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
jochen@chromium.org
a4506cd3f2
Move platform abstraction to base library
...
Also split v8-core independent methods from checks.h to base/logging.h and
merge v8checks with the rest of checks.
The CPU::FlushICache method is moved to CpuFeatures::FlushICache
RoundUp and related methods are moved to base/macros.h
Remove all layering violations from src/libplatform
BUG=none
R=jkummerow@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/358363002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22092 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 13:25:46 +00:00
rmcilroy@chromium.org
7aa8cb462f
[Arm]: Make Assembler::movw only emit a movw instruction.
...
Currently Assembler::movw is really the mov macro instruction, leading to raw
emit calls to generate the real movw instruction. Replace all calls of mow
with the mov macro instruction (which will emit a movw if appropriate) and
make movw always emit movw.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/329233002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22085 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 11:07:28 +00:00
rmcilroy@chromium.org
c1e6743739
[Arm]: Fix liveedit support if --enable_ool_constant_pool is true.
...
If the out of line constant pool is enabled, there is an extra value on the stack frame (the
constant pool pointer). This change fixes GenerateFrameDropperLiveEdit to pull the function
pointer and pop the stack frame correctly whether or not the constant pool pointer is on the
frame.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/338053003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22084 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 11:06:03 +00:00
ishell@chromium.org
d1190c503d
Revert "Replace HeapNumber as doublebox with an explicit MutableHeapNumber."
...
This reverts commit r22082 for breaking arm64 build.
TBR=verwaest@chromium.org
Review URL: https://codereview.chromium.org/360023003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 10:19:31 +00:00
ishell@chromium.org
cea1824f58
Replace HeapNumber as doublebox with an explicit MutableHeapNumber.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/355793003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22082 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 09:44:43 +00:00
verwaest@chromium.org
a80b14ab93
Port the ic part
...
BUG=
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/354173002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22066 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-27 14:01:42 +00:00
verwaest@chromium.org
63431b23d1
Split SetProperty(...attributes, strictmode) into DefineProperty(...attributes) and SetProperty(...strictmode)
...
BUG=
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/351853005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22064 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-27 13:48:37 +00:00
marja@chromium.org
3d9080a50f
Revert "ARM: Use the shifter operand to merge in previous shift instructions."
...
This reverts r 22017
Reason: broke Nexus 7 GPU bots (see crbug.com/389198)
BUG=389198
LOG=n
TBR=machenbach@chromium.org , ulan@chromium.org
Review URL: https://codereview.chromium.org/359713004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22050 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-27 08:55:41 +00:00
yangguo@chromium.org
310c37bd43
Fix regexp=interpreted build.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/350633003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22041 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-26 13:48:22 +00:00
mvstanton@chromium.org
4273c7c070
Use IC register definitions in platform files.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/356713003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-26 10:00:36 +00:00
danno@chromium.org
eaca750b29
Remove distinction between hidden and normal runtime functions
...
R=jkummerow@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/346413004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22018 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-25 15:26:10 +00:00
alexandre.rames@arm.com
a7408e5124
ARM: Use the shifter operand to merge in previous shift instructions.
...
When possible, we transform sequences of code of the form
lsl r1, r2, #imm
add r0, r5, r1
into
add r0, r5, r2 LSL #imm
This is an adaptation of r21161.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/312173002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22017 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-25 15:11:00 +00:00