danno@chromium.org
9cca7d2733
Combine typed and pixel arrays.
...
Worth mentioning:
- Specialized versions of pixel array and store/loads inside the generic stubs have been removed, since to have parity for all external arrays, 8 different versions would have to be inlined/checked.
- There's a new constant in v8.h for external arrays with pixel array elements.
Review URL: http://codereview.chromium.org/6546036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7106 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 15:01:16 +00:00
kmillikin@chromium.org
a05a492254
Remove class HSubgraph.
...
Review URL: http://codereview.chromium.org/6647018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7100 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 12:37:56 +00:00
kmillikin@chromium.org
d31594feae
Refactor construction of switch statements to avoid subgraphs.
...
Refactor construction of switch statements so it doesn't use class
HSubgraph.
There are also a few improvements. We do not use an auxiliary list of
comparisons because they're embedded as a linked list in the graph
under construction. We share a common break block for all breaks from
the same switch. We do not insert empty blocks unless necessary to
maintain edge-split form.
There is also a bug fix. The entry to a clause body is a potential
join and must have a join ID set, otherwise deoptimization within the
body can go to an unpredictable place in the unoptimized code.
Review URL: http://codereview.chromium.org/6650021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 12:06:54 +00:00
sgjesse@chromium.org
23777e1b41
Remove deserializer assert checking object size allocated in large object space
...
The change r7079 could allocate a few small code objects in large object space. Therefore the assert is no longer valid.
Review URL: http://codereview.chromium.org/6647017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7098 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 11:50:03 +00:00
sgjesse@chromium.org
061fa8be11
Add the possibility for a code stub to be non-movable
...
Non-moveable code-stube are allocated in large object space. They are only required on ARM where the different C-entry stubs are required to never move.
This gets rid of pre-computing these stubs and hope that they never move. Also for crankshaft the C-entry stub which saved doubles is not generated in the snapshot so it ends up being generated at runtime and potentially move.
Review URL: http://codereview.chromium.org/6626072
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 10:38:19 +00:00
ricow@chromium.org
df7bbc2386
Remove unneccesary JumpTableEntry pointer from lithium-codegen-x64.cc
...
Review URL: http://codereview.chromium.org/6648028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7096 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 10:29:14 +00:00
ricow@chromium.org
7783cc48fd
Fix memory leaks on x64
...
This change uses ZoneObject as base class for our jumptable entry. In
addition this change refactors the JumpTableEntry a bit.
Review URL: http://codereview.chromium.org/6647012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7095 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 10:02:47 +00:00
fschneider@chromium.org
4d2c3ee82d
Avoid allocation of temporary zone lists when inserting representation changes.
...
Instead of allocating fresh temporary lists for every instruction, reuse
the same instance and reset it between instructions.
This reduces the amount of zone memory used for inserting the HChange
instructions roughly by half.
Review URL: http://codereview.chromium.org/6628079
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7094 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 15:08:36 +00:00
sgjesse@chromium.org
5a768f0769
Fix release build
...
Disassemble is not available in release build
Review URL: http://codereview.chromium.org/6635043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 15:00:08 +00:00
ricow@chromium.org
da9fe0f961
Remove GetProvidedParametersCount from JavaScriptFrame, it simply calls ComputeParametersCount.
...
Review URL: http://codereview.chromium.org/6635042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7092 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 14:18:28 +00:00
lrn@chromium.org
a8b41a0edd
Fix bug in X64 RegExpExec stub.
...
Used incorrect register for referencing RegExp data, so it always failed
to match the fast case.
When modifiying the object layout, it was possible to make it crash instead.
BUG=v8:1236
TEST=test/mjsunit/regress/regress-1236.js
Review URL: http://codereview.chromium.org/6635041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 14:15:25 +00:00
lrn@chromium.org
0c74af3d0f
Fix Issue 1234.
...
Ensure that there is always enough bytes between consequtive calls in
unoptimized code to write a call instruction at the return points
without overlapping.
This handles the case where two return points were only four bytes
apart (because the latter call was to a register).
BUG=v8:1234
Review URL: http://codereview.chromium.org/6624091
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7089 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 11:21:38 +00:00
sgjesse@chromium.org
c3f9e1dee2
Ensure the result is used for the remaining calls to SetElement
...
Now mark SetElement as must use result
The debugger runs inside its own context so there should be no setters hit. Which is the reason for the live-edit code asserting non-empty handles.
Review URL: http://codereview.chromium.org/6621042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7088 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 11:14:25 +00:00
fschneider@chromium.org
4b912c6af3
Fix assertion failure introduced by my previous change.
...
Review URL: http://codereview.chromium.org/6621068
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 10:49:01 +00:00
karlklose@chromium.org
822ddaa7d1
ARM: Implement MathPowStub and DoMathPowHalf.
...
Review URL: http://codereview.chromium.org/6613015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7086 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 10:29:40 +00:00
fschneider@chromium.org
12ba2dd435
Improve dead phi elimination.
...
This change splits the existing phi elimination into two phases:
1. Remove redundant phis
2. Remove dead phis with a fixed point iteration.
The new approach allows us to remove dead phis that are connected
in a cycle.
Review URL: http://codereview.chromium.org/6624061
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7085 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 10:04:23 +00:00
mmaly@chromium.org
927f341d3c
Strict mode arguments do not share binding with formal parameters.
...
Move strict mode flag from TemporaryScope to Scope so that it can be accessed from variable binding code.
Arguments do not alias in strict mode (ia32, x64 and arm, codegen and full codegen).
Hydrogen tolerates null arguments_shadow().
In codegen-<arch> arguments object is allocated eagerly to capture values before they get modified.
Review URL: http://codereview.chromium.org/6625048/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 19:23:46 +00:00
kmillikin@chromium.org
4a9056cbce
Fix a stack-height mismatch during deoptimization.
...
When deoptimizing after a conditional expression in an effect context, we
should not see the value of the conditional expression.
BUG=v8:1237
Review URL: http://codereview.chromium.org/6625057
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7082 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 17:01:12 +00:00
fschneider@chromium.org
ade4b7506b
Make the typefeedback oracle use a NumberDictionary instead of JSObject as its backing store.
...
This avoids problems when getters/setters are defined on Object.
BUG=v8:1232
Review URL: http://codereview.chromium.org/6625054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7081 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 16:09:56 +00:00
kmillikin@chromium.org
2662624988
Refactor inlined functions to avoid using subgraphs.
...
Function inlining no longer uses subgraphs. We detect inlining in an
effect context and avoid materializing a return value earlier than we
did before.
Review URL: http://codereview.chromium.org/6635012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7080 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 15:42:23 +00:00
karlklose@chromium.org
4e05f1a091
Prepare push to trunk. Now working on version 3.2.1.
...
Review URL: http://codereview.chromium.org/6623053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7076 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 13:48:02 +00:00
kmillikin@chromium.org
5c6b3ae6c6
Fix presubmit errors.
...
TBR=whesse
Review URL: http://codereview.chromium.org/6627049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7075 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 12:08:51 +00:00
kmillikin@chromium.org
c3172a6b7e
Refactor polymorphic load and inline function graph construction.
...
Change the way we construct the graph for polymorphic loads to match that of
polymorphic stores.
Introduce a stack-allocated helper for saving and restoring all the
function-specific graph builder state that needs to change when we begin
translating an inlined function. Make this class authoritative by moving
redundant state out of the builder and deferring to the current function's
state.
Ensure that we always print a tracing message when abandoning an inlining
attempt.
Review URL: http://codereview.chromium.org/6628012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7074 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 11:52:36 +00:00
whesse@chromium.org
632e79bfe7
X64 Crankshaft: Revert r7071 and fix DoStoreContextSlot in a different way.
...
Review URL: http://codereview.chromium.org/6627048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 11:26:43 +00:00
lrn@chromium.org
56753adbb8
X64: Ensure that there is always room for a call between recoreded safepoints.
...
Fixes issue 1234.
BUG=v8:1234
Review URL: http://codereview.chromium.org/6624053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7072 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 10:30:58 +00:00
whesse@chromium.org
3ea38d412b
X64 Crankshaft: Fix bug in DoStoreContextSlot, and enable it.
...
Review URL: http://codereview.chromium.org/6627046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 10:28:37 +00:00
whesse@chromium.org
30676b0abc
X64: Make sure that all Win64 Visual Studio project file builds have a large enough stack.
...
Review URL: http://codereview.chromium.org/6626013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 09:27:43 +00:00
lrn@chromium.org
cd04469f78
Optimize loads from root-array in X64.
...
Move the value of the root-array register to offset 128 from the start of
the root array. This allows indices 16..31 to be reached using only an
8-bit displacement, saving three bytes per access.
Review URL: http://codereview.chromium.org/6594115
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7069 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 08:35:19 +00:00
mmaly@chromium.org
3c51baa1ac
Throw if setting length of a string in strict mode.
...
BUG=
TEST=test/mjsunit/strict-mode.js
Review URL: http://codereview.chromium.org/6623002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7064 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 21:12:29 +00:00
cira@chromium.org
0f6709330c
Fix memory corruption with AdoptText method.
...
Icu setText method keeps pointer to text, it doesn't copy it so we have to keep text around for the lifetime of the break iterator object,
or next setText operation.
Review URL: http://codereview.chromium.org/6609038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7063 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 17:22:03 +00:00
whesse@chromium.org
76a6c73960
X64: Fix error in Win64 platform specific code in regexp stub.
...
Review URL: http://codereview.chromium.org/6626011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 13:01:47 +00:00
whesse@chromium.org
8a0e217186
Fix X64 Crankshaft error on Win64 platform, in deoptimizer-x64.cc parameter passing.
...
Review URL: http://codereview.chromium.org/6623013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 12:34:05 +00:00
fschneider@chromium.org
ff6190946c
Reorganize code for range analysis and suppress unnecessary debug printing of unknown ranges.
...
Review URL: http://codereview.chromium.org/6611020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7060 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 12:09:54 +00:00
vitalyr@chromium.org
eee3c5196a
Start sampler for the runtime profiler even when we can't setup a signal handler.
...
Review URL: http://codereview.chromium.org/6625013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7059 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 10:12:33 +00:00
kmillikin@chromium.org
36f63b8476
Change the translation of polymorphic stores.
...
They do not use subgraphs or subgraph scopes. Instead of computing a list
of single-block subgraphs and then adding all the edges afterward, build
both the blocks and edges directly.
Review URL: http://codereview.chromium.org/6615014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7058 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 10:07:43 +00:00
sgjesse@chromium.org
f6a366a851
Add missing cast.
...
Review URL: http://codereview.chromium.org/6623010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7057 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 09:36:04 +00:00
ricow@chromium.org
e772d9ea45
Remove unused label from lithium-codegen-ia32
...
Review URL: http://codereview.chromium.org/6615007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7056 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 09:07:31 +00:00
sgjesse@chromium.org
18a9bf69c5
Minor bug in int32 TypeRecordingBinaryOpStub.
...
BUG=none
TEST=none
Patch by Rodolph Perfetta from ARM Ltd.
Review URL: http://codereview.chromium.org/6612017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7055 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 07:36:52 +00:00
mmaly@chromium.org
88b60ebc24
Fix presubmit.
...
TBR=ager@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/6603032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7054 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 00:28:54 +00:00
mmaly@chromium.org
9dc156ac62
Passing strict mode throughout SetElement.
...
Throw if assigning to read only element.
Adding tests for element assignment in strict mode.
Fix tests for strict mode SetElement.
Review URL: http://codereview.chromium.org/6613005/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7053 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-04 00:21:52 +00:00
cira@chromium.org
a0f0faa8e4
Adding break iterator support to the i18n api extension.
...
This is vendor specific, and is prefixed by v8.
WebKit layout tests will be added in a separate CL.
Review URL: http://codereview.chromium.org/6610006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 17:32:18 +00:00
mmaly@chromium.org
30bd09cbd6
Renaming strict to strict_mode for uniformity.
...
Review URL: http://codereview.chromium.org/6611003/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7050 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 16:17:28 +00:00
whesse@chromium.org
9cc9ecbfe9
Revert change 7048
...
Review URL: http://codereview.chromium.org/6613019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 16:09:52 +00:00
whesse@chromium.org
721d8d5b57
X64 Crankshaft: Fix and enable StoreContextSlot in lithium codegen on x64.
...
Review URL: http://codereview.chromium.org/6614017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 15:36:13 +00:00
fschneider@chromium.org
db9e6dcd86
Mark HChange that convert to int32 with truncation with the appropiate flag.
...
Before we would compute the flag by iterating over all uses. The truncating
flag is always determined at construction time since we already computed
the flag for all other instructions before inserting HChange instructions.
Review URL: http://codereview.chromium.org/6615012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7047 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 13:50:16 +00:00
lrn@chromium.org
df5c259bb2
Remove tests for being the normal array constructor from the ArrayConstructCode builtin.
...
Review URL: http://codereview.chromium.org/6613016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7046 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 13:36:31 +00:00
kmillikin@chromium.org
84aceb526a
Refactor translation of short-circuit logical operations to avoid subgraphs.
...
Do not use a subgraph or subgraph scope for the Hydrogen translation
of the short-circuit logical operations.
Review URL: http://codereview.chromium.org/6615010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 13:02:56 +00:00
lrn@chromium.org
f5839996fb
More cases of CallFunction that doesn't work correctly.
...
Review URL: http://codereview.chromium.org/6603015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7044 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 12:56:14 +00:00
lrn@chromium.org
30c0420b39
Undo change from .call to %_CallFunction.
...
The latter doesn't handle promotion of null/undefined to global object as
receiver for non-strict functions.
Review URL: http://codereview.chromium.org/6615013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7043 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 12:44:39 +00:00
whesse@chromium.org
5a40de9b21
Add new ARM macro assembler function CompareRoot left out of previous commit.
...
Review URL: http://codereview.chromium.org/6614015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 12:21:37 +00:00