platform/upstream/v8.git
13 years agoAdd compilation guard to new x64-only file, for Mac platform.
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

13 years agoAdding GC hooks to support LiveObjectList functionality.
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

13 years agoScript changes so that we can build debug/release with
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

13 years agoFix bug 1070: set correct holder for primitive checks.
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

13 years agoDo not shuffle parameters when doing sub on ia32 and arm.
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

13 years agoIA32: Refactor common string add code.
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

13 years agoImplement x64 lithium instructions DoGlobalObject and DoSub
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

13 years agoX64 Crankshaft: Added a bunch of operations.
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

13 years agoDisable MSVC warning that default array initializers now work properly.
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

13 years agoPort to ARM and x64: Record the lazy deoptimization environmnent only at LLazyBailou...
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

13 years agoPort new version of ParallelMove's LGapResolver to X64.
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

13 years agoPort changes from x64 deoptimizer to ia32 and remove commented out code from last...
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

13 years agoAnother fix for leaking error objects. User code can overwrite
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

13 years agoAdd support for deoptimization on x64.
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

13 years agoChange ARM exit frame layout and alingment handling
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

13 years agoFix bad assumption in object literal interpretation.
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

13 years agoStrict mode octal literals.
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

13 years agoChange conformance test expectations.
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

13 years agoMove stack check patching to the architecture dependent deoptimizer
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

13 years agoFix a bug in delete for lookup slots.
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

13 years agoRecord the lazy deoptimization environmnent only at LLazyBailout-instructions.
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

13 years agoARM: Implement DoIsObject and DoIsObjectAndBranch in the lithium code generator.
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

13 years agoPrepare push to trunk. We are now working on 3.0.11.
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

13 years agoPort lithium template classes to ARM.
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

13 years agoAvoid calling overwritten toString methods for internal error
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

13 years agoFix double allocation of register on arm in DoDeferredMathAbsTaggedHeapNumber.
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

13 years agoWebKit build needs to be told where to look for ICU package.
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

13 years agoPatch by pkasting@chromium.org. Edit svn:ignore to add the generated .mk files
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

13 years agoTruncate rather than round to nearest when performing float-to-integer
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

13 years agoChange recursive error printing to just replace recursively
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

13 years agoMark mozilla/ecma_3/RegExp/regress-85721 as flaky.
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

13 years agoReturn the empty string when formatting recursive error messages. This
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

13 years agoGDBJIT: do not register NULL lineinfo when gdbjit integration is disabled.
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

13 years agoReapply change to with/arguments interaction.
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

13 years agoRemove default template parameter T for the number of temps.
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

13 years agoFix Smi::IsValid assert in StringCharCodeAt deferred code.
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

13 years agoFix xcode.
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

13 years agoFirst part of strict mode.
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

13 years agoImplement fast code for the common cases of left hand sides that are less than three...
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

13 years agoRemove unused function AddGapMove from the register allocator.
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

13 years agoARM: Implement StringLength and StringCharCodeAt in the lithium-arm
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

13 years agoRevert "Make 'with' mark only variables occurring in the body as used."
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

13 years agoBegin changing Hydrogen branch instructions.
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

13 years agoUse typefeedback for bitwise operations.
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

13 years agoMake 'with' mark only variables occurring in the body as used.
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

13 years agoAdding build script changes to support LiveObjectList functionality.
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

13 years agoFix Windows compile
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

13 years agoStubbed out empty liveobjectlist files.
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

13 years agoARM: Implement Math.abs in lithium code generator for the integer and
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

13 years agoSupport StringCharCodeAt in hydrogen/lithium.
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

13 years agoFix the ARM simulator's stop support and add conditional breakpoint.
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

13 years agoFix an assertion failure in the full code generator.
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

13 years agoARM: Implement DoInstanceOfKnownGlobal stub
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

13 years agoFix Linux x64 compilation
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

13 years agoIntroducing MemoryMappedExternalResource for creating an external
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

13 years agoMove LOperand class to lithium.h and move implementations out of .h into .cc files.
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

13 years agoX64: Fix bug in DoBranch that miss detecting NaN as falsy.
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

13 years agoARM: Implement HasInstanceType in lithium backend.
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

13 years agoARM: Implement DoCmpJSObjectEqAndBranch.
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

13 years agoMake V8 more Valgrind-friendly.
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

13 years agoARM: Implement StringCharAtStub.
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

13 years agoRevert "Introducing MemoryMappedExternalResource for creating an external"
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

13 years agoUsing unsigned shifts and masks when dealing with 64-bit addresses.
antonm@chromium.org [Wed, 19 Jan 2011 11:16:23 +0000 (11:16 +0000)]
Using unsigned shifts and masks when dealing with 64-bit addresses.

BUG=v8:1037

Review URL: http://codereview.chromium.org/6242005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6388 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoIntroducing MemoryMappedExternalResource for creating an external
mikhail.naganov@gmail.com [Wed, 19 Jan 2011 10:48:06 +0000 (10:48 +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/

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoX64 Crank: Implemented DoBranch and all *AndBranch comparisons.
lrn@chromium.org [Wed, 19 Jan 2011 10:17:18 +0000 (10:17 +0000)]
X64 Crank: Implemented DoBranch and all *AndBranch comparisons.

Review URL: http://codereview.chromium.org/6374002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoPrepare push to trunk. We are now working in 3.0.10.
erik.corry@gmail.com [Wed, 19 Jan 2011 09:42:17 +0000 (09:42 +0000)]
Prepare push to trunk. We are now working in 3.0.10.
Review URL: http://codereview.chromium.org/6380003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoFix the license info to correctly state Copyright "the V8 project
ager@chromium.org [Wed, 19 Jan 2011 09:20:18 +0000 (09:20 +0000)]
Fix the license info to correctly state Copyright "the V8 project
authors" instead of "Google" so it is consistent with the individual
files.

Review URL: http://codereview.chromium.org/6298006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoFix possibly wrong use of strncpy_s
sgjesse@chromium.org [Wed, 19 Jan 2011 08:34:24 +0000 (08:34 +0000)]
Fix possibly wrong use of strncpy_s

This should also fix MinGW build.
Review URL: http://codereview.chromium.org/6376003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoRevert r6376 and r6373 which changes external array support. The ARM
ager@chromium.org [Wed, 19 Jan 2011 08:20:42 +0000 (08:20 +0000)]
Revert r6376 and r6373 which changes external array support. The ARM
version did not work.

TBR=kbr@chromium.org
Review URL: http://codereview.chromium.org/6295013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoProperly create variables to access outer arguments and function names.
antonm@chromium.org [Wed, 19 Jan 2011 08:16:17 +0000 (08:16 +0000)]
Properly create variables to access outer arguments and function names.

Review URL: http://codereview.chromium.org/6266007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoAdding inspector module and macro-ized object type list.
sgjesse@chromium.org [Wed, 19 Jan 2011 08:04:48 +0000 (08:04 +0000)]
Adding inspector module and macro-ized object type list.

Patch by Mark Lam from Hewlett-Packard Development Company, LP

Review URL: http://codereview.chromium.org/6261012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoFix ARM compilation after external array changes.
ager@chromium.org [Wed, 19 Jan 2011 07:18:04 +0000 (07:18 +0000)]
Fix ARM compilation after external array changes.

TBR=kbr@chromium.org
Review URL: http://codereview.chromium.org/6261014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6376 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoRevert strict mode (Mozilla test failure).
mmaly@chromium.org [Tue, 18 Jan 2011 23:01:50 +0000 (23:01 +0000)]
Revert strict mode (Mozilla test failure).

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6374 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoTruncate rather than round to nearest when performing float-to-integer
kbr@chromium.org [Tue, 18 Jan 2011 21:51:50 +0000 (21:51 +0000)]
Truncate rather than round to nearest when performing float-to-integer
conversions for external array types, which implement the Typed Array
spec. The new code paths are for SSE3 and SSE2 capable processors.
The code for non-SSE2 processors is unchanged for now. The ARM port
appears to already be correct.

Moved the generation of the external array load and store intrinsics
to the stub cache (on all platforms) so that they are generated at run
time and can take advantage of CPU features.

This functionality is covered by the array-unit-tests.html test in the
WebGL conformance test suite:
http://khronos.org/webgl/wiki/Testing/Conformance
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/array-unit-tests.html

Manually verified all of the SSE3/SSE2/non-SSE2 code paths by enabling
each in turn. Tested in Chromium on 32-bit Mac OS X and 64-bit Linux.

BUG=http://code.google.com/p/chromium/issues/detail?id=50972
TEST=none (see above)

Review URL: http://codereview.chromium.org/6315004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoIntroduce extra IC state to record additional feedback from IC-s.
vitalyr@chromium.org [Tue, 18 Jan 2011 16:54:48 +0000 (16:54 +0000)]
Introduce extra IC state to record additional feedback from IC-s.

Extra IC state is only two bits and only supported for call IC-s for
now. To change its extra state an IC stub jumps to a new miss stub
that goes to runtime as usual but then instead of going megamorphic
generates a monomorphic stub with the updated state.

Review URL: http://codereview.chromium.org/6344005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoFirst part of ES5 strict mode.
mmaly@chromium.org [Tue, 18 Jan 2011 16:43:53 +0000 (16:43 +0000)]
First part of ES5 strict mode.

- var eval | arguments
- catch (eval | arguments)
- 'with' is disabled
- function can't be named eval or arguments
- function parameter name cannot be eval or arguments
- no duplicate parameter names allowed

Add FLAG_strict_mode

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoFix lint error introduced by r6367.
vegorov@chromium.org [Tue, 18 Jan 2011 16:16:00 +0000 (16:16 +0000)]
Fix lint error introduced by r6367.

TBR=erik.corry@gmail.com

Review URL: http://codereview.chromium.org/6378001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6368 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoBasic GDB JIT Interface integration.
vegorov@chromium.org [Tue, 18 Jan 2011 16:11:01 +0000 (16:11 +0000)]
Basic GDB JIT Interface integration.

It has certain overheads even when gdb is not attached so it is guarded by ENABLE_GDBJIT_INTERFACE define and --gdbjit flag.

Review URL: http://codereview.chromium.org/5965011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoX64 Crankshaft: Add addition of tagged and int32 values to Crankshaft on x64. Enable...
whesse@chromium.org [Tue, 18 Jan 2011 14:32:13 +0000 (14:32 +0000)]
X64 Crankshaft: Add addition of tagged and int32 values to Crankshaft on x64.  Enable CallIC to global function to call optimized code.
Review URL: http://codereview.chromium.org/6329006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoFix operand type for keyed calls.
fschneider@chromium.org [Tue, 18 Jan 2011 14:25:05 +0000 (14:25 +0000)]
Fix operand type for keyed calls.

Record the key as a input operand for keyed call instructions instead
of wrongly making it a temp operand.

This bug does currently not show up as a problem because the
uses are recorded only in the instruction summary.

Review URL: http://codereview.chromium.org/6368003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoDo not optimize functions which are in new space.
antonm@chromium.org [Tue, 18 Jan 2011 13:59:49 +0000 (13:59 +0000)]
Do not optimize functions which are in new space.

If there are many shortliving closures, they pollute sampler window and
delay optimizations of functions which should be optimized.

Review URL: http://codereview.chromium.org/6344006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6364 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoDisable aggressive optimizations on the last optimization attempt.
vitalyr@chromium.org [Tue, 18 Jan 2011 13:43:48 +0000 (13:43 +0000)]
Disable aggressive optimizations on the last optimization attempt.

Only has effect on the loop invariant code motion and Check instructions
for now.

Review URL: http://codereview.chromium.org/6321007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6363 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoARM: Implement double constants in the lithium ARM backend and fix
ager@chromium.org [Tue, 18 Jan 2011 11:31:17 +0000 (11:31 +0000)]
ARM: Implement double constants in the lithium ARM backend and fix
missing minus zero check in MathFloor implementation.

Review URL: http://codereview.chromium.org/6303009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoIncremented preparse version number.
lrn@chromium.org [Tue, 18 Jan 2011 10:00:36 +0000 (10:00 +0000)]
Incremented preparse version number.

Revision 6309 changed which functions were considered lazy.
That also means that there must be preparse data for now non-lazy functions.

BUG=
TEST=

Review URL: http://codereview.chromium.org/6270002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoLanding for Mark Larson.
ager@chromium.org [Tue, 18 Jan 2011 07:25:05 +0000 (07:25 +0000)]
Landing for Mark Larson.

Add a README.chromium and LICENSE file for Strongtalk assembler.

This allows the Chromium license tool to automatically include
Strongtalk in about:credits.

BUG= None
TEST= Strongtalk section in Chrome's about:credits
R= ager

Codereview URL: http://codereview.chromium.org/6357004/

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6354 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoDo not use possibly stale values for cache size, etc.
antonm@chromium.org [Mon, 17 Jan 2011 16:54:56 +0000 (16:54 +0000)]
Do not use possibly stale values for cache size, etc.

Those value can become invalid if cache gets cleared by GC.

Review URL: http://codereview.chromium.org/6348002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6353 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoMerge changes to LTemplateInstruction to X64 (Issue 1048).
lrn@chromium.org [Mon, 17 Jan 2011 13:51:59 +0000 (13:51 +0000)]
Merge changes to LTemplateInstruction to X64 (Issue 1048).

Implement ConstantD and ConstantI.

BUG=1048

Review URL: http://codereview.chromium.org/6262005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoClean up test lists. I cannot reproduce any of these locally. My guess
ager@chromium.org [Mon, 17 Jan 2011 13:27:16 +0000 (13:27 +0000)]
Clean up test lists. I cannot reproduce any of these locally. My guess
is that the mozilla ones were caused by the safe-point table problem
and the deoptimization ones are fixed by adding support for mod and
div.

Let's see if the buildbot agrees.
Review URL: http://codereview.chromium.org/6260007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoEnable compilation of very simple functions in x64 crankshaft.
ricow@chromium.org [Mon, 17 Jan 2011 13:11:39 +0000 (13:11 +0000)]
Enable compilation of very simple functions in x64 crankshaft.

This change includes support for safepointtables and adding deoptimization info (but not for deoptimizing).

Implemented crankshaft functions:
CallCode
GenerateSafepointTable
RegisterEnvironmentForDeoptimization
EmitGoto

This change allows us to compile very simple functions with crankshaft:
An empty function
A function returning a constant.
A function returning a parameter.

There is 6 disabled tests that require us to be able to deoptimize
which is currently not supported.

Review URL: http://codereview.chromium.org/6310009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoAdd UseAny to create a LOperand without register preference.
fschneider@chromium.org [Mon, 17 Jan 2011 12:54:52 +0000 (12:54 +0000)]
Add UseAny to create a LOperand without register preference.

The result can be a register, a stack slot or a constant operand.

Right now it is only used for enviroment uses.

Review URL: http://codereview.chromium.org/6348003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6349 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoARM: Reenable Div and Mod in the ARM lithium codegenerator. The
ager@chromium.org [Mon, 17 Jan 2011 12:52:06 +0000 (12:52 +0000)]
ARM: Reenable Div and Mod in the ARM lithium codegenerator. The
crashes uncovered by this were caused by constant pool in safe-point
tables. This should be safe to enable now.

Review URL: http://codereview.chromium.org/6243005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoARM: Fix ARM safepoint tables by ensuring that constant pools are not
ager@chromium.org [Mon, 17 Jan 2011 12:45:39 +0000 (12:45 +0000)]
ARM: Fix ARM safepoint tables by ensuring that constant pools are not
emitted as part of the safepoint tables.

Always emit the constant pool as part of generating deferred code
(whether or not there actually is any deferred code) and ASSERT that
there is no pending relocation info while using db and dd to write
tables.

Review URL: http://codereview.chromium.org/6360003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6347 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoRemove the remaining LOperand-members from concrete LIR instructions.
fschneider@chromium.org [Mon, 17 Jan 2011 12:22:31 +0000 (12:22 +0000)]
Remove the remaining LOperand-members from concrete LIR instructions.

This change introduces the third template parameters for LIR instructions
to specify the number of temp-operands. This is one step towards
removing the instruction-summaries.

I also added hydrogen-accessors in more places and refactored
the LIR-branch instructions to have common super-classes to
avoid code duplication.

Added MUST_USE_RESULT to the functions that record uses
and definitions so that all LOperands are stored in the
LIR instructions (and not only in the summaries).

Review URL: http://codereview.chromium.org/6237002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6345 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoChange the algorithm and generated code for parallel moves on IA32.
kmillikin@chromium.org [Mon, 17 Jan 2011 11:25:36 +0000 (11:25 +0000)]
Change the algorithm and generated code for parallel moves on IA32.

Instead of spilling and then immediately restoring eax to resolve
memory to memory moves, the gap move resolver now tracks registers
that are known to be free and uses one if available.  If not it spills
but restores lazily when the spilled value is needed or at the end of
the algorithm.

Instead of using esi for resolving cycles and assuming it is free to
overwrite because it can be rematerialized, the gap move resolver now
resolves cycles using swaps, possibly using a free register as above.

The algorithm is also changed to be simpler: a recursive depth-first
traversal of the move dependence graph.  It uses a list of moves to be
performed (because it mutates the moves themselves), but does not use
any auxiliary structure other than the control stack.  It does not
build up a separate list of scheduled moves to be interpreted by the
code generate, but emits code on the fly.

Review URL: http://codereview.chromium.org/6263005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoPrepare push to trunk. We are now working in 3.0.9.
sgjesse@chromium.org [Mon, 17 Jan 2011 10:38:47 +0000 (10:38 +0000)]
Prepare push to trunk. We are now working in 3.0.9.
Review URL: http://codereview.chromium.org/6354006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6343 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoRemove unnecessary recording of temp operands in the register allocator.
fschneider@chromium.org [Mon, 17 Jan 2011 10:08:58 +0000 (10:08 +0000)]
Remove unnecessary recording of temp operands in the register allocator.

When processing register contraints we used to add writable input operands
also as temp operands to the same instruction.

This does not seem necessary since we create a fresh virtual register
for writable inputs and insert a definition in the gap before the instruction.

Review URL: http://codereview.chromium.org/6350002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6342 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoMake invalid break/continue statements an early syntax error.
lrn@chromium.org [Mon, 17 Jan 2011 09:36:10 +0000 (09:36 +0000)]
Make invalid break/continue statements an early syntax error.

Previously we delayed the throwing of syntax errors until runtime, so
unreachable errors didn't get reported.
To match a change in JSC, we now stop parsing and report the error immediately.

BUG=69736
TEST=

Review URL: http://codereview.chromium.org/6355006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6341 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoMake closures optimizable by Crankshaft compiler.
antonm@chromium.org [Mon, 17 Jan 2011 08:11:03 +0000 (08:11 +0000)]
Make closures optimizable by Crankshaft compiler.

Currently only closures which only read from the context are supported.

Review URL: http://codereview.chromium.org/5753005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6340 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoLanding for Martyn Capewell.
ager@chromium.org [Mon, 17 Jan 2011 07:26:36 +0000 (07:26 +0000)]
Landing for Martyn Capewell.

ARM: Implement DoInteger32ToDouble in lithium codegen. Clean up
temporary register use.

Code review URL: http://codereview.chromium.org/6257003/

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

13 years agoRelax verification of JSFunction result caches.
antonm@chromium.org [Mon, 17 Jan 2011 07:03:19 +0000 (07:03 +0000)]
Relax verification of JSFunction result caches.

As invocation of a functin may trigger GC and hence clear all the caches,
it's hard to ensure previous invariants.

Current invariant is both a key and a value should be the holes or not holes.

Review URL: http://codereview.chromium.org/6309004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6338 ce2b1a6d-e550-0410-aec6-3dcde31c8c00