svenpanne@chromium.org
b5da7279b1
Introduced TypeFeedbackId and BailoutId types.
...
This is a refactoring-only CL which improves the typing of IDs associated with
AST nodes. The interesting parts are in utils.h and ast.h, the rest of the CL
basically follows mechanically.
Review URL: https://chromiumcodereview.appspot.com/10831172
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-06 14:13:09 +00:00
yangguo@chromium.org
e0954ca592
Take advantage of batched results when matching global regexp.
...
BUG=
TEST=regexp-global.js
Review URL: https://chromiumcodereview.appspot.com/10831126
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-06 09:06:27 +00:00
erik.corry@gmail.com
1d0f872ef9
Fix full code generator to not use --debug-code if it is in
...
mksnapshot or a VM that is booted from a snapshot. --debug-code
can still have an effect on stub and optimized code and it still
works on the full code generator when running without snapshots.
The deoptimizer generates full-code-generator code and relies on it having
the same layout as last time. This means that the code the full code
generator makes for the snapshot should be the same as the code it makes
later. This change makes the full code generator create more consistent
code between mksnapshot time and run time.
This is a bug fix and a step towards making the snapshot code more robust.
Review URL: https://chromiumcodereview.appspot.com/10834085
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12239 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-31 14:59:32 +00:00
danno@chromium.org
cd95464dbc
Fix write barrier for StoreKeyedFastElements on ARM
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10824107
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12238 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-31 14:31:19 +00:00
erik.corry@gmail.com
8d96a0190c
Fix deserializer to understand direct pointers from code to cell payloads.
...
The deoptimizer generates full-code-generator code and relies on it having
the same layout as last time. This means that the code the full code
generator makes for the snapshot should be the same as the code it makes
later. This change makes the full code generator create more consistent
code between mksnapshot time and run time.
This is a bug fix and a step towards making the snapshot code more robust.
Review URL: https://chromiumcodereview.appspot.com/10824084
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12233 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-31 09:25:23 +00:00
danno@chromium.org
9641c25573
Improve constant element index access code generation
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10831049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-31 08:44:51 +00:00
svenpanne@chromium.org
cb4840c0e5
Inline simple getter calls.
...
Currently only simple getter calls are handled (i.e. no calls in count
operations or compound assignments), and deoptimization in the getter is not
handled at all. Because of the latter, we temporarily hide this feature behind a
new flag --inline-accessors, which is false by default.
Review URL: https://chromiumcodereview.appspot.com/10828066
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12223 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-30 10:42:21 +00:00
jkummerow@chromium.org
80c35c6522
Always set the callee's context when calling a function from optimized code.
...
This is necessary even for recursive calls because we're sharing optimized code among closures, which could call each other and have distinct contexts.
BUG=138887
TEST=mjsunit/regress/regress-crbug-138887
Review URL: https://chromiumcodereview.appspot.com/10834031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12201 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-26 12:49:08 +00:00
yangguo@chromium.org
d37695e30e
Fix cctests when VFP is disabled.
...
R=svenpanne@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10820027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12197 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-26 08:42:42 +00:00
yangguo@chromium.org
59f212e7eb
Relax requirement from VFP3 to VFP2 where possible.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10818026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12194 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-25 15:26:16 +00:00
yangguo@chromium.org
d525ddbed1
Fix static initializer check.
...
R=jkummerow@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10824013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-25 14:27:14 +00:00
yangguo@chromium.org
2c9c94bd32
Classify small functions platform-dependently.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10829009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12186 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-25 13:51:29 +00:00
yangguo@chromium.org
a1f0c5b16e
Add assertions to limit register count for VSTM and VLDM.
...
R=svenpanne@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10807066
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-23 08:38:53 +00:00
danno@chromium.org
8c89cc4cab
Optimize Smi keys for KeyedLoads
...
Allows KeyeLoad/KeyedStore operations where the key is a Smi to fold the untagging of the key into the element offset calculation.
Review URL: https://chromiumcodereview.appspot.com/10735020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12156 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-20 11:00:33 +00:00
sanjoy@chromium.org
693c7643d2
Optimize functions on a second thread.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10807024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-19 18:58:23 +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
svenpanne@chromium.org
e469cc44b8
Fix compilation for ARMv5TEJ
...
BUG=
TEST=Compiling for ARMv5TEJ
Review URL: https://chromiumcodereview.appspot.com/10784013
Patch from Remi Duraffort <remi.duraffort@st.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12140 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-19 09:49:12 +00:00
danno@chromium.org
43d0ed048d
Implements a new API to set a function entry hook for profiling.
...
Exposes a new API; V8::SetFunctionEntryHook.
If a non-NULL function entry hook is set, the code generator(s) will invoke on the entry hook at the very start of each generated function.
Committed: https://code.google.com/p/v8/source/detail?r=12069
Committed: https://code.google.com/p/v8/source/detail?r=12083
Review URL: https://chromiumcodereview.appspot.com/10706002
Patch from Sigurður Ásgeirsson <siggi@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-17 15:18:15 +00:00
verwaest@chromium.org
7cb94437cb
Remove LookupTransitionOrDescriptor altogether.
...
Review URL: https://chromiumcodereview.appspot.com/10778011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12100 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-16 15:26:10 +00:00
mstarzinger@chromium.org
bb9f4470c6
Fix missing tagging of stack value in finally block.
...
R=yangguo@chromium.org
BUG=chromium:137496
TEST=cctest/test-api/Regress137496
Review URL: https://chromiumcodereview.appspot.com/10787017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12096 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-16 13:38:17 +00:00
yangguo@chromium.org
022ba0588a
Fix transcendental cache on ARM in optimized code.
...
R=jkummerow@chromium.org
BUG=v8:2234
TEST=regress-2234.js
Review URL: https://chromiumcodereview.appspot.com/10695205
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12086 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-16 09:44:59 +00:00
danno@chromium.org
b1530257ab
Revert 12083: Implements a new API to set a function entry hook for profiling.
...
TBR=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10695206
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12084 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-13 16:33:27 +00:00
danno@chromium.org
5c8c4bec46
Implements a new API to set a function entry hook for profiling.
...
Exposes a new API; V8::SetFunctionEntryHook.
If a non-NULL function entry hook is set, the code generator(s) will invoke on the entry hook at the very start of each generated function.
Committed: https://code.google.com/p/v8/source/detail?r=12069
Review URL: https://chromiumcodereview.appspot.com/10706002
Patch from Sigurður Ásgeirsson <siggi@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-13 16:18:37 +00:00
danno@chromium.org
30569cba9b
Revert 12069: Implements a new API to set a function entry hook for profiling
...
Reverted due to waterfall failures
TBR=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10704189
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-12 15:59:50 +00:00
danno@chromium.org
d6edbdd436
Implements a new API to set a function entry hook for profiling.
...
Exposes a new API; V8::SetFunctionEntryHook.
If a non-NULL function entry hook is set, the code generator(s) will invoke on the entry hook at the very start of each generated function.
Review URL: https://chromiumcodereview.appspot.com/10706002
Patch from Sigurður Ásgeirsson <siggi@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12069 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-12 15:42:39 +00:00
sanjoy@chromium.org
31027880b0
Rename LChunkBase to LChunk, LChunk to LPlatformChunk and remove some unneeded explicit constructor attributes.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10701157
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-12 15:29:14 +00:00
sanjoy@chromium.org
c1ee1b457f
Break Crankshaft into phases.
...
Crankshaft now runs by calling CreateGraph on the HGraphBuilder, then
calling Optimize and Codegen on the HGraph.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10700115
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12064 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-12 15:10:34 +00:00
sanjoy@chromium.org
5765fa2546
Defer creating Handles for HConstants to the code generation phase.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10544196
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-11 16:17:02 +00:00
sanjoy@chromium.org
951b64d55f
Remove duplicated LChunk code.
...
Divide the LChunk class into an arch-independent LChunkBase and an
arch-dependent LChunk which inherits from LChunkBase.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10701141
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-11 14:42:17 +00:00
verwaest@chromium.org
b008d99b11
Ensure that all descriptors have a valid enumeration index, and replace NextEnumIndex with LastAdded.
...
The LastAdded points to the descriptor that was last added to the array. From the descriptor we can deduce the NextEnumerationIndex. This allows us to quickly find the property that we are transitioning to, which is necessary for transition-intensive code, eg JSON parsing.
Review URL: https://chromiumcodereview.appspot.com/10695120
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-11 14:26:42 +00:00
danno@chromium.org
5b2a27aad4
Fix compile errors in Visual C++ 2008.
...
R=danno@chromium.org
BUG=None
TEST=ARM compiles on VC 2008.
Review URL: https://chromiumcodereview.appspot.com/10690111
Patch from Sigurður Ásgeirsson <siggi@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12039 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-11 10:08:56 +00:00
danno@chromium.org
299a0ab1d5
Port r11344 (Try aligning unboxed double array backing store in allocation or
...
scavenge promotion.) to ARM.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10696097
Patch from Rodolph Perfetta <rodolph.perfetta@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-10 13:33:19 +00:00
verwaest@chromium.org
45419ee145
Swap bitfield3 and backpointer.
...
Bitfield3 now has its own field, while the backpointer shares the field with the descriptor array; which will become the transition array.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10692130
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12034 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-10 13:31:36 +00:00
verwaest@chromium.org
d7a5b7d5e2
Separating transitions from descriptors.
...
In this design maps contain descriptor arrays, which in turn can contain transition arrays. If transitions are needed when no descriptor array is present, a descriptor array without real descriptors is inserted just so it can point at the transition array.
The transition array does not contain details about the field it transitions to. In order to weed out transitions to FIELDs from CONSTANT_FUNCTION (what used to be MAP_TRANSITION vs CONSTANT_TRANSITION), the transition needs to be followed and the details need to be looked up in the target map. CALLBACKS transitions are still easy to recognize since the transition targets are stored as an AccessorPair containing the maps, rather than the maps directly.
Currently AccessorPairs containing a transition and an accessor are shared between the descriptor array and the transition array. This simplifies lookup since we only have to look in one of both arrays. This will change in subsequent revisions, when descriptor arrays will become shared between multiple maps, since transitions cannot be shared.
Review URL: https://chromiumcodereview.appspot.com/10697015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11994 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-05 13:54:20 +00:00
svenpanne@chromium.org
ebff0eb7b3
Handle accessors on the prototype chain in StoreICs.
...
Made stub compiler function signatures a bit more consistent on the way.
Review URL: https://chromiumcodereview.appspot.com/10735003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11984 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-07-04 11:40:51 +00:00
mstarzinger@chromium.org
a90c023d5e
Allow inlining of functions containing array literals.
...
R=yangguo@chromium.org
BUG=v8:1322
TEST=mjsunit/compiler/inline-literals
Review URL: https://chromiumcodereview.appspot.com/10689005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-27 14:46:01 +00:00
mstarzinger@chromium.org
df35732ab2
Allow inlining of functions containing RegExp literals.
...
R=yangguo@chromium.org
BUG=v8:1322
TEST=mjsunit/compiler/inline-literals
Review URL: https://chromiumcodereview.appspot.com/10703005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11940 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-27 11:49:37 +00:00
verwaest@chromium.org
41560e9f5f
Separate stub types from property types.
...
Review URL: https://chromiumcodereview.appspot.com/10656018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11920 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-25 11:35:23 +00:00
verwaest@chromium.org
1cff0c498e
Cleaning up usage of lookup results.
...
- Ensure that IsFound() is only used when not in combination with other
checks. To do so, the default type is NONEXISTENT rather than NORMAL;
and NotFound() also resets the type to NONEXISTENT.
- Use test methods rather than .type() == A_PROPERTY_TYPE.
Review URL: https://chromiumcodereview.appspot.com/10626004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-21 15:32:52 +00:00
erik.corry@gmail.com
d31ed98428
Fix GC bug with missing handle. Bug=133618
...
Review URL: https://chromiumcodereview.appspot.com/10559083
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11886 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-20 13:40:10 +00:00
sanjoy@chromium.org
9e4fbb45c1
One Zone per CompilationInfo.
...
The CompilationInfo record now saves a Zone, and the compiler pipeline
allocates memory from the Zone in the CompilationInfo. Before
compiling a function, we create a Zone on the stack and save a pointer
to that Zone to the CompilationInfo; which then gets picked up and
allocated from.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10534139
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-20 08:58:41 +00:00
mstarzinger@chromium.org
b1fe586e6b
Fix optimized code caching in FastNewClosureStub.
...
This fixes a corner-case on ARM and MIPS where optimized code was not
shared immediately across closures when a function was used in several
global contexts at once.
R=ulan@chromium.org
TEST=cctest/test-compiler/OptimizedCodeSharing
Review URL: https://chromiumcodereview.appspot.com/10544205
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11850 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-18 13:26:43 +00:00
danno@chromium.org
d03c2374bd
Fix packed-element.js test on ARM with no snap
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10546171
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11826 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-15 09:15:57 +00:00
yangguo@chromium.org
a075583479
Unbreak interpreted regexp.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10535164
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 17:06:16 +00:00
yangguo@chromium.org
c0d2fe256b
Check for valid PC when stepping in the ARM sim debugger.
...
BUG=v8:2134
TEST=
Review URL: https://chromiumcodereview.appspot.com/10546169
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11821 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 15:04:27 +00:00
fschneider@chromium.org
bb0a2ea766
Share optimized code for closures.
...
Each SharedFunctionInfo gets an optimized code map to store
one optimized code object per context. When allocating a new
closure we consult this map and check if there is optimized code
that can be shared.
This patch is based on an original patch
by Anton Muhin (http://codereview.chromium.org/6793013/ ).
BUG=v8:2087, v8:2094
TEST=test/mjsunit/compiler/optimized-closures.js
Review URL: https://chromiumcodereview.appspot.com/10103035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 14:06:22 +00:00
yangguo@chromium.org
fb81da2e5f
ARM: Fix literal pool handling for breakpoints in debugger.
...
BUG=2177
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10449047
Patch from Martyn Capewell <m.m.capewell@googlemail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 11:16:47 +00:00
yangguo@chromium.org
ce6aa5c251
Remove faster ticks for debug mode.
...
This solves the problem that code runs very slow when the debugger is enabled.
BUG=v8:2179
TEST=
Review URL: https://chromiumcodereview.appspot.com/10544135
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-13 14:07:50 +00:00
svenpanne@chromium.org
1ea5db0ed3
Martyn Capewell <m.m.capewell@googlemail.com>
...
Review URL: https://chromiumcodereview.appspot.com/10451037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11784 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-12 17:26:28 +00:00
erikcorry
0418b67142
Add negative lookups to polymorphic loads in Crankshaft.
...
Review URL: http://codereview.chromium.org/10539110
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11780 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-12 15:44:12 +00:00