Commit Graph

5809 Commits

Author SHA1 Message Date
sgjesse@chromium.org
436c547a27 MIPS: port Fix ARM regression introduced with polymorphic array support.
Ported r8484 (9f824d7)

BUG=
TEST=

Review URL: http://codereview.chromium.org//7237046
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8570 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-08 06:59:54 +00:00
sgjesse@chromium.org
d9d40dd5d9 MIPS: port Fix a typo in KeyedStoreIC, restore Kraken performance.
Ported r8539 (46103ea)

BUG=
TEST=

Review URL: http://codereview.chromium.org//7327016
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-08 06:48:27 +00:00
sgjesse@chromium.org
4145dded9a MIPS: port Introduce code flushing of RegExp code.
Ported r8532 (c9db503)

Original commit message:
Due to issues relating mostly to chrome extensions we have lately been
running into OOMs that are caused by our executable space running
out. This change introduces flushing of code from regexps if we have
not used the code for 5 mark sweeps.
The approach is different from the normal function code flusing. Here
we make a copy of the code inside the data array, and exchange the
original code with a smi determined by the sweep_generation (a new
heap variable increased everytime we do mark sweep/compact). If we
encounter a smi in EnsureCompiled we simply reinstate the code
object. If, in the marking phase of mark sweep, we find a regexp that
already have a smi in the code field, and this is more than 5
generations old we flush the code from the saved index.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7324018
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-08 06:47:09 +00:00
sgjesse@chromium.org
ae35e56221 Try to fix Windows compilation error.
R=whesse@chromium.org

BUG=none
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 19:27:48 +00:00
sgjesse@chromium.org
8ccb47f57e Add inspection of arguments for optimized frames
R=svenpanne@chromium.org

BUG=v8:1140
TEST=test/mjsunit/debug-evaluate-locals-optimized.js,test/mjsunit/debug-
evaluate-locals-optimized-doubles.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 14:29:16 +00:00
svenpanne@chromium.org
894f57f96a Reduce the number of global constructor calls by changing a constant to a
(constant) inline function.

This brings down the size of v8's .ctors section to 1/4, hopefully fixing the
recent issues with Chromes' CL 91522.
Review URL: http://codereview.chromium.org/7321005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 13:57:58 +00:00
rossberg@chromium.org
58b913f9f0 Implement Object.defineProperty for proxies.
R=kmillikin@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8564 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 12:41:20 +00:00
vitalyr@chromium.org
0f9b0ad8c3 Don't check symbol literals for being symbols.
R=fschneider@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8563 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 12:01:49 +00:00
vegorov@chromium.org
c1e1e97b8b When resolving phies use ANY instead of NONE as a policy for phi operands.
R=fschneider@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8562 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 10:22:39 +00:00
fschneider@chromium.org
d54460fd85 Don't emit a write barrier when storing boolean-typed values.
Review URL: http://codereview.chromium.org/7312022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8561 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 10:14:55 +00:00
ricow@chromium.org
82e53270dc Ensure that regexps always have code object, even if GC happened while running multiple times in runtime.
Review URL: http://codereview.chromium.org/7316018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 10:04:56 +00:00
vitalyr@chromium.org
28d5392bc0 Group property assignments in top-level blocks.
This patch enables insertion of To{Slow,Fast}Properties around a group
of assigments to the same object even when they are put in a block
(e.g. try-catch, if, etc.). Catching exceptions and disabling parts of
code based on some config vars is rather common in top-level code.

R=vegorov@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8558 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 17:21:32 +00:00
sgjesse@chromium.org
53a5b07992 Add inspection of function for optimized frames
R=svenpanne@chromium.org

BUG=none
TEST=test/mjsunit/debug-evaluate-locals-optimized.js,test/mjsunit/debug-evaluate-locals-optimized-doubles.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8556 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 13:02:17 +00:00
vegorov@chromium.org
172cd39760 Define OS::MaxVirtualMemory on MinGW.
Patch by Bert Belder.

BUG=v8:1508

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8553 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 12:29:21 +00:00
vegorov@chromium.org
f465eeff69 MinGW32: define STRUNCATE and change strncpy_s implementation to follow specification.
This fixes the debug build for MinGW32

Patch by Bert Belder.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8552 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 12:25:25 +00:00
jkummerow@chromium.org
aed876cb21 Prepare push to trunk. Now working on version 3.4.11.
R=svenpanne@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 10:58:52 +00:00
sgjesse@chromium.org
ca3787f395 Fix debug break on binary boolean operators
The syntax checker finding breakable statements did not take into account that the right hand side of a boolean binary opration might never get evaluated.

R=svenpanne@chromium.org

BUG=v8:1523
TEST=test/mjsunit/regress/regress-1523.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 10:16:57 +00:00
sgjesse@chromium.org
612d6d3274 Use the information from the last recorded safepoint for the padding after the deferrred code.
R=kmillikin@chromium.org

BUG=none
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 09:28:07 +00:00
lrn@chromium.org
57b7a67dba Revert preparser duplicate detection.
Doesn't work on Windows yet.
Crashes some layout-tests.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 09:15:10 +00:00
lrn@chromium.org
57760b8275 Make preparser detect duplicate parameters and object literal properties.
This is a fix and reapply of r8516 with some comments addressed and more
tests added.
The difference from r8516 is that canonicalization of number literals is
no performed using the same methods as in v8, to avoid false positives/negatives
when detecting duplicates.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8541 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 08:32:48 +00:00
sgjesse@chromium.org
4f12a06c8a Fix a typo in KeyedStoreIC, restore Kraken performance.
TEST=none
BUG=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8539 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-06 07:05:49 +00:00
vitalyr@chromium.org
47ed2b58c6 Fix arm build.
TBR=sgjesse@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8538 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-05 16:12:42 +00:00
vitalyr@chromium.org
bbaed5b82e Fix a few issues breaking cctest/test-lockers/Regress1433:
o The thread local state in an isolate has to be initialized before
  it's used.
o v8::Locker was incorrectly tracking whether it's the topmost one.
o Waking the profiler thread on shutdown should not leave the
  semaphore counter in an inconsitent state.

R=fschneider@chromium.org
BUG=v8:1522
TEST=cctest/test-lockers/Regress1433

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-05 15:49:39 +00:00
sgjesse@chromium.org
10bb16f495 Add support for lazy deoptimization from deferred stack checks
The debugger can be entered from the deferred stack check in optimized code. This can cause both lazy deoptimization and debugger deoptimization (setting the first break point and inspecting the stack for optimized code respectively). This required deoptimization support from the deferred stack check.

The lazy deoptimiztion call is inserted when the deferred code is done including restoring the registers. The bailout to the full code is the begining of the loop body as that is where the stack check is sitting in the optimized code. The bailout is not to the stack check in the full code as that is sitting at the end of the loop.

R=kmillikin@chromium.org

BUG=none
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8535 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-05 13:21:29 +00:00
lrn@chromium.org
877d6198e5 Extract string->double and double->string conversions for use in the preparser.
Review URL: http://codereview.chromium.org/7308004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8534 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-05 11:54:11 +00:00
vegorov@chromium.org
e3b1fe2c14 Fix ABI for API calls on ia32.
Instead of relying on eax value after the call load returned handle value directly from the slot that was preallocated for it.

R=vitalyr@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-05 11:36:52 +00:00
ricow@chromium.org
0f682143d9 Introduce code flushing of RegExp code.
Due to issues relating mostly to chrome extensions we have lately been
running into OOMs that are caused by our executable space running
out. This change introduces flushing of code from regexps if we have
not used the code for 5 mark sweeps.

The approach is different from the normal function code flusing. Here
we make a copy of the code inside the data array, and exchange the
original code with a smi determined by the sweep_generation (a new
heap variable increased everytime we do mark sweep/compact). If we
encounter a smi in EnsureCompiled we simply reinstate the code
object. If, in the marking phase of mark sweep, we find a regexp that
already have a smi in the code field, and this is more than 5
generations old we flush the code from the saved index.
Review URL: http://codereview.chromium.org/7282026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-05 06:19:53 +00:00
whesse@chromium.org
f3d1453f83 As part of allowing different contexts for inlined functions, eliminate most explicit reads of the context from the stack frame in ia32 crankshaft codegen.
Eliminates the enum flag RESTORE_CONTEXT and CONTEXT_ADJUSTED, and adds a context HValue and LOperand to many hydrogen and lithium instructions.

Context is still used from the stack from in CallKnownFunction (this seems safe), and in CallRuntimeFromDeferred in lithium-codegen-ia32.cc, which needs to be fixed.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 14:13:08 +00:00
vitalyr@chromium.org
8f60208324 Fix bug 1529: check for NULL handle in v8::TryCatch::StackTrace.
Internal HandleScope::CloseAndEscape crashes on NULL handles.

R=kmillikin@chromium.org
BUG=v8:1529
TEST=mjsunit/regress/regress-1529

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 13:29:56 +00:00
ricow@chromium.org
9217a45b9e Prepare push to trunk. Now working on 3.4.10.
Review URL: http://codereview.chromium.org/7307003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8526 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 13:20:39 +00:00
whesse@chromium.org
03c694258a Fix Windows 64-bit compilation error.
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8525 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 11:58:20 +00:00
whesse@chromium.org
5f721c3f84 Speed up V8 random number generator, reverting part of 8490.
Return to previous random number generator, but mix more bits into
output to hide hidden state better.  Keep the multithreading fix that
moves the PNG into isolate.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8524 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 11:34:29 +00:00
kmillikin@chromium.org
57c29c1f29 Fix a bug in with and catch context allocation.
We were only looking one level up the scope chain to decide which
closure to use in the fresh context.  Instead, we should look to the
first non-catch scope.

R=vegorov@chromium.org
BUG=1528
TEST=regress-1528

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8523 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 09:34:47 +00:00
sgjesse@chromium.org
c5aebcb7b0 MIPS: port Introduce scopes to keep track of catch blocks at compile time.
Port r8496 (b7d5ecf0).

Original commit message:
Introduce scopes to keep track of catch blocks at compile time.
The catch variable is bound in the catch scope. For simplicity in this
initial implementation, it is always allocated even if unused and always
allocated to a catch context even if it doesn't escape. The presence of
catch is no longer treated as a with.
In this change, care must be taken to distinguish between the scope where a
var declaration is hoisted to and the scope where the initialization occurs.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7212020
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8522 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 09:05:57 +00:00
sgjesse@chromium.org
a89f314de3 MIPS: port Do not pass the global object as the receiver to strict-mode ...
Do not pass the global object as the receiver to strict-mode and
builtin replace and sort functions.

Port r8488 (6f347b6)

BUG=
TEST=

Review URL: http://codereview.chromium.org//7278024
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8521 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 09:01:52 +00:00
sgjesse@chromium.org
9cc5b94c2e Correctly handle the constant pool in constant pool splitting test
The constant pool was not taken into account in the test test-compiler/SplitConstantsInFullCompiler which caused random failures.

This also reverts the test code added in r8469 and r8471.

R=ricow@chromium.org

BUG=none
TEST=test-compiler/SplitConstantsInFullCompiler

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-04 08:57:43 +00:00
lrn@chromium.org
4f1e60cc75 Revert r8516.
Revision 8516 contained a temporary hack that doesn't work on Windows.

TBR: ricow

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 15:44:21 +00:00
kmillikin@chromium.org
a48c03bb2a Fix an issue with optimization of functions inside catch.
When optimizing a function defined inside a catch, we did not count
the catch context as part of the context chain.

R=vegorov@chromium.org
BUG=1521
TEST=regress-1521

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 14:05:46 +00:00
lrn@chromium.org
b6779044c9 Add duplicate parameter detection to preparser.
Add tests for duplicate properties of object initialisers to preparser.

TEST=preparser

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 13:46:52 +00:00
vitalyr@chromium.org
8448d09d3b Do a backing store sparseness check on fast element delete.
R=vegorov@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 13:18:42 +00:00
vitalyr@chromium.org
fe7bdf1fe8 Remove unmarked entries from per context map caches.
Made "map_cache" a weak field of global context and added a pass over
all caches late in the marking phase.

R=vegorov@chromium.org
BUG=v8:1516
TEST=cctest/test-api/Regress1516

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 12:47:18 +00:00
yangguo@chromium.org
77a3c7226b exposing a few boolean queries from objects.h
TEST=start with ./d8 --allow-natives-syntax and try %ObjectHasFastElements({})

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8514 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 11:47:55 +00:00
lrn@chromium.org
ff9ce1abd4 Make date parser handle all ES5 Date Time Strings correctly.
This means that ES5 Date Time Strings will default to UTC if timezone is absent.
Handle as many legacy strings as possible the same way as before

BUG=v8:1498
TEST=mjsunit/date

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 11:41:45 +00:00
jkummerow@chromium.org
31487d29e3 Add missing HandleScope
Review URL: http://codereview.chromium.org/7210056

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8509 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 11:04:36 +00:00
sandholm@chromium.org
9a2165c7fb An attempt to resolve the win32 build error introduced in r8506
Review URL: http://codereview.chromium.org/7278018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 10:59:38 +00:00
mikhail.naganov@gmail.com
33177880c8 Remove "modules" and "tags" of the logging CPU profiler.
Modules now makes a little sense, as there is only one module.
Tags was a simplistic attempt of supporting nested profiles.

R=sgjesse@chromium.org
BUG=859

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8507 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 09:35:16 +00:00
sandholm@chromium.org
7a817f620e Special case handling of one char split on an ASCII string.
Review URL: http://codereview.chromium.org/7285030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 09:29:38 +00:00
jkummerow@chromium.org
3916da5f98 Cleanup polymorphic IC code to make use of ElementsKind information in maps.
Review URL: http://codereview.chromium.org/7283044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8504 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 07:58:58 +00:00
svenpanne@chromium.org
e6ec7808db Simplify UnaryOpStub a little bit.
Only a single constructor is really needed. Make UnaryOp_Patch's arguments
simpler, avoiding encoding/decoding things in a cryptic way.
Review URL: http://codereview.chromium.org/7248063

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8503 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 07:50:46 +00:00
ager@chromium.org
75bebf3db8 Fixes the build for the shell on illumos and Solaris. -D__C99FEATURES__ was added to mirror how the build is done on the normal platform. The changes in the platform code are a follow up to a prior review and has the Solaris implementation be more similar to the Linux version as opposed to the FreeBSD.
Contributed by Robert Mustacchi <rm@fingolfin.org>

TEST=Note the test suite uncovered a bug in libm where pow(3M) was not doing the right thing on edge cases. The only test failures are related to this bug.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-01 05:50:14 +00:00
fschneider@chromium.org
f437f859c9 Relax register constraints for instructions that support memory operands on IA32.
Review URL: http://codereview.chromium.org/7290006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8501 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 18:14:48 +00:00
whesse@chromium.org
473f833699 Change return type of FrameDescription::GetFrameSize to avoid unneeded type casts.
Review URL: http://codereview.chromium.org/7282033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 15:57:56 +00:00
kmillikin@chromium.org
05c73983a7 Remove bogus assertion.
R=fschneider@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8499 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 15:49:14 +00:00
fschneider@chromium.org
eb380e0f85 Fix broken ARM debug build.
TBR=
Review URL: http://codereview.chromium.org/7284035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8498 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 15:05:24 +00:00
karlklose@chromium.org
c0e2268c8c Fix problem with arguments object ICs not checking for dictionary mode elements.
R=kmillikin@chromium.org
BUG=1514
TEST=mjsunit/regress/regress-1513.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8497 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 14:56:06 +00:00
kmillikin@chromium.org
f4c4df2d9a Introduce scopes to keep track of catch blocks at compile time.
The catch variable is bound in the catch scope.  For simplicity in this
initial implementation, it is always allocated even if unused and always
allocated to a catch context even if it doesn't escape.  The presence of
catch is no longer treated as a with.

In this change, care must be taken to distinguish between the scope where a
var declaration is hoisted to and the scope where the initialization occurs.

R=ager@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8496 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 14:37:55 +00:00
fschneider@chromium.org
b12e933e43 Refactor handling of test expressions in the graph builder.
Instead of generating two instructions and combining them
at lithium translation using the EmitAtUses predicate, we
generate the correct branch instruction right from the start.
Review URL: http://codereview.chromium.org/7237024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 14:19:52 +00:00
mikhail.naganov@gmail.com
d0559ee206 Heap profiler: annotate fixed arrays by their purpose.
This helps understanding what is a particular array for by
just looking at its name.

R=vitalyr@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8494 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 14:19:33 +00:00
svenpanne@chromium.org
a482bd7ee3 Unbreak compilation on MIPS after EmitCallIC removal.
Note: It has only been verified that compilation is OK, nothing more... ;-)
Review URL: http://codereview.chromium.org/7273097

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8493 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 14:02:18 +00:00
whesse@chromium.org
3a7e8fb791 Fix compilation on 64-bit Windows build.
Review URL: http://codereview.chromium.org/7283043

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8491 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 13:08:13 +00:00
whesse@chromium.org
03df9dd50b Improve pseudorandom number generation and move the PNG state to Isolate.
Review URL: http://codereview.chromium.org/7248060

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8490 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 13:07:43 +00:00
svenpanne@chromium.org
dd7e3cbdb2 Nuke EmitCallIC, it is a plain call now.
Note that the MIPS part will need some similar changes, too.
Review URL: http://codereview.chromium.org/7283042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8489 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 13:05:03 +00:00
ager@chromium.org
0d8c343c90 Do not pass the global object as the receiver to strict-mode and
builtin replace and sort functions.

R=ricow@chromium.org
BUG=v8:1360
TEST=mjsunit/regress/regress-1360.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 12:29:19 +00:00
vegorov@chromium.org
89c83051aa Fix presubmit failure in gdb-jit.cc.
R=ricow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8487 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 12:19:47 +00:00
danno@chromium.org
743babcb44 Fix ARM regression introduced with polymorphic array support.
BUG=none
TEST=Kraken on ARM

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8484 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 11:53:15 +00:00
vegorov@chromium.org
64c897b5cb Extend gdb-jit support (OSX/locals+parameters/prettyprint)
Generate Mach-O in-memory objects for OSX. Dump locals and parameters
for non-optimized frames.

Unfortunately, it seems like more-recent-GDB on OSX there is a little
temperamental (eg, the version from macports will be missing symbols
from gdb-integration_g when the version included in xcode will not--
and this is with --gdbjit off).

Includes some Python scripts to make dealing with V8 values in gdb more
pleasant.

Patch by Luke Zarko.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 11:52:00 +00:00
svenpanne@chromium.org
233a8dc237 Cleaned up calling-related methods in the ARM assembler.
Generalized Call macro instruction to handle AST IDs, too, making things more
similar to the Intel assemblers. Removed unused methods. Minor signature
cleanup. Simplified assertions.
Review URL: http://codereview.chromium.org/7284029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8482 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 11:26:15 +00:00
kmillikin@chromium.org
3f84fcf6c9 Fix a bug in Object.defineProperty.
There was a bug in Object.defineProperty when used to add an indexed
property to an arguments object.  When converting the elements backing
store to dictionary mode, the parameter map in front of the backing
store does not change.

R=ager@chromium.org,karlklose@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 11:11:19 +00:00
ager@chromium.org
47ca7358e6 MIPS: stub out Support debugger inspection of locals in optimized frames
Added Deoptimizer::FillInputFrame as UNIMPLEMENTED method.

Ported r8464 (34f38d1)

BUG=
TEST=

Review URL: http://codereview.chromium.org/7284026
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 09:25:29 +00:00
jkummerow@chromium.org
39b06d8850 Add support for dictionary elements to polymorphic crankshaft code.
Review URL: http://codereview.chromium.org/7285001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 08:40:31 +00:00
kmillikin@chromium.org
7d189d848e MIPS: port Explicitly pass the closure when allocating a catch or with context.
Ported r8453 (59dd697)

Original commit message:
Before: allocation of a catch or with context fetched the closure to store
in the context from the previous context in the context chain. Now: the
closure is passed explicitly.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8478 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 08:34:10 +00:00
kmillikin@chromium.org
861d18032a MIPS: port Remove the fcontext field from all contexts.
Ported 8452 (8a2a360)

Original commit message:
Before: every context cached the nearest enclosing function context. This
assumed that for nested contexts (i.e., with and catch contexts) the
enclosing function had a materialized link in the context chain.
Now: when necessary, we loop up the context chain to find such a context.
This enables catch contexts without forcing the enclosing function to
allocate its own context.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8477 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 08:32:59 +00:00
ager@chromium.org
3a5788915f Fix platform-solaris after isolate changes.
Patch from http://code.google.com/p/v8/issues/detail?id=1509.

R=ager@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8476 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 07:24:49 +00:00
ager@chromium.org
2b286a3128 Remove --strict developer flag from V8.
It makes V8 not have JavaScript semantics by throwing exception all
the time. Even our own natives JavaScript code cannot run using that.

R=ricow@chromium.org
BUG=v8:1511

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8475 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-30 06:58:13 +00:00
vitalyr@chromium.org
90c9f1b989 Suspend runtime profiler as soon as we exit JS.
Lots of web pages have really frequently firing timers that keep the
profiler thread spinning if we require a period of JS inactivity
before suspending the profiler. While it's possible to throttle it by
increasing the sleep delay and adjusting the duration of the required
inactive period, it seemed much simpler to just stop it immediately on
exiting JS.

Stopping the profiler this way effectively turned off two optimization
heuristics: 1) eager optimization (it's reset on waking up the
profiler and now the profiler wakes up much more frequently) and 2)
optimization throttling based on JS to non-JS state ratio (the ratio
is now 100%). I removed these two heuristics and found no performance
regressions so far.

R=ager@chromium.org
BUG=crbug.com/77625
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8472 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 14:56:08 +00:00
svenpanne@chromium.org
b6869174c6 Simplify EmitCallIC.
Move the identification of the corresponding StatsCounter where it belongs,
namely into the Code class. Use the null pattern to signal "no inlined Smi
code". Removed a few unused counters.
Review URL: http://codereview.chromium.org/7273066

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 13:43:24 +00:00
sgjesse@chromium.org
c4f28bf274 Temporarily add more test output to help locate test failure
R=ricow@chromium.org

BUG=none
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8469 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 13:40:23 +00:00
jkummerow@chromium.org
6cd99953f1 Using KeyedStoreIC_Generic_Strict must prevent polymorphic case.
TEST=Fewer deopts in existing tests.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8467 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 13:32:27 +00:00
sgjesse@chromium.org
3878096ed8 Fix compilation of all combinations of disassembler=on/off and objectprint=on/off
R=jkummerow@chromium.org

BUG=v8:1473
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8465 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 13:17:02 +00:00
sgjesse@chromium.org
7d2be7c0e0 Support debugger inspection of locals in optimized frames
Optimized frames are now handled by the debugger. When discovering optimized frames during stack inspection in the debugger they are "deoptimized" using the normal deoptimization code and the deoptimizer output information is used to provide frame information to the debugger.

Before this change the debugger reported each optimized frame as one frame no matter the number of inlined functuions that might have been called inside of it. Also all locals where reported as undefined. Locals can still be reposted as undefined when their value is not "known" by the optimized frame.

As the structures used to calculate the output frames when deoptimizing are not GC safe the information for the debugger is copied to another structure (DeoptimizedFrameInfo) which is registered with the global deoptimizer data and processed during GC.

R=fschneider@chromium.org

BUG=v8:1140
TEST=test/mjsunit/debug-evaluate-locals-optimized*

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 13:02:00 +00:00
vegorov@chromium.org
cd9356baa6 Prepare push to trunk. Now working on 3.4.9.
R=ager@chromium.org
Review URL: http://codereview.chromium.org/7282005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8462 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 11:21:23 +00:00
svenpanne@chromium.org
ac7fca826d Simplify the way we call UnaryOpStubs, saving one unused no-op after the call itself.
Review URL: http://codereview.chromium.org/7280005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8461 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 11:12:12 +00:00
sandholm@chromium.org
f9c82bf3a3 Improve JSON.parse to use less memory when using escaped and non-ascii
characters.
Review URL: http://codereview.chromium.org/7241023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 10:54:20 +00:00
sgjesse@chromium.org
39ed137e10 ARM: Improve register allocation and constraints (try 2).
Gives ~20% boost for Crypto benchmark on A9.

BUG=none
TEST=added to mjsunit/div-mod.js

Review URL: http://codereview.chromium.org//7276034
Patch from Martyn Capewell <m.m.capewell@googlemail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8459 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 10:51:06 +00:00
jkummerow@chromium.org
6f66664386 Error checking for length parameter of external array constructors in shell
BUG=v8:1501

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 10:27:14 +00:00
yangguo@chromium.org
61c7b030e9 reverting revision r8454
Review URL: http://codereview.chromium.org/7218042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8457 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 08:45:22 +00:00
erik.corry@gmail.com
f8fdc62c19 Improvement to SmiLexicalCompare. Landing http://codereview.chromium.org/7261008 for Stephen Adams
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 08:35:10 +00:00
kmillikin@chromium.org
81e8b42e1b Fix lint failure.
TBR=fschneider@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8455 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 08:32:12 +00:00
yangguo@chromium.org
e6dbce1190 added the --test option for d8 into tools/test.py
TEST= tools/test.py --shell d8 -v

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 08:22:36 +00:00
kmillikin@chromium.org
96bbcaf416 Explicitly pass the closure when allocating a catch or with context.
Before: allocation of a catch or with context fetched the closure to store
in the context from the previous context in the context chain.  Now: the
closure is passed explicitly.

R=ager@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8453 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-29 07:41:42 +00:00
kmillikin@chromium.org
5e7da7f04f Remove the fcontext field from all contexts.
Before: every context cached the nearest enclosing function context.  This
assumed that for nested contexts (i.e., with and catch contexts) the
enclosing function had a materialized link in the context chain.

Now: when necessary, we loop up the context chain to find such a context.
This enables catch contexts without forcing the enclosing function to
allocate its own context.

R=ager@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8452 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 15:22:08 +00:00
fschneider@chromium.org
2760bd2927 Slightly improved register assignment for %_IsObject on IA32 and ARM.
The new approach uses one temp register instead of two on IA32. The ARM
instructions are modified so the input can be UseAtStart again.
Review URL: http://codereview.chromium.org/7274025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8451 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 14:21:55 +00:00
kmillikin@chromium.org
e859416b9f Better placement of argument pushing for a few hydrogen call instructions.
Where it's simple to do so (keyed calls, calls to unknown global variables,
calls to local variables and non-property/non-variable expressions), end the
live range of argument subexpressions immediately after the last use of the
expression rather than at the call.

R=fschneider@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8445 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 12:51:21 +00:00
keuchel@chromium.org
3f70c456eb Fix "illegal access" when calling parseInt with a radix that is not a smi.
BUG=v8:1246
TEST=regress-1246.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8444 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 12:31:42 +00:00
fschneider@chromium.org
c9eefb3f88 Fix bug in register assignment of IsObjectAndBranch.
Make sure that input and temp registers don't overlap.
Review URL: http://codereview.chromium.org/7273026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8443 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 09:09:07 +00:00
ager@chromium.org
3f6043d370 Cleanup to HEnvironment::CopyForInlining
* src/hydrogen.cc (HEnvironment::CopyForInlining): As the code for both
  the ::HYDROGEN and ::LITHIUM compilation phases is the same, just use
  one code path and remove the arg.

* src/hydrogen.h (HEnvironment): Remove now-unused CompilationPhase
  enum type and arg to CopyForInlining.

* src/arm/lithium-arm.cc (LChunkBuilder::DoEnterInlined):
* src/ia32/lithium-ia32.cc (LChunkBuilder::DoEnterInlined):
* src/x64/lithium-x64.cc (LChunkBuilder::DoEnterInlined): Adapt
  callers.

* AUTHORS: Add Igalia.

BUG=
TEST=I ran tools/test.py.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 08:54:09 +00:00
fschneider@chromium.org
b59f2b700b Fix a bug in %_GetCachedArrayIndex.
This inline runtime function had the wrong super class.
It did not cause any problems since it is only used in
our natives and never in a test context.
Review URL: http://codereview.chromium.org/7253004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 08:49:01 +00:00
sgjesse@chromium.org
26e53ac042 MIPS: port Fix receiver check in arguments ICs.
Ported r8429 (60a2787)

BUG=
TEST=

Review URL: http://codereview.chromium.org//7276027
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 07:54:01 +00:00
sgjesse@chromium.org
b6afa34afa MIPS: Long branch implementation and trampoline improvement.
Improve the branch and branch-trampoline mechanism to automatically
use long-jumps when function size grows large. Reduce size of emitted
trampoline pools.

Now passes mozilla regress-80981.js.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7239020
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8433 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 07:31:42 +00:00
ager@chromium.org
614e542869 Ensure 16-byte stack alignment on Solaris.
GCC generates instructions such as movdqa that requires 16-byte alignment.

R=ricow@chromium.org
BUG=v8:1505
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8432 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-28 07:07:09 +00:00
ager@chromium.org
a8e4b0cfb1 Prepare push to trunk. Now working on version 3.4.8.
R=sgjesse@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-27 13:16:07 +00:00
ager@chromium.org
89cc886ba7 Fix receiver check in arguments ICs.
The receiver needs to be checked in the same way as all other KeyedLoadICs to take non-JSObject and objects that require access checks or has interceptors into account.

R=sgjesse@chromium.org
BUG=87478
TEST=mjsunit/regress/regress-crbug-87478.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8429 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-27 13:02:51 +00:00
sgjesse@chromium.org
54d6072332 Change the handling of stack check on backward branches
The hydrogen stack check instruction is now added to each loop and the stack check handling on the back edge has been removed.

This change causes regression on small tight loops as the stack check is now at the top of the loop instead of at the bottom, and that requires one additional unconditional jump per loop iteration. However the reason for this change is to avoid worse regressions for upcoming changes to correctly support debugger break in optimized code.

R=fschneider@chromium.org

BUG=none
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-27 12:12:27 +00:00
sgjesse@chromium.org
b7850c06d1 MIPS: port Better codegen for '<expression> === void <literal>'.
Ported r8420 (fd2ddbb)

Original commit message:
Detect the pattern in both, the full compiler and crankshaft and generate direct pointer
comparisons. Along the way I cleaned up 'typeof <expression> == <string literal>' comparisons
as well by lifting platform independent code and checking the symmetric case.
BUG=v8:1440
TEST=cctest/test-api.cc

Review URL: http://codereview.chromium.org//7262026
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-27 10:45:54 +00:00
lrn@chromium.org
fb4a2d160d Cleanup of return types and names in factory.
Review URL: http://codereview.chromium.org/7240025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8426 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-27 09:02:34 +00:00
sgjesse@chromium.org
17c2a7a5ed MIPS: update missing write barrier for arguments store ICs, per comments.
Per review comments in http://codereview.chromium.org/7238020 after
issue was closed, we had used an un-necessary Add, which is removed here.
Thanks for the suggestion.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7259010
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-27 08:56:25 +00:00
yangguo@chromium.org
310ed9ebba removed some unnecessary stuff from d8's initialization
and got rid of the utility context unless interactive shell is used

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8424 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 20:04:32 +00:00
cira@chromium.org
ab2c0d4503 Change timeType and dateType in i18n date format API into timeStyle and dateStyle to match the proposal.
I've kept old keys too, until ChromeOS user switches to time/dateStyle.

Fixed regex for matching styles in date and number format.

TEST=i18n.kaziprst.org/datetimeformat.html should show proper results for both timeType and timeStyle.
Review URL: http://codereview.chromium.org/7244008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 16:58:28 +00:00
keuchel@chromium.org
ab3d4cf7b8 Proper handling of future reserved words in strict and normal mode.
BUG=86442
TEST=mjsunit/keywords-and-reserved_words.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8421 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 14:59:51 +00:00
keuchel@chromium.org
628a2e2a1f Better codegen for '<expression> === void <literal>'.
Detect the pattern in both, the full compiler and crankshaft and generate direct pointer
comparisons. Along the way I cleaned up 'typeof <expression> == <string literal>' comparisons
as well by lifting platform independent code and checking the symmetric case.

BUG=v8:1440
TEST=cctest/test-api.cc

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 14:30:10 +00:00
sandholm@chromium.org
22abf6a579 Check for empty substring.
Review URL: http://codereview.chromium.org/7237023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8419 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 13:44:27 +00:00
sgjesse@chromium.org
b55a673177 MIPS: Minor bug fixes to macro-asm and simulator.
3 small fixes:
  - Fix erroneous use of reg t6 in macro-assembler.
  - Minor optimization to overflow-check macros.
  - Fix un-init var use (typo) in simulator FPCall handling.

None of these affected test cases.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7236025
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8418 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 13:23:18 +00:00
vegorov@chromium.org
9310a8d78f Fix three GC unsafe places found by gcmole's dead_vars analysis.
Review URL: http://codereview.chromium.org/7247013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8411 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 12:04:14 +00:00
mikhail.naganov@gmail.com
f4bf8f8fee Remove obsolete aggregating and non-working producers heap profilers.
2000 LOC are gone!

R=sgjesse@chromium.org
BUG=1481

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 11:38:47 +00:00
sgjesse@chromium.org
94e5f2f35a MIPS: port Add missing write barrier for arguments store ICs.
Ported r8390 (52d4605)

BUG=
TEST=

Review URL: http://codereview.chromium.org//7238020
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8405 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 08:46:57 +00:00
sgjesse@chromium.org
2f64c849f2 MIPS: Fix a bug in MacroAssembler::CheckFastElements.
This fixes 3 mjsunit tests when running with --stress-opt: object-freeze,
object-prevent-extensions, object-seal.

Original commit was 54ce3d60 (r8176).

BUG=
TEST=

Review URL: http://codereview.chromium.org//7236024
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8404 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 08:26:47 +00:00
sgjesse@chromium.org
1d53788e7e Revert "ARM: Improve register allocation and constraints."
This reverts r8381.

It was causing Mozilla test mozilla/ecma/Date/15.9.3.8-5 to fail and Sputnik tests S15.9.3.1_A5_T5, S15.9.3.1_A5_T1, S15.9.3.1_A5_T2, S15.9.3.1_A5_T4, S15.9.3.1_A5_T3 and S15.9.3.1_A5_T6 to timeout.

R=ager@chromium.org

BUG=none
TEST=mozilla/ecma/Date/15.9.3.8-5, S15.9.3.1_A5_T5, S15.9.3.1_A5_T1, S15.9.3.1_A5_T2, S15.9.3.1_A5_T4, S15.9.3.1_A5_T3 and S15.9.3.1_A5_T6

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8397 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-23 12:03:16 +00:00
vitalyr@chromium.org
bbd5889f2c Trim fast elements tail on significant length decreases.
Runtime_RegExpExecMultiple had to be updated because it assumed
setting an array's length to zero still keeps some capacity in the
backing store.

R=ager@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-23 11:22:21 +00:00
ager@chromium.org
b652d79b10 Shrink dictionaries on deletion if number of elements are less than a
quarter of the capacity.

R=vegorov@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-23 09:30:39 +00:00
fschneider@chromium.org
4bc671c2b0 Add missing write barrier for arguments store ICs.
Review URL: http://codereview.chromium.org/7207006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8390 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-23 09:20:07 +00:00
ager@chromium.org
5ea7238814 Fix renaming patch to also compile in debug mode.
R=ricow@chromium.org
BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-23 06:33:38 +00:00
ager@chromium.org
03fc1660b3 HBasicBlock::CreateSimulate argument name clarity
* src/hydrogen.h:
* src/hydrogen.cc (HBasicBlock::CreateSimulate): Rename "id" arg to
  "ast_id".

BUG=
TEST=

Review URL: http://codereview.chromium.org/7234010
Patch from Andy Wingo <wingo@igalia.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-23 06:26:50 +00:00
mikhail.naganov@gmail.com
0416b2edc4 Prevent a NULL deref.
Patch by Rachel Blum <groby@chromium.org>

R=mnaganov@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 20:41:02 +00:00
mikhail.naganov@gmail.com
0a12f5dcf8 Fix issue 1354: Bad function name inference.
R=kmillikin@chromium.org, vitalyr@chromium.org
BUG=1354
TEST=test-func-name-inference

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 20:23:48 +00:00
sgjesse@chromium.org
322d246e7e ARM: Improve register allocation and constraints.
Gives ~20% boost for Crypto benchmark on A9.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org//7148018
Patch from Martyn Capewell <m.m.capewell@googlemail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 19:49:31 +00:00
sgjesse@chromium.org
8677fd370c ARM: Add PostIndex support to Ldrd/Strd macro fallback code.
BUG=none
TEST=none

Review URL: http://codereview.chromium.org//7080052
Patch from Martyn Capewell <m.m.capewell@googlemail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 19:18:04 +00:00
cira@chromium.org
2b77b78446 Adding support for number formating to the JS i18n API.
This is the last part of the API that belongs in public spec.

Methods supported:
- format
- derive

Options supported:
- style (decimal, scientific, currency and percent)
- pattern
- skeleton

TEST= Visit i18n.kaziprst.org/numberformat.html
Review URL: http://codereview.chromium.org/7129051

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 18:55:06 +00:00
yangguo@chromium.org
286f1d6bc3 d8 drops into a shell if no files are passed on command line
Fixes regression introduced in r8241.

BUG=
TEST=Run ./d8 --print_code -- should drop into shell.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8378 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 17:32:35 +00:00
whesse@chromium.org
183efaee32 Slightly improve r8367, fix to overflow of on-stack replacement.
The improvement is included in the port of r8367 to earlier versions of V8.
Review URL: http://codereview.chromium.org/7229011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 15:30:00 +00:00
sandholm@chromium.org
a8921c4681 Inctroduce NewStrictSubstring to avoid check for SubString(str, 0, str.length). Cleanup JsonParser.
Review URL: http://codereview.chromium.org/7230006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 14:20:23 +00:00
mikhail.naganov@gmail.com
650df48c55 Cleanup extra initialization of TickSample fields.
R=vitalyr@chromium.org
BUG=1293

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8368 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 13:54:35 +00:00
whesse@chromium.org
8e7405800e Fix an overflow in on-stack replacement spill-slot allocation for Crankshaft.
BUG=v8:1407
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 13:08:40 +00:00
jkummerow@chromium.org
1e1387f12c Add possibility to configure 'prototype' property via FunctionTemplate
BUG=v8:1479
TEST=test-api/SetPrototypeProperties

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 12:39:45 +00:00
lrn@chromium.org
e8b2016b58 Prepare push to trunk. Now working on V8 version 3.4.7.
Review URL: http://codereview.chromium.org/7234008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 12:36:29 +00:00
fschneider@chromium.org
d64b48fb3c Eliminate unnecessary patching of load-length ICs in megamorphic state.
This avoid the worst case of patching ICs repeatedly with the
same stub code object.

BUG=v8:1489
Review URL: http://codereview.chromium.org/7230007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8364 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 10:24:40 +00:00
erik.corry@gmail.com
5b7b0ce861 Limit the size of the space reserved for code on systems that
are short of virtual memory.  This should make V8 work in 64 bit
on OpenBSD in its default configuration.  It is a simplified
version of the reverted 8133 which also lowered the non-code
heap size, causing test failures in Chromium on MacOS.
Review URL: http://codereview.chromium.org/7234004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8363 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 10:13:10 +00:00
lrn@chromium.org
e378829b24 Combined identical classes V8JavaScriptScanner and StandAloneJavaScriptScanner.
Now only uses the common superclass of the two scanner classes.
Updated comment on KeywordMatcher.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 09:06:03 +00:00
svenpanne@chromium.org
0bb0d672b6 Make ToBooleanStub more consistent across platforms.
The declaration of the ToBoolean class moved to the platform-independent part
and its implementations are now structurally very similar. This is just an
intermediate cleanup step to add type recording at the call site.

Note that the MIPS implementation has not really been touched, so it should
continue to work, too.
Review URL: http://codereview.chromium.org/7218012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 08:28:35 +00:00
sgjesse@chromium.org
ee78600543 MIPS: Fix arguments-branch update per review comments.
This is a follow-on to r8340, http://codereview.chromium.org/7216004/

Søren had commited changes and closed issue, as Karl was commenting about
problems in the code.

Thanks Karl, for your detailed code review. I have corrected the issues
you raised.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7232004
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 07:48:32 +00:00
sgjesse@chromium.org
42a87564c3 ARM: Fix context save/restore for VFP registers.
BUG=none
TEST=none

Review URL: http://codereview.chromium.org//7217011
Patch from Martyn Capewell <m.m.capewell@googlemail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-22 06:24:34 +00:00
peter.rybin@gmail.com
d689da9108 Issue 1418: Debug: extends setBreakpoint API to accept partial script name as a parameter
Review URL: http://codereview.chromium.org/7200024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 19:42:35 +00:00
lrn@chromium.org
097060c699 [x64] Fix disassembly of movmskpd instruction.
The destination is a GP register, not an XMM register.  ia32 did not
have this problem.

BUG=
TEST=Check --print_code output for code that tests for -0.0.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 13:57:03 +00:00
lrn@chromium.org
12c3e7799c Make multi-line comments not count when checking whether --> is first on a line.
A multi-line comment containing a newline is considered a line-terminator for
other purposes, but a "-->" following such a comment is considered as being
on the same line as the text preceeding the multi-line comment.
This behavior matches JSC matching Firefox.

TEST=cctest/test-parsing/ScanHTMLEndComments

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 13:34:16 +00:00
fschneider@chromium.org
01a8cda43e Remove redundant hydrogen- and lithium instruction for symbol comparison.
We had two instructions HCompareJsObjectEq and HCompareSymbolEq that behave
exactly the same. I removed one and renamed the remaining instruction into
HCompareObjectEq.
Review URL: http://codereview.chromium.org/7206040

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8349 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 11:18:15 +00:00
karlklose@chromium.org
c5a24f64c4 Fix wrong bounds check on arguments object.
TEST=added to test/mjsunit/arguments.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 09:27:38 +00:00
ager@chromium.org
a96b9156a3 Correctly handle non-array receivers in Array length setter.
BUG=v8:1491
TEST=mjsunit/regress/regress-1491.js

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8343 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 08:07:45 +00:00
mikhail.naganov@gmail.com
bf9b2f8c2c Heap profiler: add an ability to iterate over snapshot's nodes.
This is a preparation for removing aggregated heap snapshots.
W/o this API, counting object instances in a snapshot is very hard.

R=sgjesse@chromium.org
BUG=1481
TEST=cctest/test-heap-profiler/NodesIteration

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8342 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 08:02:34 +00:00
jkummerow@chromium.org
5c63dd26fc Use issue number instead of username for TODO comment
Review URL: http://codereview.chromium.org/7216007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8341 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 07:52:19 +00:00
sgjesse@chromium.org
99503281fc MIPS: port Merge arguments branch to bleeding edge (second try).
Ported r8315 (d70d395).

BUG=
TEST=

Review URL: http://codereview.chromium.org//7216004
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8340 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 07:47:26 +00:00
sgjesse@chromium.org
57c1899f78 MIPS: Port some DIV changes to BinaryOpStub::GenerateInt32Stub().
There were some changes in ARM r8172 that we needed to port to MIPS,
but missed.

The bug was exposed with the Arm & Mips fix in r8321, "Fix wrong
parenthesis in stub ARM and MIPS generation code."

BUG=
TEST=

Review URL: http://codereview.chromium.org//7211006
Patch from Paul Lind <plind44@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-21 07:34:01 +00:00