ager@chromium.org [Thu, 27 Jan 2011 08:35:39 +0000 (08:35 +0000)]
Fix reintroduction of global variables that have been deleted.
Deletion of global properties puts 'the hole' in the global property
cell and updates the property details in the property dictionary with
the information that the property has been deleted. When setting
global properties that have been deleted in generated code we just
store the new value in the global property cell. This does not update
the property details in the property dictionary. Therefore, it looks
like the property is not there eventhough it was just reintroduced.
Perform 'the hole' checks in generated code for global property stores
and bail out of ICs and optimized code if storing to a property cell
that contains 'the hole'.
Review URL: http://codereview.chromium.org/6306014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6508
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Thu, 27 Jan 2011 03:22:08 +0000 (03:22 +0000)]
ARM: Implement DoInstanceOfAndBranch in the lithium code generator.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6364007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6507
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 Jan 2011 21:15:46 +0000 (21:15 +0000)]
ARM: Try to fix broken commit r6504
Commit contained wrong assert and was missing call to the runtime system for MUL.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/6338019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6506
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Wed, 26 Jan 2011 20:48:48 +0000 (20:48 +0000)]
Refactor recording of safepoints.
Refactor SafepointTableBuilder::DefineSafepoint and ARM LCodeGen::RecordSafepoint to use an enum for different kinds of safepoints. This change removes a lot of duplicated code and makes it easier to include new kinds of safepoints in the future. The remaining variants of LCodeGen::RecordSafepoint remain as a convinient way to record common safepoint kinds.
BUG=http://code.google.com/p/v8/issues/detail?id=1043
TEST=none
Review URL: http://codereview.chromium.org/6341008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6505
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 Jan 2011 20:25:33 +0000 (20:25 +0000)]
ARM: Add multiplication to the type recording binary operation stub
Review URL: http://codereview.chromium.org/6391004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6504
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Wed, 26 Jan 2011 19:21:46 +0000 (19:21 +0000)]
Strict mode eval/arguments LHS.
Review URL: http://codereview.chromium.org/6335013/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6503
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Wed, 26 Jan 2011 18:15:43 +0000 (18:15 +0000)]
Compress Variable class.
Link: http://codereview.chromium.org/6246019/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6502
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Wed, 26 Jan 2011 18:10:26 +0000 (18:10 +0000)]
Strict mode: function constructor tests.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6501
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 26 Jan 2011 17:32:02 +0000 (17:32 +0000)]
Remove the HInstruction utilities taking flag mask arguments.
It is a type error to treat a flag (an enum) as if it were a flag mask (an
int derived from shifting a bit by the enum value). It is error prone to
have functions that take flag mask arguments because they will silently
accept flags.
Review URL: http://codereview.chromium.org/6373011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6500
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 26 Jan 2011 17:30:22 +0000 (17:30 +0000)]
Use more detailed compilation info for inlined functions.
Construct the statically-known compilation info for inlined functions using
the target closure (which knows about its scope chain) and not from the
shared function info (which doesn't).
Review URL: http://codereview.chromium.org/6397004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6499
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 26 Jan 2011 15:28:17 +0000 (15:28 +0000)]
Fix issue 1076 by resetting labels of switch-clauses before use.
If we compile a function literal twice with the full code generator,
we must make sure that the labels embedded in the AST are reset.
BUG=1076
Review URL: http://codereview.chromium.org/6339014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6496
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 26 Jan 2011 15:16:13 +0000 (15:16 +0000)]
Fix another message object leak.
Review URL: http://codereview.chromium.org/6269021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6495
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 26 Jan 2011 15:02:02 +0000 (15:02 +0000)]
Fix indentation.
TBR=serya@chromium.org
Review URL: http://codereview.chromium.org/6260021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6494
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 26 Jan 2011 14:51:21 +0000 (14:51 +0000)]
Change the default implementation of DataEquals for Hydrogen instructions.
The former default was true. The new default is false and the default
implementation is UNREACHABLE so it asserts in debug builds. The function
is overridden in all concrete instruction classes that might have the flag
kUseGVN set.
Review URL: http://codereview.chromium.org/6255013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6493
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 26 Jan 2011 13:54:25 +0000 (13:54 +0000)]
X64 Crankshaft: Fix compilation error on Windows X64.
Review URL: http://codereview.chromium.org/6338018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6492
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 26 Jan 2011 13:37:51 +0000 (13:37 +0000)]
Clean up Hydrogen's HLoadFunctionPrototype.
This instruction was setting an incorrect collection of Changes/Depends
flags.
Review URL: http://codereview.chromium.org/6399002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6491
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 Jan 2011 13:26:36 +0000 (13:26 +0000)]
ARM: Fix the test expectations
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/6253013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6490
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Wed, 26 Jan 2011 13:24:19 +0000 (13:24 +0000)]
X64 Crankshaft: Remove relative jump to deoptimization code. Fixes logical error, and compilation error on Windows.
Review URL: http://codereview.chromium.org/6310018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6489
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 Jan 2011 12:31:35 +0000 (12:31 +0000)]
ARM: Fix the type recording binary operation stub subtract
Failure exposed by Sputning tests where the generic case tried to string add for subtract.
Review URL: http://codereview.chromium.org/6339013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6488
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 26 Jan 2011 10:25:43 +0000 (10:25 +0000)]
Disable all code motion on the final optimization attempt.
Before, we disabled code motion for check instructions on the final
optimization attempt. It is unsafe to prevent movement of check
instructions but to allow movement of instructions that assume the checks
were performed.
Review URL: http://codereview.chromium.org/6378012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6485
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 Jan 2011 09:52:25 +0000 (09:52 +0000)]
ARM: Make the ARM hardware builder green
Fix a bug in the --debug-code alignment check in the C entry stub.
Don't force the --debug-code flag in the ARM disassembler tests. The framework does support passing flags and the test runner will when running tests in debug mode.
Skip some deserialization tests which crashes from time to time.
Review URL: http://codereview.chromium.org/6393007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6484
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 26 Jan 2011 08:32:54 +0000 (08:32 +0000)]
ARM: Merging constants in simulator and assembler header files and other cleanup.
First stab at a general ARM cleanup patch. It merges ARM constants so that they can be used across simulator, assembler and disassembler, and tidies up some syntax and ambiguities.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6274009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6483
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 26 Jan 2011 08:12:56 +0000 (08:12 +0000)]
Minor cleanup: Use MaybeObject instead of bool and Failure** in
stub cache generation.
Review URL: http://codereview.chromium.org/6392003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6480
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 26 Jan 2011 08:03:48 +0000 (08:03 +0000)]
Revert r6543 and r6441.
This fixes a crash in the code generator.
BUG=1074
Review URL: http://codereview.chromium.org/6258020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6479
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 Jan 2011 08:00:51 +0000 (08:00 +0000)]
Fix presumbit.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/6250031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6478
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 Jan 2011 07:44:45 +0000 (07:44 +0000)]
ARM: Change BranchOnSmi/BranchOnNotSmi to JumpIfSmi/JumpIfNotSmi
Review URL: http://codereview.chromium.org/6272019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6477
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 26 Jan 2011 07:41:02 +0000 (07:41 +0000)]
ARM: Add subtract to the type recording binary operation stub.
Review URL: http://codereview.chromium.org/6324013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6476
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Tue, 25 Jan 2011 18:42:35 +0000 (18:42 +0000)]
Strict mode object property validation.
Review URL: http://codereview.chromium.org/6335010/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6475
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Tue, 25 Jan 2011 17:21:45 +0000 (17:21 +0000)]
Strict mode parameter validation.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6474
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 25 Jan 2011 16:37:18 +0000 (16:37 +0000)]
Revert change 6468: X64 Crankshaft functions added.
Review URL: http://codereview.chromium.org/6260018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6473
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Tue, 25 Jan 2011 15:51:10 +0000 (15:51 +0000)]
Support StringLength in hydrogen (similar to ArrayLength).
To avoid deopts a few extra changes were needed:
o Enable megamorphic state for special property loads on
primitives. We used to flip between monomorphic stubs.
o Extract pure string (no string wrapper support) version of the
string length stub.
Review URL: http://codereview.chromium.org/6334015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6472
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 Jan 2011 14:52:35 +0000 (14:52 +0000)]
ARM: Initial type recording binary operation stub
This implements the type recording binary operation stub for ARM. This first iteration only supports ADD. Handling of 32-bit integers is currently not implemented but just transitions. The generic case for now delegates to the generic binary operation stub.
Review URL: http://codereview.chromium.org/6342019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6471
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 25 Jan 2011 14:03:20 +0000 (14:03 +0000)]
X64 Crankshaft: Added some functions needed for delta-blue.
Review URL: http://codereview.chromium.org/6262013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6468
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 25 Jan 2011 13:59:23 +0000 (13:59 +0000)]
Prepare push to trunk. Now working on version 3.0.12.
Review URL: http://codereview.chromium.org/6324012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6467
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 25 Jan 2011 13:32:36 +0000 (13:32 +0000)]
Update regression test.
With SVN r6465 (reverting changes to scopes), a regression test for
deleting parameter variables has to change to reflect a semantic
change. It is now again possible to delete parameters from a function
that uses 'with' or 'try...catch'.
Review URL: http://codereview.chromium.org/6307014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6466
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Tue, 25 Jan 2011 13:01:45 +0000 (13:01 +0000)]
Revert "Reapply change to with/arguments interaction."
Revert this change again. Somewhat mysteriously we sometimes get empty
contexts that we do not expect in the context chain.
Review URL: http://codereview.chromium.org/6372013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6465
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 Jan 2011 12:59:43 +0000 (12:59 +0000)]
Fixed typo in calling Thread::set_name() on freebsd.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6287004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6464
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 Jan 2011 12:56:04 +0000 (12:56 +0000)]
Prepend the tools directory to python module path
This works around possible collisions with modules installed in the system
python directories.
See Gentoo Linux bug report:
http://bugs.gentoo.org/349794
Patch by Mike Gilbert <floppymaster@gmail.com>
Review URL: http://codereview.chromium.org/6253009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6463
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 25 Jan 2011 12:50:18 +0000 (12:50 +0000)]
Add compilation guard to new x64-only file, for Mac platform.
Review URL: http://codereview.chromium.org/6249016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6462
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 Jan 2011 12:35:06 +0000 (12:35 +0000)]
Adding GC hooks to support LiveObjectList functionality.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6287004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6461
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 Jan 2011 12:28:45 +0000 (12:28 +0000)]
Script changes so that we can build debug/release with
liveobjectlist=on/off and objectprint=on/off.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6267007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6460
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Tue, 25 Jan 2011 12:21:03 +0000 (12:21 +0000)]
Fix bug 1070: set correct holder for primitive checks.
Code generated for checks starting with primitive receivers skips one step
in the usual prototype checking algorithm, so the holder must always be set.
Not setting the holder did not cause an immediate failure because our
primitives have additional hidden prototypes before the real prototypes.
These extra objects in the chain usually contain no properties and so
allowed the right holders to be selected.
Review URL: http://codereview.chromium.org/6353014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6459
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 25 Jan 2011 12:17:02 +0000 (12:17 +0000)]
Do not shuffle parameters when doing sub on ia32 and arm.
Review URL: http://codereview.chromium.org/6283012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6458
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 Jan 2011 12:14:56 +0000 (12:14 +0000)]
IA32: Refactor common string add code.
Review URL: http://codereview.chromium.org/6279011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6457
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 25 Jan 2011 11:33:03 +0000 (11:33 +0000)]
Implement x64 lithium instructions DoGlobalObject and DoSub
Review URL: http://codereview.chromium.org/6324011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6456
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 25 Jan 2011 11:30:47 +0000 (11:30 +0000)]
X64 Crankshaft: Added a bunch of operations.
Review URL: http://codereview.chromium.org/6366010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6455
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 25 Jan 2011 11:25:30 +0000 (11:25 +0000)]
Disable MSVC warning that default array initializers now work properly.
Review URL: http://codereview.chromium.org/6272017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6454
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Tue, 25 Jan 2011 10:35:57 +0000 (10:35 +0000)]
Port to ARM and x64: Record the lazy deoptimization environmnent only at LLazyBailout-instructions.
This is a port of the change http://codereview.chromium.org/6348016/
to ARM and x64 platform.
Review URL: http://codereview.chromium.org/6350011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6453
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 25 Jan 2011 10:10:36 +0000 (10:10 +0000)]
Port new version of ParallelMove's LGapResolver to X64.
Review URL: http://codereview.chromium.org/6366003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6452
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 25 Jan 2011 08:59:16 +0000 (08:59 +0000)]
Port changes from x64 deoptimizer to ia32 and remove commented out code from last patch.
Review URL: http://codereview.chromium.org/6368013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6451
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 25 Jan 2011 08:48:59 +0000 (08:48 +0000)]
Another fix for leaking error objects. User code can overwrite
ReferenceError.prototype.__proto__ which will make "error instanceof
Error" fail. However, the ReferenceError.prototype object itself
cannot be modified. Therefore, the error checks must check for
concrete error instances instead of only checking for Error.
Review URL: http://codereview.chromium.org/6388003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6450
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Tue, 25 Jan 2011 07:57:56 +0000 (07:57 +0000)]
Add support for deoptimization on x64.
I did not take out the code relating to osr from the generate method
since this makes it easier to compare to ia32 (we will abort anyway when we hit the osr code so there should be no issues with having this in)
Review URL: http://codereview.chromium.org/6390001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6449
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Tue, 25 Jan 2011 07:49:39 +0000 (07:49 +0000)]
Change ARM exit frame layout and alingment handling
Change the ARM exit frame to have the same layout as the IA32 exit frame. This basically re-arranges the order of fp and sp and changes the sp location of the entry frame to hold the sp used by the gc and not the sp for popping the arguments. This removes the option of tearing down the frame and returning using one ldm instruction.
The main motivation for this is to avoid pushing an alignment word before generating the entry frame. The GC handling of optimized frames process the registers pushed as part of a safepoint and asumes that these are at the top of the frame, so if an alignment word is pushed this processing will be one off.
The alignment handling in the C entry stub have also been simplified. Now the value of lr is stored to a stack slot already reserved avoiding pushing it and keeping track of "frame skew".
This does result in more instructions in the exit frame on ARM, but we can look into improving this later.
Review URL: http://codereview.chromium.org/6247019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6448
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 25 Jan 2011 07:48:19 +0000 (07:48 +0000)]
Fix bad assumption in object literal interpretation.
We allow symbols that are array indices.
Review URL: http://codereview.chromium.org/6304016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6447
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Mon, 24 Jan 2011 18:13:18 +0000 (18:13 +0000)]
Strict mode octal literals.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6446
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Mon, 24 Jan 2011 15:18:49 +0000 (15:18 +0000)]
Change conformance test expectations.
We now conform to ES5 by not deleting variables that occur in a scope
shadowed by with or eval.
Review URL: http://codereview.chromium.org/6376009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6445
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 24 Jan 2011 14:54:45 +0000 (14:54 +0000)]
Move stack check patching to the architecture dependent deoptimizer
files. On ARM it is not enough to iterate the relocation information
because that will only give us access to the constant pool and not to
the place in the instruction stream where the target in the constant
pool is called.
Review URL: http://codereview.chromium.org/6343005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6444
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Mon, 24 Jan 2011 14:03:30 +0000 (14:03 +0000)]
Fix a bug in delete for lookup slots.
The function Runtime_LookupContext searches the context chain for a
LOOKUP slot and returns the object holding the slot. It returned the
global context if the slot was not found or if it was found in a
function's context or arguments object. This is not the correct
object to use for 'delete'.
Since this lookup function is only ever used when deleting LOOKUP
slots (those that have to go through a with or a scope with eval), it
is simply replaced with a Runtime_DeleteContextSlot function that does
the appropriate thing for all kinds of context lookups.
This fixes Chromium bug 70066.
http://code.google.com/p/chromium/issues/detail?id=70066
Review URL: http://codereview.chromium.org/6280013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6442
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 24 Jan 2011 13:29:39 +0000 (13:29 +0000)]
Record the lazy deoptimization environmnent only at LLazyBailout-instructions.
This saves one pointer per LIR instructions. The change relies on the fact
that there is a LazyBailout instruction at all the places where we need
to register a lazy deoptimization environment.
Review URL: http://codereview.chromium.org/6348016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6441
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 24 Jan 2011 12:28:38 +0000 (12:28 +0000)]
ARM: Implement DoIsObject and DoIsObjectAndBranch in the lithium code generator.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6308012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6438
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Mon, 24 Jan 2011 12:01:42 +0000 (12:01 +0000)]
Prepare push to trunk. We are now working on 3.0.11.
Review URL: http://codereview.chromium.org/6272015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6437
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 24 Jan 2011 09:43:14 +0000 (09:43 +0000)]
Port lithium template classes to ARM.
This is a port of the IA32 version and is needed to allow
changing the register allocator interface in a later change.
Review URL: http://codereview.chromium.org/6250027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6436
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 24 Jan 2011 07:59:40 +0000 (07:59 +0000)]
Avoid calling overwritten toString methods for internal error
formatting. I missed a couple of places. Extracting the error object
check to a separate function.
Review URL: http://codereview.chromium.org/6304015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6435
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Mon, 24 Jan 2011 07:56:57 +0000 (07:56 +0000)]
Fix double allocation of register on arm in DoDeferredMathAbsTaggedHeapNumber.
This should fix the sputnik issue on the arm simulator.
Priorly tmp2 and tmp3 could potentially be the same register as input.
Review URL: http://codereview.chromium.org/6293017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6434
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 24 Jan 2011 06:54:51 +0000 (06:54 +0000)]
WebKit build needs to be told where to look for ICU package.
Chromium already sets this variable in common.gypi which is force included to all gyp files in the build.
Review URL: http://codereview.chromium.org/6250025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6433
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
nsylvain@gmail.com [Sat, 22 Jan 2011 00:33:52 +0000 (00:33 +0000)]
Patch by pkasting@chromium.org. Edit svn:ignore to add the generated .mk files
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6432
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kbr@chromium.org [Fri, 21 Jan 2011 23:58:00 +0000 (23:58 +0000)]
Truncate rather than round to nearest when performing float-to-integer
conversions for external array types, which implement the Typed Array
spec. (Revision of http://codereview.chromium.org/6315004 .)
Prefer SSE2 code path on x86 processors. Non-SSE2 processors now make
a slow runtime call for float-to-int conversions. Use SSE3 for 32-bit
signed and unsigned int array types where possible.
The movement of code from ic-arm.cc to stub-cache-arm.cc caused the
VFP3 code path to be tested for the first time. Fixed bugs in the
register usage and in the constant value stored into integer arrays
for NaN and +/-Infinity.
Added new truncation test to test-api.cc. Storage of NaN and +/-Inf
was already covered. Ran unit tests on x86, x64 and ARM simulator.
Tested ia32 and x64 code in Chromium on Mac and Linux respectively
with Typed Array unit tests and WebGL content.
BUG=http://code.google.com/p/chromium/issues/detail?id=50972
TEST=test-api/ExternalArrays
Review URL: http://codereview.chromium.org/6303012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6431
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 21 Jan 2011 14:11:35 +0000 (14:11 +0000)]
Change recursive error printing to just replace recursively
encountered error objects with the empty string. This actually does
match the Safari behaviour.
Review URL: http://codereview.chromium.org/6259010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6430
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Fri, 21 Jan 2011 11:47:02 +0000 (11:47 +0000)]
Mark mozilla/ecma_3/RegExp/regress-85721 as flaky.
This tests is flaky in debug mode (especially on mac)
Review URL: http://codereview.chromium.org/6275012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6429
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 21 Jan 2011 11:44:29 +0000 (11:44 +0000)]
Return the empty string when formatting recursive error messages. This
matches the behavior of Safari and Firefox. Our old behavior was to
throw a stack overflow exception.
BUG=crbug.com/70334
TEST=mjsunit/cyclic-error-to-string.js
Review URL: http://codereview.chromium.org/6261018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6428
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Fri, 21 Jan 2011 11:36:19 +0000 (11:36 +0000)]
GDBJIT: do not register NULL lineinfo when gdbjit integration is disabled.
Review URL: http://codereview.chromium.org/6255008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6427
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 21 Jan 2011 11:28:35 +0000 (11:28 +0000)]
Reapply change to with/arguments interaction.
This is svn r6415 with a bugfix.
The bug was that we can have scopes with 0 heap slots (functions with
such scopes do not need a local context) and scopes with at least
Context::MIN_CONTEXT_SLOTS. The code generator only allocated a local
context if there were strictly more than Context::MIN_CONTEXT_SLOTS.
Before the change to with/arguments, it was impossible to actually get
a function scope with exactly Context::MIN_CONTEXT_SLOTS because every
such scope included a heap-allocated arguments (and arguments shadow)
slot.
Review URL: http://codereview.chromium.org/6248014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6426
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Fri, 21 Jan 2011 10:31:28 +0000 (10:31 +0000)]
Remove default template parameter T for the number of temps.
Instead require that the number of temps be specified at each declaration.
Review URL: http://codereview.chromium.org/6265019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6425
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Fri, 21 Jan 2011 08:30:13 +0000 (08:30 +0000)]
Fix Smi::IsValid assert in StringCharCodeAt deferred code.
Review URL: http://codereview.chromium.org/6303013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6424
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Thu, 20 Jan 2011 21:53:34 +0000 (21:53 +0000)]
Fix xcode.
TBR=arger@chromium.org
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6423
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Thu, 20 Jan 2011 18:51:47 +0000 (18:51 +0000)]
First part of strict mode.
- var eval | arguments
- catch (eval | arguments)
- 'with' is disabled
- function can't be named eval or arguments
Add FLAG_strict_mode
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6422
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Thu, 20 Jan 2011 17:42:29 +0000 (17:42 +0000)]
Implement fast code for the common cases of left hand sides that are less than three times larger as the right hand side and and right hand sides that are powers of two up and including 32.
In the covered special cases the result is computed directly, else the generic stub is called. The implementation deoptimizes only for mod 0 and if the result may be a negative zero.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6331005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6421
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 20 Jan 2011 14:37:28 +0000 (14:37 +0000)]
Remove unused function AddGapMove from the register allocator.
Review URL: http://codereview.chromium.org/6355009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6420
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 20 Jan 2011 14:20:54 +0000 (14:20 +0000)]
ARM: Implement StringLength and StringCharCodeAt in the lithium-arm
backend.
Review URL: http://codereview.chromium.org/6368009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6419
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 20 Jan 2011 12:58:57 +0000 (12:58 +0000)]
Revert "Make 'with' mark only variables occurring in the body as used."
This reverts SVN revision 6415 due to layout test failures.
TBR=ricow
Review URL: http://codereview.chromium.org/6374006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6418
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 20 Jan 2011 12:56:34 +0000 (12:56 +0000)]
Begin changing Hydrogen branch instructions.
Rename HBranch (the instruction that coerces an arbitrary HValue to
control flow) to HTest to free up the term Branch to refer to any
control instruction with two successors.
Change the virtual FirstSuccessor and SecondSuccessor functions on
control instructions to a pair of data members.
Review URL: http://codereview.chromium.org/6366002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6417
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 20 Jan 2011 12:47:22 +0000 (12:47 +0000)]
Use typefeedback for bitwise operations.
Add a generic tagged version for all bitwise operation that
invoke the generic stub. This allows us to perform generic
bitwise operations (i.e. on non-integers) without deoptimizing.
Review URL: http://codereview.chromium.org/6366006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6416
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 20 Jan 2011 12:32:43 +0000 (12:32 +0000)]
Make 'with' mark only variables occurring in the body as used.
Before, we conservatively marked every variable in a scope as used if the
scope contained 'with'. Instead, just mark the variables occurring in the
body of the with. This avoids marking 'arguments' as used whenever 'with'
occurs, which incurs an extra performance penalty (a use of arguments is
seen as an instruction to redirect all parameter accesses to the arguments
object).
Review URL: http://codereview.chromium.org/6357007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6415
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 20 Jan 2011 08:38:01 +0000 (08:38 +0000)]
Adding build script changes to support LiveObjectList functionality.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6364002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6414
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 20 Jan 2011 08:21:40 +0000 (08:21 +0000)]
Fix Windows compile
Review URL: http://codereview.chromium.org/6260014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6413
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 20 Jan 2011 08:11:53 +0000 (08:11 +0000)]
Stubbed out empty liveobjectlist files.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6335009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6412
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 20 Jan 2011 08:08:36 +0000 (08:08 +0000)]
ARM: Implement Math.abs in lithium code generator for the integer and
tagged case. I couldn't find a way to test the double case yet so I'm
leaving that unimplemented for now.
Review URL: http://codereview.chromium.org/6347007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6411
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 19 Jan 2011 20:05:22 +0000 (20:05 +0000)]
Support StringCharCodeAt in hydrogen/lithium.
This patch adds H- and L-variants of StringCharCodeAt and StringLength.
StringCharCodeAt is used to inline a constant function call of
String.prototype.charCodeAt and to implement the corresponding inline
runtime function. It does not yet use the recently introduced extra IC
state. (We can specialize on string encoding and avoid deopts because
of out of bounds accesses.)
StringLength needs more work because the stub version of it also
supports strings wrappers and it matters in some cases. (We have to
separate the string only case.)
Review URL: http://codereview.chromium.org/6243008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6408
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 15:39:40 +0000 (15:39 +0000)]
Fix the ARM simulator's stop support and add conditional breakpoint.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6346009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6405
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 19 Jan 2011 15:26:54 +0000 (15:26 +0000)]
Fix an assertion failure in the full code generator.
We hit an assertion failure when we tried to record the AST ID of
the (shared) .arguments variable proxy more than once. This was hit
when we had multiple calls to the same parameter in a function that
used the arguments object. The fix is to not visit the subexpressions
of the (shared) property access expression.
BUG=1060
Review URL: http://codereview.chromium.org/6368007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6404
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 19 Jan 2011 14:53:38 +0000 (14:53 +0000)]
ARM: Implement DoInstanceOfKnownGlobal stub
BUG=none
TEST=none
Patch by Martyn Capewell from ARM Ltd.
Review URL: http://codereview.chromium.org/6248004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6403
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 19 Jan 2011 14:51:01 +0000 (14:51 +0000)]
Fix Linux x64 compilation
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6402
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 19 Jan 2011 14:28:15 +0000 (14:28 +0000)]
Introducing MemoryMappedExternalResource for creating an external
resource from a memory mapped file for creating strings.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/6240002/
Relanded with Windows compilation issues fixed.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6401
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 19 Jan 2011 13:55:56 +0000 (13:55 +0000)]
Move LOperand class to lithium.h and move implementations out of .h into .cc files.
Review URL: http://codereview.chromium.org/6378004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6400
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 19 Jan 2011 13:52:08 +0000 (13:52 +0000)]
X64: Fix bug in DoBranch that miss detecting NaN as falsy.
Review URL: http://codereview.chromium.org/6369005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6399
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 13:04:21 +0000 (13:04 +0000)]
ARM: Implement HasInstanceType in lithium backend.
Review URL: http://codereview.chromium.org/6283006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6398
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 11:56:32 +0000 (11:56 +0000)]
ARM: Implement DoCmpJSObjectEqAndBranch.
Review URL: http://codereview.chromium.org/6381001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6396
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Wed, 19 Jan 2011 11:42:43 +0000 (11:42 +0000)]
Make V8 more Valgrind-friendly.
While we don't have to flush icache on Intel CPUs when we patch code we still have to call CPU::FlushICache() to notify Valgrind otherwise Valgrind will run incorrect translations which will lead to strange crashes.
Review URL: http://codereview.chromium.org/6271008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6391
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 11:35:41 +0000 (11:35 +0000)]
ARM: Implement StringCharAtStub.
Review URL: http://codereview.chromium.org/6334007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6390
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 19 Jan 2011 11:20:10 +0000 (11:20 +0000)]
Revert "Introducing MemoryMappedExternalResource for creating an external"
Windows compilation is broken. Will fix and reland later.
This reverts commit
fe13ffaa6d0c3435bfe1ae930813e456650ec980.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6389
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00