Commit Graph

4624 Commits

Author SHA1 Message Date
kmillikin@chromium.org
a1a46fb1ce 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
2011-01-26 13:37:51 +00:00
whesse@chromium.org
cd935a417b 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
2011-01-26 13:24:19 +00:00
sgjesse@chromium.org
9d463bd6a1 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
2011-01-26 12:31:35 +00:00
kmillikin@chromium.org
97f09782fa 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
2011-01-26 10:25:43 +00:00
sgjesse@chromium.org
26a8dc3818 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
2011-01-26 09:52:25 +00:00
ager@chromium.org
0e183035a2 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
2011-01-26 08:32:54 +00:00
erik.corry@gmail.com
591eb3f406 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
2011-01-26 08:12:56 +00:00
fschneider@chromium.org
1c4dfa30fa 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
2011-01-26 08:03:48 +00:00
sgjesse@chromium.org
0282f707af 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
2011-01-26 08:00:51 +00:00
sgjesse@chromium.org
06515b6f1b 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
2011-01-26 07:44:45 +00:00
sgjesse@chromium.org
12c74ba0c6 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
2011-01-26 07:41:02 +00:00
mmaly@chromium.org
2b47762e3a 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
2011-01-25 18:42:35 +00:00
mmaly@chromium.org
f5a2860534 Strict mode parameter validation.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 17:21:45 +00:00
whesse@chromium.org
948265619b 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
2011-01-25 16:37:18 +00:00
vitalyr@chromium.org
76483f871b 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
2011-01-25 15:51:10 +00:00
sgjesse@chromium.org
99a5b9f713 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
2011-01-25 14:52:35 +00:00
lrn@chromium.org
1494beed42 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
2011-01-25 14:03:20 +00:00
ager@chromium.org
d57f91aa15 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
2011-01-25 13:59:23 +00:00
kmillikin@chromium.org
013860d42e 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
2011-01-25 13:01:45 +00:00
sgjesse@chromium.org
a6a80b9121 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
2011-01-25 12:59:43 +00:00
whesse@chromium.org
4c9254c054 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
2011-01-25 12:50:18 +00:00
sgjesse@chromium.org
c5e4800963 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
2011-01-25 12:35:06 +00:00
sgjesse@chromium.org
63378e2e5d 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
2011-01-25 12:28:45 +00:00
vitalyr@chromium.org
331b482332 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
2011-01-25 12:21:03 +00:00
ricow@chromium.org
2a741d4946 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
2011-01-25 12:17:02 +00:00
sgjesse@chromium.org
17cb50b926 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
2011-01-25 12:14:56 +00:00
ricow@chromium.org
6c800fa6fd 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
2011-01-25 11:33:03 +00:00
lrn@chromium.org
43d7951677 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
2011-01-25 11:30:47 +00:00
fschneider@chromium.org
2444e3f247 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
2011-01-25 10:35:57 +00:00
whesse@chromium.org
136db7b861 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
2011-01-25 10:10:36 +00:00
ricow@chromium.org
cadb9cb635 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
2011-01-25 08:59:16 +00:00
ager@chromium.org
d69ef26f7d 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
2011-01-25 08:48:59 +00:00
ricow@chromium.org
d5cab38a33 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
2011-01-25 07:57:56 +00:00
sgjesse@chromium.org
161d631b5e 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
2011-01-25 07:49:39 +00:00
lrn@chromium.org
2e8b8d3ddf 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
2011-01-25 07:48:19 +00:00
mmaly@chromium.org
8d79f3a788 Strict mode octal literals.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6446 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-24 18:13:18 +00:00
ager@chromium.org
4c8fbaffa1 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
2011-01-24 14:54:45 +00:00
kmillikin@chromium.org
9c2d52eb0e 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
2011-01-24 14:03:30 +00:00
fschneider@chromium.org
811e778592 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
2011-01-24 13:29:39 +00:00
ager@chromium.org
883a56717d 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
2011-01-24 12:28:38 +00:00
vegorov@chromium.org
3650601588 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
2011-01-24 12:01:42 +00:00
fschneider@chromium.org
672f5ffab6 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
2011-01-24 09:43:14 +00:00
ager@chromium.org
b5151d118d 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
2011-01-24 07:59:40 +00:00
ricow@chromium.org
8a1416c78d 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
2011-01-24 07:56:57 +00:00
ager@chromium.org
73e8bc9e1a 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
2011-01-24 06:54:51 +00:00
kbr@chromium.org
cbc1c0fca6 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
2011-01-21 23:58:00 +00:00
ager@chromium.org
bb9c9fe92c 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
2011-01-21 14:11:35 +00:00
ager@chromium.org
ca14680556 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
2011-01-21 11:44:29 +00:00
vegorov@chromium.org
fd250a2244 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
2011-01-21 11:36:19 +00:00
kmillikin@chromium.org
8a9eeaf8da 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
2011-01-21 11:28:35 +00:00
fschneider@chromium.org
c630134ed2 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
2011-01-21 10:31:28 +00:00
vitalyr@chromium.org
7d96f2d40f 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
2011-01-21 08:30:13 +00:00
mmaly@chromium.org
4cb51b51e6 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
2011-01-20 18:51:47 +00:00
karlklose@chromium.org
f914324293 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
2011-01-20 17:42:29 +00:00
fschneider@chromium.org
5b2dff9806 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
2011-01-20 14:37:28 +00:00
ager@chromium.org
49d646b14c 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
2011-01-20 14:20:54 +00:00
kmillikin@chromium.org
6b89b5975f 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
2011-01-20 12:58:57 +00:00
kmillikin@chromium.org
3d15b43393 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
2011-01-20 12:56:34 +00:00
fschneider@chromium.org
89e74000a0 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
2011-01-20 12:47:22 +00:00
kmillikin@chromium.org
7f43cf0539 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
2011-01-20 12:32:43 +00:00
sgjesse@chromium.org
198bcbaa13 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
2011-01-20 08:38:01 +00:00
sgjesse@chromium.org
4653cc0aff 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
2011-01-20 08:21:40 +00:00
sgjesse@chromium.org
e528223fe2 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
2011-01-20 08:11:53 +00:00
ager@chromium.org
1c2fddb4c8 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
2011-01-20 08:08:36 +00:00
vitalyr@chromium.org
b4ff318e4b 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
2011-01-19 20:05:22 +00:00
ager@chromium.org
f6e177f075 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
2011-01-19 15:39:40 +00:00
kmillikin@chromium.org
70910af7a0 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
2011-01-19 15:26:54 +00:00
sgjesse@chromium.org
3ff8e4d3fa 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
2011-01-19 14:53:38 +00:00
mikhail.naganov@gmail.com
0f1a2bda1a Fix Linux x64 compilation
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 14:51:01 +00:00
mikhail.naganov@gmail.com
7984684ec9 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
2011-01-19 14:28:15 +00:00
fschneider@chromium.org
ac0b1ded7b 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
2011-01-19 13:55:56 +00:00
lrn@chromium.org
93a0b80609 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
2011-01-19 13:52:08 +00:00
ager@chromium.org
56073b733f 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
2011-01-19 13:04:21 +00:00
ager@chromium.org
fb43b16e2b 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
2011-01-19 11:56:32 +00:00
vegorov@chromium.org
1db0a6a000 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
2011-01-19 11:42:43 +00:00
ager@chromium.org
e65647eafc 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
2011-01-19 11:35:41 +00:00
mikhail.naganov@gmail.com
53cbbe4a23 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
2011-01-19 11:20:10 +00:00
antonm@chromium.org
b0abe13ed2 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
2011-01-19 11:16:23 +00:00
mikhail.naganov@gmail.com
890a0f6b52 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
2011-01-19 10:48:06 +00:00
lrn@chromium.org
e66ceb9079 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
2011-01-19 10:17:18 +00:00
erik.corry@gmail.com
8d3b675586 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
2011-01-19 09:42:17 +00:00
sgjesse@chromium.org
7d4e4a325b 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
2011-01-19 08:34:24 +00:00
ager@chromium.org
6b4d29766c 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
2011-01-19 08:20:42 +00:00
antonm@chromium.org
49144ee6b6 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
2011-01-19 08:16:17 +00:00
sgjesse@chromium.org
9e23f65bec 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
2011-01-19 08:04:48 +00:00
ager@chromium.org
9ab1970860 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
2011-01-19 07:18:04 +00:00
mmaly@chromium.org
d6f88b6688 Revert strict mode (Mozilla test failure).
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6374 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-18 23:01:50 +00:00
kbr@chromium.org
27f0ae7aad 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
2011-01-18 21:51:50 +00:00
vitalyr@chromium.org
11a4cb5718 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
2011-01-18 16:54:48 +00:00
mmaly@chromium.org
b4c88d5de4 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
2011-01-18 16:43:53 +00:00
vegorov@chromium.org
80b7a0e164 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
2011-01-18 16:16:00 +00:00
vegorov@chromium.org
3003b2156b 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
2011-01-18 16:11:01 +00:00
whesse@chromium.org
9cee28138a 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
2011-01-18 14:32:13 +00:00
fschneider@chromium.org
2ecfe94997 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
2011-01-18 14:25:05 +00:00
antonm@chromium.org
ec16aa9a17 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
2011-01-18 13:59:49 +00:00
vitalyr@chromium.org
c919bb7d4a 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
2011-01-18 13:43:48 +00:00
ager@chromium.org
2729e09caf 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
2011-01-18 11:31:17 +00:00
lrn@chromium.org
94a0444b7b 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
2011-01-18 10:00:36 +00:00
ager@chromium.org
e61725c525 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
2011-01-18 07:25:05 +00:00
antonm@chromium.org
4b6981f74d 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
2011-01-17 16:54:56 +00:00
lrn@chromium.org
d2df943bde 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
2011-01-17 13:51:59 +00:00
ricow@chromium.org
3d245133a3 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
2011-01-17 13:11:39 +00:00
fschneider@chromium.org
e7610a3e14 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
2011-01-17 12:54:52 +00:00
ager@chromium.org
7095d1ec26 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
2011-01-17 12:52:06 +00:00
ager@chromium.org
ac320205b9 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
2011-01-17 12:45:39 +00:00
fschneider@chromium.org
87e82b0452 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
2011-01-17 12:22:31 +00:00
kmillikin@chromium.org
437914da90 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
2011-01-17 11:25:36 +00:00
sgjesse@chromium.org
3342871af5 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
2011-01-17 10:38:47 +00:00
fschneider@chromium.org
3ff2cebd96 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
2011-01-17 10:08:58 +00:00
lrn@chromium.org
f09705ab9b 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
2011-01-17 09:36:10 +00:00
antonm@chromium.org
fae90d4f32 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
2011-01-17 08:11:03 +00:00
ager@chromium.org
0819ac76f6 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
2011-01-17 07:26:36 +00:00
antonm@chromium.org
3afbf69f53 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
2011-01-17 07:03:19 +00:00
sandholm@chromium.org
dd242e3fe1 Optimize JSON stringify by allowing QuoteJSONString to prefix with a comma.
Review URL: http://codereview.chromium.org/6335004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6337 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-16 21:29:32 +00:00
whesse@chromium.org
762f9cf72c Fix typo that breaks compilation on x64.
Review URL: http://codereview.chromium.org/6342003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6336 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 16:15:40 +00:00
whesse@chromium.org
5187615943 Fix accidental change to ia32 in r6329.
Review URL: http://codereview.chromium.org/6362001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 16:10:00 +00:00
sgjesse@chromium.org
da1f6926e1 Avoid trashing the FPSCR when calculating Math.floor
The restoring of FPSCR could restore a random value as the restore point could be jumped to from before FPSCR was loaded.
Review URL: http://codereview.chromium.org/6344002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 15:39:18 +00:00
karlklose@chromium.org
4e274ca11d Fix compilation failure on ia32 and x64.
TBR=ager

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6331 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 15:24:41 +00:00
karlklose@chromium.org
d2d81743c9 Disable DivI and ModI again until the bug with SafepointWithRegistersAndDoubles is solved.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 15:08:44 +00:00
whesse@chromium.org
2810c2c044 X64 Crankshaft: Add DoParallelMove to x64
Review URL: http://codereview.chromium.org/6290004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6329 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 15:07:44 +00:00
ager@chromium.org
fd3edaf074 Fix name of the toString method on error objects. Bug caught by layout tests.
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/6258004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 14:51:19 +00:00
lrn@chromium.org
2b4767b584 X64: Fix allocated register name table.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6325 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 14:03:05 +00:00
lrn@chromium.org
9f5c1bfba1 X64 Crnakshaft: Added GeneratePrologue implementation.
Review URL: http://codereview.chromium.org/6326003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6324 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 13:16:48 +00:00
ager@chromium.org
c1306244a6 Make the 'name' property on error prototypes read-only and dont-delete
to avoid leaking of error objects to accessor methods when formatting
error messages internally.

Also, do not call overwritten toString methods on error objects when
formatting messages internally.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6322 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 12:51:04 +00:00
kmillikin@chromium.org
199846b786 Move class LGapResolver to the platform specific backend implementation files.
This change is in preparation for introducing platform-specific strategies
for resolving parallel moves.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6321 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 12:50:03 +00:00
ricow@chromium.org
8a3bd712ad Fix win64 build by using int instead of size_t for position in StringBuilder
Review URL: http://codereview.chromium.org/6353002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6313 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 11:54:38 +00:00
karlklose@chromium.org
0e26f42bc1 ARM: Implement DoModI stub in the lithium code generator.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6312 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 11:48:43 +00:00
ricow@chromium.org
7954752479 Implement DoStackCheck in x64 crankshaft
Review URL: http://codereview.chromium.org/6257002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 11:35:02 +00:00
whesse@chromium.org
962d7019aa Speed up FastAsciiArrayJoin on ia32 by improving hand-written assembly code.
Review URL: http://codereview.chromium.org/6148007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6310 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 10:57:49 +00:00
lrn@chromium.org
3800b24f69 Don't lazily compile functions that are immediately receded by '('.
We heuristically expect those functions to be called immediately.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6309 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 10:50:13 +00:00
lrn@chromium.org
2cccc4009f Fix bug when the scanner does a pushback at the end of input.
We don't advance the input cursor past the end of input, so we shouldn't
decrease it when we pushback the kEndOfInput marker.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 10:49:18 +00:00
ricow@chromium.org
463d722a8b Fix presubmit
Review URL: http://codereview.chromium.org/6326002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 10:33:41 +00:00
ricow@chromium.org
5e557d3624 Add implementations of some more x64 lithium methods.
This puts us very close to being able to compile the empty function.

This changes only has a small number of 64 bit specific assembler instructions.

The remaining changes are much more platform specific and will go in another change.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 10:27:25 +00:00
fschneider@chromium.org
9b7525fa3e Fix number of result operands for LThrow.
This instruction does not produce a result. We don't need a result
LOperand for it.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 09:45:30 +00:00
karlklose@chromium.org
da03f275d2 ARM: Implement DoDivI in the lithium code generator.
This change provides fast code for a few special cases and calls the GenericBinaryOpStub for the rest.

It also changes the register allocation in the generation of lithium instructions to use fixed registers that are compatible with the generic stub. This allocation can be change once we use a more flexible implementation.

Finally, this change provides infrastructure to save double registers at safepoints, which is need to call the stub in deferred code.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6304 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 08:49:52 +00:00
podivilov@chromium.org
3a167b1fbe Add function for setting breakpoint by scriptId and position to debugger script
Review URL: http://codereview.chromium.org/6301001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6302 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 17:32:10 +00:00
antonm@chromium.org
8805509f28 Wrap external pointers more carefully.
On 32-bit platforms any pointer with 0 as LSB can be wrapped into Smi.  However, on 64-bit
platforms it's currently not the case as x64 Smis must have 0s in lower 32 bit word.
Even worse, macroassembler Move instruction will try to fetch integer value from Smi
and will shift by 32 bits to the right rendering stored pointer incorrect.

BUG=v8:1037

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 15:56:33 +00:00
vitalyr@chromium.org
ac9b035a45 Expose receiver check type in call type feedback.
This a preparatory step to support fast function calls on primitive
values. Not really used yet in hydrogen.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 14:16:08 +00:00
ricow@chromium.org
4ea3e060bb Fix the xcode build by not including x64 specific code when generating
32 bit code.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6299 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 14:10:26 +00:00
ager@chromium.org
0ec74d5829 Landing for Rodolph Perfetta.
Implementing Math.floor and Math.sqrt for crankshaft.

BUG=none
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6298 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 12:21:47 +00:00
lrn@chromium.org
ba023c5405 X64 Crankshaft: Ported lots of boilerplate code.
Small tweaks to make X64 compliant.
A few UNIMPLEMENTED left, but most empty functions call Abort to bail out.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6297 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 10:04:02 +00:00
ager@chromium.org
0b047d7981 Landing for cira@chromium.org
Adding gyp file for all of the experimental extensions (currently i18n-extension only).
Embedder should define icu_src_path to point to their copy of ICU library.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6296 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 09:44:23 +00:00
sgjesse@chromium.org
33006e3d70 Revert r6284 and r6283 as they caused the fuzzer tests to fail.
Review URL: http://codereview.chromium.org/6295002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6292 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 08:24:19 +00:00
ager@chromium.org
48acf77389 Do not allow accessors to intercept getting/setting properties on
error objects under construction and string conversions.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6291 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 06:56:54 +00:00
vitalyr@chromium.org
9e204dd5df Simplify CheckPrototypeMaps.
This instruction only depends on the prototype and the holder and can
completely ignore the receiver and its map.

This change also fixes a small bug on arm where a cell was loaded
instead of the prototype from new space.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 00:34:08 +00:00
fschneider@chromium.org
ad58227fcf Use hydrogen accessor in a few more places to save space in the lithium IR.
Review URL: http://codereview.chromium.org/6207007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6288 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 15:46:39 +00:00
sandholm@chromium.org
5be396cb30 Optimize JSON stringify for arrays.
Review URL: http://codereview.chromium.org/6164004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6286 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 14:16:19 +00:00
vitalyr@chromium.org
e2f8c938c3 Allow arguments in safepoints with registers.
This should enable calling runtime functions with arguments from
deferred lithium code.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6285 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 14:14:14 +00:00
sgjesse@chromium.org
855ffcd15b Fix bug in r6283
Make sure that arguments are pushed only once before calling runtime

TEST=11 sputnik tests
Review URL: http://codereview.chromium.org/6151009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6284 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 14:00:19 +00:00
sgjesse@chromium.org
1db3db1784 IA32: Refactor to avoid duplicate code.
Review URL: http://codereview.chromium.org/6226006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6283 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 12:52:15 +00:00
erik.corry@gmail.com
7846721d96 Fixes needed to compile on gcc-4.4.1 on ARM. It is still necessary
to add -fno-strict-aliasing.
Review URL: http://codereview.chromium.org/6123007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6281 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 11:56:41 +00:00
sgjesse@chromium.org
6a4df3791e IA32: Remove an invalid assert
Review URL: http://codereview.chromium.org/6129005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6280 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 11:53:30 +00:00
ager@chromium.org
0b9336ac8b Landing for Martin Maly.
Fix CalculateEmitStore HashMap use. 

The hash maps are setup to store strings or smis but instead Literal is being in them. It seems to only work by accident. 


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 09:29:20 +00:00
sgjesse@chromium.org
8f54606109 ARM: Always use the overflow flag to check for NaNs participating in a floating point compare.
Looks as if we don't need to use the vcmpe instruction instead of the vcmp, as the overflow FPSCR bit suits our purpose. If we at some point need vcmpe lte's implement it as a separate instruction.
Review URL: http://codereview.chromium.org/6197003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6277 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 07:47:13 +00:00
whesse@chromium.org
b6ebcd58c6 Crankshaft: Move LEnvironment and LPointerMap classes to platform-independent lithium.h. Move WriteTranslation method from LEnvironment class to LCodeGen class.
Review URL: http://codereview.chromium.org/6142011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6276 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 15:51:08 +00:00
fschneider@chromium.org
b85538bc16 Introduce two more template parameter for Lithium instructions for input and temp operands.
Each LInstruction is now a subclass of LTemplateInstruction<R, I, T>

where R is number of outputs, I number of inputs and T number of temps.

This change only actually uses the parameter I for input operands. 
Since the parameter T for temps is 0, it incurs no extra cost. 

A separate change will introduce using the temps parameter.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6275 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 15:47:34 +00:00
peter.rybin@gmail.com
7c468e53c4 Add fine-grained diff implementation to LiveEdit engine.
BUG=1013
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6274 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 14:55:47 +00:00
fschneider@chromium.org
c1d4d89a31 Remove unused Temp() function form LChunkBuilder.
Review URL: http://codereview.chromium.org/6217003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6273 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 14:38:13 +00:00
karlklose@chromium.org
43b0399505 Implement DoApplyArguments.
ARM: Implement DoApplyArguments in the lithium code generator.

This patch also introduces an optional SafepointGenerator argument to InvokeFunction, InvokeCode and InvokeProloque.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6272 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 14:11:03 +00:00
ager@chromium.org
59c158e43f ARM: Implement ClassOf in the lithium arm backend.
Review URL: http://codereview.chromium.org/6201004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6271 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 14:01:53 +00:00
kmillikin@chromium.org
a7c743d3ac Reuse the gap move resolver.
Rather than allocating a fresh gap move resolver for every parallel
move, use a single one per Lithium code generator.  This avoids always
reallocating the temporary zone-allocated lists used by the gap move
resolver.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 13:50:12 +00:00
vitalyr@chromium.org
404fbb5b0b SSE2 truncating double-to-i.
Review URL: http://codereview.chromium.org/6049008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6269 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 13:48:49 +00:00
sgjesse@chromium.org
c4550bc6d5 ARM: Add instructions VFPCompareAndSetFlags and VFPCompareAndLoadFlags to macro assembler
Also removed the SBit from the vcmp instruction as it is not part of the instruction.
Review URL: http://codereview.chromium.org/6117003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:45:25 +00:00
mikhail.naganov@gmail.com
ecc00e7800 Visit all roots in the UnreachableObjectsFilter.
If an object is only referenced from DOM wrappers, it can only
be seen if all roots are visited.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6267 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:38:19 +00:00
mikhail.naganov@gmail.com
6f72caf92d Add reporting of JS heap size limit to GetHeapStatistics.
I found it useful to know inside the heap profiler to avoid
crashes due to heap overflow.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6266 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:36:09 +00:00
ager@chromium.org
a314fa4581 ARM: Add deferred stack overflow checks to goto code generation in ARM
lithium when needed.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6265 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:32:00 +00:00
whesse@chromium.org
5d3432b530 Add source file lithium-codegen-x64.cc. Add class declarations to lithium-codegen-x64.h.
Review URL: http://codereview.chromium.org/6135008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:24:18 +00:00
fschneider@chromium.org
6b00bdf2f2 Fix ARM debug build by moving an assert.
Review URL: http://codereview.chromium.org/6127005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:20:22 +00:00
fschneider@chromium.org
9cace6b5f0 Use HIR accessor for CheckPrototypeMaps to remove the duplicate members in lithium.
Review URL: http://codereview.chromium.org/6221003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6262 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:10:11 +00:00
ager@chromium.org
b3d4ea357c ARM: use existing transcendental cache stub for tagged inputs.
Review URL: http://codereview.chromium.org/6167004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6261 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:54:37 +00:00
erik.corry@gmail.com
544d941b09 Fix lint
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6260 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:47:30 +00:00
erik.corry@gmail.com
ff8ed6b7b6 Fix Solaris build. Patch from Ryan Dahl. See http://codereview.chromium.org/5968004/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6259 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:44:16 +00:00
fschneider@chromium.org
b9f5ab9ef1 Remove duplicate members from some LIR instruction by using the HIR accessors.
Remove unused LOperands from keyed-loads. We do not have multiple representations
for load instructions anymore.

Correct number of output operands as for a couple of instructions form 1 to 0
because they do not produce a result (e.g. PushArgument)

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:41:01 +00:00
whesse@chromium.org
14cb39e543 X64 Crankshaft: Add LTemplatedInstruction and some derived classes to lithium-x64.cc.
Review URL: http://codereview.chromium.org/6128008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6257 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:33:52 +00:00
antonm@chromium.org
a0bc9eb040 Add more bailouts for Array.slice over arguments.
Unfortunately, arguments is pretty much the normal JS object.  For now
I am adding more sanity checks (in hope that typically arguments
list is rather short.)  However it probably requires more systematic
treatment, for example, we could optimistically copy elements until
we meet first hole and in this case resort to JS builtin.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6256 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:23:40 +00:00
sgjesse@chromium.org
bb0e35929f Fix presubmit error - really
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/6205003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6254 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 21:10:51 +00:00
sgjesse@chromium.org
d04c75c685 Fix presubmit error
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/6206003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6253 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 21:03:48 +00:00
sgjesse@chromium.org
bd208976d7 Update the bits reserved for the gap size in the depotimization table
On ARM the a constant pool can be emitted during the gap code generation which leads to larger gap code size

BUG=v8:1018
Review URL: http://codereview.chromium.org/6125004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 19:43:38 +00:00
kmillikin@chromium.org
32254e5324 Change the hydrogen timing data to include zone allocation.
Review URL: http://codereview.chromium.org/6190002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6249 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 14:16:47 +00:00
ager@chromium.org
cd4ae721e2 ARM: Implement delete operation in lithium codegen.
I'm using the post call generator for the macro assembler
InvokeBuiltin call to be consistent with the ia32 version. It only
generates one call, but using the post call generator it should be
easier to catch if we change that at some point.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 12:24:19 +00:00
fschneider@chromium.org
f89ce8159a Split LInstruction into multiple variant to make our LIR more compact.
This change introduces LTemplateInstruction which is a specialized version
of LInstruction and takes one template parameter to indicate whether the
instruction produces a result operand.

All instruction that do not have a result inherit from LTemplateInstruction<0>.
Instructions that have a result operand from LTemplateInstruction<1>

All the Define* function only operate on instructions with a result.

For this to work I also refactored the places where we do 

  LInstruction* result = new Lxyy

into

  Lxyz* result = new Lxyz 



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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 12:19:15 +00:00
sandholm@chromium.org
c260e4f731 Simplify Join and speedup joining arrays of numbers.
Review URL: http://codereview.chromium.org/6173004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6243 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 11:44:54 +00:00
whesse@chromium.org
a139094016 Crankshaft: Move LParallelMove to lithium.h, add LGap to lithium-x64.h.
Review URL: http://codereview.chromium.org/6132002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 11:31:21 +00:00
kmillikin@chromium.org
3d4395bab4 Prepare push to trunk. Now working on version 3.0.8.
Review URL: http://codereview.chromium.org/6152002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6237 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 08:05:34 +00:00
ager@chromium.org
5e3381c9c7 Landing for Martyn Capewell.
ARM: Fix comparison of NaN values.

Enables the cumulative exception flag when comparing values, and uses it to
detect NaN results.

BUG=1023
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6236 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 08:04:30 +00:00
sandholm@chromium.org
6dd671d6c2 Make better use of the %_FastAsciiArrayJoin function.
Review URL: http://codereview.chromium.org/6100005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6235 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 08:00:48 +00:00
ager@chromium.org
d9e5078bbc Landing for Martin Maly.
Implement DoCallKeyed for arm lithium compiler.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6234 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 07:59:13 +00:00
ricow@chromium.org
cd6bd8c4fa Revert 6220 (generic descriptor support in Object.defineOwnProperty)
This change caused a webkit failure in http/tests/security/xss-DENIED-defineProperty.html.

 I will look into this and reapply when I find a solution.




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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 07:20:54 +00:00
sgjesse@chromium.org
dae44fd3ee ARM: Fix lithium codegeneration of TypeofIs
The previous implementation was incomplete and wrong.

TBR=karlklose@chromium.org
Review URL: http://codereview.chromium.org/6113003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6231 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 14:27:32 +00:00
sgjesse@chromium.org
97621e7e32 ARM: Implement lithium codegen for DoTypeof, DoTypeofIs and DoSmiUntag
Review URL: http://codereview.chromium.org/6174001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6227 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 13:44:05 +00:00
sandholm@chromium.org
ba4f9faec5 Aviod double checking IS_STRING when joining arrays.
Review URL: http://codereview.chromium.org/5977013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6226 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 13:21:34 +00:00
lrn@chromium.org
90fd0ee897 Change interpretation of malformed \c? escapes in RegExp to match JSC.
Review URL: http://codereview.chromium.org/6171001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6225 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 12:35:42 +00:00
karlklose@chromium.org
e74b0ae7db ARM: Support DoCallGlobal in lithium code generator.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 12:34:39 +00:00
whesse@chromium.org
7c94bf13b9 Create platform-independent lithium files, move LGapResolver and LGapNode there
Review URL: http://codereview.chromium.org/6121001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6221 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 11:49:22 +00:00
ricow@chromium.org
08cd803827 Landing for Peter Hallam
First cut at bug 992 

Fixes JS portion of DefineOwnProperty when there is 
an existing property and the new descriptor is generic. 

Makes code follow spec steps more closely. 

Fixes typo for check for unchanged enumerable in step 6. 

Adds regression test. 

Codereview url: http://codereview.chromium.org/6035014/




git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6220 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 11:49:09 +00:00
ricow@chromium.org
b02ff71824 Fix win64 build (int conversion)
Review URL: http://codereview.chromium.org/6083014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6219 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 10:51:44 +00:00
sgjesse@chromium.org
426f13e084 Fix GC issue in instanceof stub
The the call of the builtin in InstanceofStub was not correctly protected with an internal frame leading to the return address being handled as a pointer during GC.

Marked the Instanceof stub as allowing stub calls (the RecordWriteStub was removed some days ago).

This issue was not caught by the assertion designed for this when debug mode is run with --debug-code (which out tests always does) as generating code for Abort set the allow stub calls flag to true. This has been fixed by restoring the allow stub calls flag correctly.
Review URL: http://codereview.chromium.org/6097010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6218 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 10:37:26 +00:00
fschneider@chromium.org
bfecc95694 Revert r6194: Clean up code for type feedback a bit.
This causes a big performance regression. I'll investigate.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6217 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 10:36:27 +00:00
kmillikin@chromium.org
12b34fa927 Move IsArgumentsMarker from class MaybeObject to Object.
Since we never need to ask it of a MaybeObject, put it with the other
oddball testers in class Object for consistency.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6216 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 10:06:28 +00:00
whesse@chromium.org
f39ff5c679 X64 Crankshaft: Implement some methods in LInstruction, update mjsunit test expectations.
Review URL: http://codereview.chromium.org/6118002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6215 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 09:47:16 +00:00
sgjesse@chromium.org
a6c5fa6993 ARM implementations of LoadElements, LoadKeyedFastElement, StoreNamedField, StoreKeyedFastElement.
BUG=none
TEST=none

Patch by Martyn Capewell from ARM Ltd.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6214 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 07:33:46 +00:00
karlklose@chromium.org
1eb68a859f Fix presubmit (r6209).
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6213 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 16:20:45 +00:00
fschneider@chromium.org
5fbaece14c Use a separate marker value to allocate the arguments object on deoptimzation.
Before we used the hole value for this purpose, but this does not work once we
start using the hole value for other purposes in the optimizing compiler.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6210 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 15:53:56 +00:00
karlklose@chromium.org
d4bbad8e4e ARM: Support DoCheckInstanceType in lithium codegenerator.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6209 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 15:25:03 +00:00
kmillikin@chromium.org
8945e02d86 Fix disassembly comment for CallFunctionStub.
The comment was printing the entire minor key but labeling it with 'argc'.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6208 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 14:13:40 +00:00
karlklose@chromium.org
1152cab095 Use hydrogen accessor instead of copying members.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6206 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 14:02:46 +00:00
lrn@chromium.org
a50e69bda5 Avoid calling inherited setters when creating object literals and their boilerplates.
Fix issue 1015.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6205 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 14:00:50 +00:00
kmillikin@chromium.org
dde853a4ad Small change to stack checks in unoptimized code.
The stack checks include a loop nesting depth encoded in the code stream
after the call to the stack check stub.  Change the code to jump around this
instruction as well as the call when the stack check is OK.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6204 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 13:48:12 +00:00
whesse@chromium.org
2655060546 Fix errors in x64 crankshaft port, add failing tests to test expectations.
Review URL: http://codereview.chromium.org/6104004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 13:29:22 +00:00
sgjesse@chromium.org
7cc0667457 Fixed some tabs left in d8.js
TBR=mark.lam@palm.com
Review URL: http://codereview.chromium.org/6029011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6202 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 13:27:10 +00:00
sgjesse@chromium.org
2957881a26 Misc debugger enhancements and bug fixes.
1. Added gdb style debugger commands (and their shortcuts) for d8.
These include:
- s[tep] : step into the current statement.
- s[tep]i[n]: step into the current statement with the minimum step.
- n[ext] : step to the next statement.
- fin[ish] : step out of the current function.
- cond : setting conditions on breakpoints.
- d[elete] : deletes breakpoints.
- en[able]|dis[able]: enables/disables breakpoints including
exception breakpoints.
- ignore : ignores a breakpoint for a specified period.
- inf[o] ar[gs] : info on arguments of the current function.
- inf[o] lo[cals] : info on local vars of the current function.
- inf[o] br[eakpoints] : info on breakpoints.
- l[ist] : similar to source, but allows the user to continually
dump subsequent lines of source code either in the
forward or backward direction.
- quit / exit / disconnect : terminates the remote debugger
session.

NOTE: Active breakpoints will automatically be disabled when
the remote debugger detaches. This allows v8 to continue to
run without worrying about a loss of a debugger session.

2. Added support for breaking the debugger by simply typing ENTER.
The break command is now optional.

3. Once the debugger is broken, the user can now just type ENTER
to repeat the last command. This is useful to functionality that
needs to be invoked repeatedly e.g. step, list.

4. Added more verbose descriptions in d8's help.

5. Fixed a line and column number offset bug in the listing of breakpoint
line and column numbers.

6. Added a gc command to allow GCs to be requested from the debugger
interface. The plumbing for requesting different types of GCs is
there, but the underlying implementation currently only triggers a
full mark-compact GC. The command also returns the before and after
sizes of the heap.

7. Added trace json, and flags commands that are not published in help.
trace json is used for tracing the debugger packets send from and
received by d8. flags is for setting v8 flags. These are useful for
people debugging v8 itself, but not necessarily users of v8.

8. Added the ability to enable and disable break on all / uncaught
exceptions in to d8.

9. Added a fix to prevent the Debugger Agent from being re-instantiated
if one already exists.

10. Added the ability to filter results of the script command by matching
text or numbers on the results.

11. Added v8 flags to enable/disable the sending of debugger BeforeCompile,
AfterCompile, and ScriptCollected events.

12. Fixed some undefined value bugs that resulted in v8 or the debugger
failing.

13. Added a few minor WEBOS__ customizations (analogous to ANDROID
customizations).

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

Review URL: http://codereview.chromium.org/5980006
Review URL: http://codereview.chromium.org/6086010


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6200 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 13:14:32 +00:00
danno@chromium.org
90445b33a4 Implement DoFunctionLiteral on ARM.
Review URL: http://codereview.chromium.org/6112001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6199 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 12:53:59 +00:00
sgjesse@chromium.org
2b7596a516 Instanceof slow case bind is incorrect.
Currently, the bind for the slow label is after the pushing of the
args registers which renders the args pushing dead code because there
is a Ret preceeding it. The comments also imply that the arg pushing
should be part of the InvokeBuiltins tail call.

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

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6198 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 12:41:41 +00:00
sgjesse@chromium.org
68ddff5f90 ARM: Change a number of lithium instruction operands to be in registers
Using operands which could possible be in stack slots would require a load instruction anyway, so having the register allocator putting them into registers seems most logical.
Review URL: http://codereview.chromium.org/6046014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6196 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 12:21:06 +00:00
sgjesse@chromium.org
7c0c72eb2c ARM: Fix a bug in the lithium arguments support
Got the comparison wrong and fortot to actually set the flags.
Review URL: http://codereview.chromium.org/6085010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6195 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 10:56:23 +00:00
fschneider@chromium.org
35533bee36 Clean up code for type feedback a bit.
Remove unused functions and parameters and remove the parts of the
code that mention the old GenericBinaryOpStub. It is not used together
with Crankshaft and replaced with TypeRecordingBinaryOpStub.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6194 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 10:10:26 +00:00
ager@chromium.org
af09d94ecd ARM: support regexp literals in lithium-codegen-arm. Also, update
comment on the AllocateInNewSpace macroassembler method.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6192 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 08:56:29 +00:00
kmillikin@chromium.org
9a096e643a Fix an bug in deoptimization after polymorphic calls in effect contexts.
For polymorphic calls (also loads and stores) we construct a type switch
graph that has a basic block merging all the variants.  There is an
environment simulation before the goto at the end of all the predecessor
blocks.  This simulation is used to define the environment on entry to the
successor block, and captures the return value of the call.  In effect
contexts, this value should not be present in the environment.

The fix is to use the AST context to decide whether to have this value in
the join node's environment at all.

BUG=1014

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 07:38:19 +00:00
sgjesse@chromium.org
c26bd162f8 ARM: support arguments access in lithium-codegen-arm.
Review URL: http://codereview.chromium.org/5989013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6188 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 07:28:51 +00:00
whesse@chromium.org
0ba1623995 Add deoptimization support to full-codegen-x64.cc (insert PrepareForBailout in many places.)
Review URL: http://codereview.chromium.org/6031014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 17:09:24 +00:00
sgjesse@chromium.org
9bc3a16af0 Fix bug in instanceof stub
If the instanceof stub was requested to deliver true/false objects as the result instead of 0/1 then 0/1 was actually returned if the builtin INSTANCE_OF ended up being called. This is now fixed.

BUG=v8:1020
TEST=test/mjsunit/regress/regress-1020.js
Review URL: http://codereview.chromium.org/6014013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6185 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 14:19:12 +00:00
sgjesse@chromium.org
3c2c1d2113 Revert r6180 as it caused test failures
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/6080009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6183 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 14:03:38 +00:00
sandholm@chromium.org
e90249bde1 Avoid double checking for IS_NUMBER by calling NonNumToNum instead of ToNumber
when the argument is known not to be a number.  
Review URL: http://codereview.chromium.org/6061008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6181 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 13:52:00 +00:00
sgjesse@chromium.org
8669f630c0 Misc debugger enhancements and bug fixes.
1. Added gdb style debugger commands (and their shortcuts) for d8.
These include:
- s[tep] : step into the current statement.
- s[tep]i[n]: step into the current statement with the minimum step.
- n[ext] : step to the next statement.
- fin[ish] : step out of the current function.
- cond : setting conditions on breakpoints.
- d[elete] : deletes breakpoints.
- en[able]|dis[able]: enables/disables breakpoints including
exception breakpoints.
- ignore : ignores a breakpoint for a specified period.
- inf[o] ar[gs] : info on arguments of the current function.
- inf[o] lo[cals] : info on local vars of the current function.
- inf[o] br[eakpoints] : info on breakpoints.
- l[ist] : similar to source, but allows the user to continually
dump subsequent lines of source code either in the
forward or backward direction.
- quit / exit / disconnect : terminates the remote debugger
session.

NOTE: Active breakpoints will automatically be disabled when
the remote debugger detaches. This allows v8 to continue to
run without worrying about a loss of a debugger session.

2. Added support for breaking the debugger by simply typing ENTER.
The break command is now optional.

3. Once the debugger is broken, the user can now just type ENTER
to repeat the last command. This is useful to functionality that
needs to be invoked repeatedly e.g. step, list.

4. Added more verbose descriptions in d8's help.

5. Fixed a line and column number offset bug in the listing of breakpoint
line and column numbers.

6. Added a gc command to allow GCs to be requested from the debugger
interface. The plumbing for requesting different types of GCs is
there, but the underlying implementation currently only triggers a
full mark-compact GC. The command also returns the before and after
sizes of the heap.

7. Added trace json, and flags commands that are not published in help.
trace json is used for tracing the debugger packets send from and
received by d8. flags is for setting v8 flags. These are useful for
people debugging v8 itself, but not necessarily users of v8.

8. Added the ability to enable and disable break on all / uncaught
exceptions in to d8.

9. Added a fix to prevent the Debugger Agent from being re-instantiated
if one already exists.

10. Added the ability to filter results of the script command by matching
text or numbers on the results.

11. Added v8 flags to enable/disable the sending of debugger BeforeCompile,
AfterCompile, and ScriptCollected events.

12. Fixed some undefined value bugs that resulted in v8 or the debugger
failing.

13. Added a few minor WEBOS__ customizations (analogous to ANDROID
customizations).

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

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6180 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 13:47:53 +00:00
sgjesse@chromium.org
344e534bde Change a static_cast to BitCast
Hopefuly this will make the Win32 builder happy

TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/6038007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 13:03:21 +00:00
whesse@chromium.org
3055ca216d Add private members to lithium classes on X64. Add implementation file lithium-x64.cc.
Review URL: http://codereview.chromium.org/6015014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6178 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 12:31:31 +00:00
whesse@chromium.org
7cdd2f6494 Add partially-implemented TypeRecordingBinaryOpStub to x64 platform.
Review URL: http://codereview.chromium.org/6084010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6177 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 12:28:47 +00:00
sgjesse@chromium.org
f5fb75ce09 Fix comparison bug on ARM.
Retrieves the result of VFP comparison from the VFP status register.

BUG=none
TEST=none

Patch by Martyn Capewell from ARM Ltd.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6176 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 12:06:32 +00:00
sgjesse@chromium.org
0cd558a355 Fix the build breakge on x64 and ARM after r6173
The instanceof changes was not fully ported to x64 and ARM.
Review URL: http://codereview.chromium.org/6031013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6175 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 12:01:53 +00:00
fschneider@chromium.org
83c7c699eb Do not transform a/b into a * (1/b) in the parser for integer constants.
Strength reduction should be performed at a later stage. This
change avoid going to a double representation the case of
integer division.


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 11:25:42 +00:00
sgjesse@chromium.org
7311e10fdb Optimize instanceof further
If the instance of is performed against what is beliwed to be a constant global function inline the instance of check and have the call to the instanceof stub in deferred code. The inlined check will be patched by the instanceof stub when called from deferred code. This is indicated by the lithium instruction LInstanceOfKnownGlobal.

To help the patching the delta from the return address to the patch site is placed just below the return address in the edi slot of the pushad/popad ares. This is safe because the edi register (which is pushed last) is a temporary for the lithium instruction.

As the instanceof stub can call other JavaScript an additional marking for saving all double registers have been added.

Also tweaked the instanceof stub to produce true/false objects instead of 0/1 for the case with deferred code.
Review URL: http://codereview.chromium.org/5990005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6173 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 11:17:37 +00:00
lrn@chromium.org
034f37efb5 Prepare push to trunk. Now working on version 3.0.7.
Review URL: http://codereview.chromium.org/6006011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6167 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 09:11:20 +00:00
danno@chromium.org
498841c743 Implement ARM lithium support for ObjectLiteral.
Review URL: http://codereview.chromium.org/6099006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-05 09:04:06 +00:00
danno@chromium.org
d44f3a0223 Implement Lithium ARM support for ArrayLiteral.
TBR=kasperl@chromium.org
Review URL: http://codereview.chromium.org/5988008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6165 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 14:48:25 +00:00
sgjesse@chromium.org
806368bc92 Fix presumbit error
TBR=karlklose@chromium.org
Review URL: http://codereview.chromium.org/6046012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6164 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 14:35:34 +00:00
fschneider@chromium.org
5bd44d212a Remove unused policy from register allocator.
DefineSameAsAny is never used and currently does exactly the 
same as DefineSameAsFirst.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6163 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 14:35:01 +00:00
sgjesse@chromium.org
71d863e5de Set a fixed scratch register for ARM code generation
r9 is now set as a fixed scratch register for ARM code generation. removed some unneeded allocation of temporary registers and use the scratch register instead.
Review URL: http://codereview.chromium.org/5976014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 14:32:54 +00:00
ricow@chromium.org
aa396c5779 Allow getters and setters on JSArray elements.
This fixes bug 900 

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6158 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 13:59:34 +00:00
sgjesse@chromium.org
394f240e99 Fix the Mac OS debug build
Review URL: http://codereview.chromium.org/6046010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6157 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 13:23:33 +00:00
karlklose@chromium.org
20c858d514 First part of lithium ARM port.
Implement LoadNamedField, CallConstantFunction, CmpMapAndBranch, JSArrayLength, BoundsCheck, IsNull, CallFunction, and CallStub in the ARM lithium codegenerator.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6155 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 13:02:51 +00:00
lrn@chromium.org
e7ecb74b8a Don't let JSON parsed objects hit inherited setters.
Review URL: http://codereview.chromium.org/6101001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 12:19:55 +00:00
sgjesse@chromium.org
9af48317d5 Fix Windows compilation
Use strncpy_s instaad of strncpy to avoid warning.
Review URL: http://codereview.chromium.org/6056006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6151 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 12:11:01 +00:00
lrn@chromium.org
351f80adee Fix compile-problem in (currently) unused stand-alone preparser function.
Allow object initializers to define getters using string and number literals.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6150 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 12:07:16 +00:00
vegorov@chromium.org
4dc3282556 Add constraints verification to LAllocator::MarkAsCall().
Review URL: http://codereview.chromium.org/6069012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6149 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 11:36:20 +00:00
sgjesse@chromium.org
4c258dc0dd Fix presubmit error
TBR=ricow@chromium.org
Review URL: http://codereview.chromium.org/6093006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 11:28:17 +00:00
lrn@chromium.org
59aea66dfa Fix bug that happens when the first non-ASCII character of a literal is at a power-of-two position.
Review URL: http://codereview.chromium.org/6044009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6147 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 11:25:59 +00:00
sgjesse@chromium.org
d5b94e9704 Addresses some performance regression in the GenericBinaryOpStub on ARM following Crankshaft introduction.
BUG=none
TEST=none

Patch by Rodolph Perfetta from ARM Ltd.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6146 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 11:02:58 +00:00
sgjesse@chromium.org
1dc835a53a Avoid using std::string in Max OS platform file.
Review URL: http://codereview.chromium.org/6001012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 11:02:39 +00:00
sgjesse@chromium.org
b85ac2465f Fix presubmit error
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/6008010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6144 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 10:25:06 +00:00
whesse@chromium.org
7fa57552fa Cleanup of x64 code. Rearrange functions in ic-x64.cc to match order in ic-ia32.cc. Remove unused declarations, and move a constant to assembler-x64.h.
Review URL: http://codereview.chromium.org/6020012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6143 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 09:50:35 +00:00
sgjesse@chromium.org
c89021d162 Added labelled thread names to help with some debugging activity. Right now,
the only platform that it works on is linux (using the prctl API to set the
names of the threads). Other platforms are setup to build properly if the
flag is set, but their thread names are not currently set.

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

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 09:09:50 +00:00
whesse@chromium.org
c28bde775c Reorder the functions in stub-cache-x64.cc, so they are in the same order as in stub-cache-ia32.cc.
Review URL: http://codereview.chromium.org/6085006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6140 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-04 09:02:53 +00:00
vegorov@chromium.org
1cf6f3a26c Move first_artificial_register_ initialization to the right place.
Review URL: http://codereview.chromium.org/6009010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 19:16:29 +00:00
vegorov@chromium.org
11d1188e83 Remember required register kind when creating artificial virtual register.
Review URL: http://codereview.chromium.org/6065010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 17:02:15 +00:00
kmillikin@chromium.org
c1fd8bcf60 Fix a bug in deoptimization environments.
The function HEnvironment::SetExpressionStackAt did not update the
environment's history.  This function is used to patch the bailout
environment for count operations and global function calls.

Reorganize class HEnvironment to make it fit V8's style a bit better
and to try to add some sanity to which C++ functions are intended to
be inlined.

Remove the flag --trace-environment which merely duplicated data in
the hydrogen.cfg file except without enough context to be useful.

BUG=1004

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 16:57:46 +00:00
whesse@chromium.org
3d7d258339 Remove RecordWriteStub from X64 and ARM platforms.
Review URL: http://codereview.chromium.org/5986014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6136 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 14:59:12 +00:00
sgjesse@chromium.org
04bf6c5c61 Use the macro assembler Set instead of explicit xor for clearing registers.
Review URL: http://codereview.chromium.org/6015011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6135 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 11:39:22 +00:00
sandholm@chromium.org
cdf948c33d Simplify ScanJsonString.
Review URL: http://codereview.chromium.org/6009009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6134 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 10:51:34 +00:00
lrn@chromium.org
b9bd4952a7 Changed uncast -1 in unsigned context to use constant kSentinel.
Review URL: http://codereview.chromium.org/5993006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 10:28:39 +00:00
fschneider@chromium.org
c8c04008df Prepare push to trunk. Now working on 3.0.6.
Review URL: http://codereview.chromium.org/6005011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 10:02:17 +00:00
sgjesse@chromium.org
cbfcef150a Added context sensitive prompt for remote debugger. It now shows "> "
when the debuggee is running, and "dbg> " when the debuggee is stopped.

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

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-03 07:56:30 +00:00
fschneider@chromium.org
0a128e5ae7 Optimize array-length and fast element loads.
1. Separating out the instance-type check from the array-length operation.

2. I also changed the bounds-check on keyed loads to use the length property
for JS arrays (like we do for array stores).

The new pattern should use less registers and allow more checks to be eliminated.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6125 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-30 19:30:42 +00:00
vitalyr@chromium.org
24e560fe11 Don't emit a write barrier when storing a known old space value.
Review URL: http://codereview.chromium.org/6072009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-25 14:14:16 +00:00
vitalyr@chromium.org
da8c3550bf Force inlining of BodyVisitorBase::IteratePointers.
Review URL: http://codereview.chromium.org/6042007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6119 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-24 14:44:15 +00:00
peter.rybin@gmail.com
fba2ef6c0f Fix variable conflict in nested for statement
Review URL: http://codereview.chromium.org/5961011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-24 02:44:35 +00:00
karlklose@chromium.org
16800adf57 Fix inlining of instanceof stub for ARM (r6093).
Review URL: http://codereview.chromium.org/6055006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-23 16:33:30 +00:00
lrn@chromium.org
c9928c0595 Change scanner buffers to not use utf-8.
Make preparser keep its symbol text itself instead of relying on the scanner.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6115 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 20:14:19 +00:00
vitalyr@chromium.org
4e32d5ad1a Fix win64 build.
Review URL: http://codereview.chromium.org/6050005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6114 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 16:07:59 +00:00
antonm@chromium.org
0071bf92f6 Do not turn source array elements into writable if doing Array.slice.
Array.slice doesn't mutate original array, so it's fine with read only data.
Plus nuke unnecessary cast.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 15:45:48 +00:00
vitalyr@chromium.org
c5916f552f Support load function prototype in hydrogen/lithium.
Review URL: http://codereview.chromium.org/6009005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 15:43:32 +00:00
sandholm@chromium.org
37567c42da Introduce NUMBER_IS_FINITE macro to avoid ToNumber() conversion.
Review URL: http://codereview.chromium.org/5977006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6111 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 13:19:25 +00:00
sgjesse@chromium.org
716e6282e9 Refactoring out object printing functions into objects-printer.cc.
Patch by Mark Lam from Hewlett-Packard Development Company, LP

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6110 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 13:04:47 +00:00
vitalyr@chromium.org
52d2ce3b5a Clean up is-ASCII checks.
Review URL: http://codereview.chromium.org/5963003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 11:31:18 +00:00
whesse@chromium.org
4330070e32 Use Assembler::Set() to assign constants to registers in more places. Commit of http://codereview.chromium.org/6016007/ .
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 09:55:19 +00:00
erik.corry@gmail.com
92d163e156 Fix a couple of cast errors for gcc-3.4.3. Patch by Ryan Dahl. http://codereview.chromium.org/5976006/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6103 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-22 09:49:26 +00:00
whesse@chromium.org
1c63e53675 Fix assert error in r6083 by allowing stub calls from TranscendentalCacheStub.
Review URL: http://codereview.chromium.org/6021004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6100 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 15:10:45 +00:00
ager@chromium.org
a609cf61c5 Avoid decoding overhead when allocating ascii strings.
The assumption is that most utf8 strings allocated are actually ascii
and that if they are not we will encounter a non-ascii char pretty
quickly.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 13:24:23 +00:00
whesse@chromium.org
bc5fb1a148 Prepare push to trunk. Now working on version 3.0.5.
Review URL: http://codereview.chromium.org/6056003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6095 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 12:05:32 +00:00
kmillikin@chromium.org
7171df741a Fix for issue 1007.
The Hydrogen environment only tracks values for stack-allocated variables.
It is a precondition of HEnvironment::Lookup(variable) that variable is
stack-allocated.  The check was missing at one call site.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6094 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 11:21:04 +00:00
karlklose@chromium.org
16837c1f33 Implement inlining of instanceof tests on ARM.
TBR=sgjesse

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 10:52:50 +00:00
vegorov@chromium.org
640243a975 Fix leak of a global handle in Debug::Load().
Bootstrapper::CreateEnvironment() returns a global handle to the created context so there is no need to create another one explicitly.

BUG=v8:1006

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6092 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 10:51:50 +00:00
mikhail.naganov@gmail.com
a968ed0470 Implement HeapIterator that skips over unreachable objects.
I'm using it when creating heap snapshots. I decided that it will
be more convenient to have it as a separate piece of code, instead
of embedding into the snapshot generator.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 10:49:40 +00:00
whesse@chromium.org
8df57d740d Ensure that the SSE2 TranscendentalCache stub calls GC if it runs out of memory in new space. Previously, it would just use an alternate algorithm, that did not cache the result.
Review URL: http://codereview.chromium.org/5996001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6090 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 10:25:51 +00:00
lrn@chromium.org
5741575327 Tweak quicksort loop to reduce number of compares slightly.
Review URL: http://codereview.chromium.org/6039002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 14:57:51 +00:00
whesse@chromium.org
da934d1f26 Fix error in r6083
Review URL: http://codereview.chromium.org/6026004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6086 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 14:42:05 +00:00
antonm@chromium.org
ae476ecd6c Teach C++ ArraySlice builtin to deal with arguments object.
Array.prototype.slice.call(arguments, ...) idiom is pretty common (up to 97% of invocations
in GMail), so we'd better handle it efficiently too.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6085 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 14:41:41 +00:00
vitalyr@chromium.org
c35cd839ae Allow 4 more fast properties for objects.
Review URL: http://codereview.chromium.org/6016003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6084 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 14:20:43 +00:00
whesse@chromium.org
5656d64ece Add untagged double versions of Math.sin and Math.cos. Merge classes TranscendentalCacheStub and TranscendentalCacheSSE2Stub.
Review URL: http://codereview.chromium.org/5996002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 13:52:14 +00:00
fschneider@chromium.org
7cc61e6973 Fix GVN for polymorphic loads.
They must not be hoisted above the compare-map-and-branch.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6082 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 13:18:47 +00:00
sandholm@chromium.org
a496150a9e Minor optimization in regexp parse.
Review URL: http://codereview.chromium.org/6014002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6081 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 10:44:41 +00:00
sgjesse@chromium.org
e21d76a0e3 1. Added support for object printing for release mode using the
objectprint=on (defaults to off) option (which defines OBJECT_PRINT).
2. Added the ability to print objects to a specified file instead of
   just stdout.
3. Added a use_verbose_printer flag (true by default) to allow some
   object printouts to be less verbose when the flag is false.
4. Fixed a bug in VSNPrintF() where it can potentially write into an
   empty char vector.

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

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6080 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 10:38:19 +00:00
lrn@chromium.org
c91f5606d0 Fix smi-comparison to use correct macros in X64-SwapElements.
Review URL: http://codereview.chromium.org/5967002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6079 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-20 09:38:56 +00:00
erik.corry@gmail.com
e24362b50f Remove the atomic/thread safe stuff from the chunk table, since we don't
use cross thread synchronization in Crankshaft.
Review URL: http://codereview.chromium.org/5979001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6075 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 14:50:24 +00:00
vitalyr@chromium.org
b2dbea6c60 Extend code printing:
o Add --print-unopt-code to print unoptimized code before printing
  optimized code based on it. This is useful to see the states of ICs
  and the effects of code patching.

o Use debug function names in disassembly output.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6074 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 14:16:00 +00:00
fschneider@chromium.org
6cc0310a72 Mark map-transition stores as map-changing instructions.
This prevents code motion from hoisting map-checks across such stores
which may result in unnecessary deoptimizations.

In the following example program we would move a map-check from the inner loop out before the outer loop which is not desirable:

function f() {
  var o = {};
  var j = 0;
  o.a = 1;
  do {
    o.b = 6;  // Map transition
    for (var i=0; i<10; i++) {
       o.a = o.b + i;
    }
  } while(++j < 1) {}
}

for (var i = 0; i < 1000000; i++) f();


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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 13:44:19 +00:00
ager@chromium.org
06ac3b18a0 When setting property on a context extension object do not inherit the
attributes from an existing property on a prototype object.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6068 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 13:04:53 +00:00
sgjesse@chromium.org
648fcd906e Adding Date::ResetCache() API so that the cache values in the Date object
can be reset to allow DST / timezone changes to be re-cached and reflected
in the Date object.

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

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 12:45:27 +00:00
vitalyr@chromium.org
8ff6c23c84 Allow rapid socket reuse on POSIX platforms.
Review URL: http://codereview.chromium.org/5990001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6066 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 12:31:42 +00:00
sandholm@chromium.org
578e70a552 Improve regexp split, replace and test.
Review URL: http://codereview.chromium.org/5959002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6065 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 11:57:10 +00:00
whesse@chromium.org
83b28cd1fc Avoid comparing a pointer-to-member to NULL, even though C++ is supposed to support it.
Review URL: http://codereview.chromium.org/5988001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6064 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 11:52:10 +00:00