ager@chromium.org [Fri, 21 Jan 2011 11:44:29 +0000 (11:44 +0000)]
Return the empty string when formatting recursive error messages. This
matches the behavior of Safari and Firefox. Our old behavior was to
throw a stack overflow exception.
BUG=crbug.com/70334
TEST=mjsunit/cyclic-error-to-string.js
Review URL: http://codereview.chromium.org/
6261018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6428
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Fri, 21 Jan 2011 11:36:19 +0000 (11:36 +0000)]
GDBJIT: do not register NULL lineinfo when gdbjit integration is disabled.
Review URL: http://codereview.chromium.org/
6255008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6427
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Fri, 21 Jan 2011 11:28:35 +0000 (11:28 +0000)]
Reapply change to with/arguments interaction.
This is svn r6415 with a bugfix.
The bug was that we can have scopes with 0 heap slots (functions with
such scopes do not need a local context) and scopes with at least
Context::MIN_CONTEXT_SLOTS. The code generator only allocated a local
context if there were strictly more than Context::MIN_CONTEXT_SLOTS.
Before the change to with/arguments, it was impossible to actually get
a function scope with exactly Context::MIN_CONTEXT_SLOTS because every
such scope included a heap-allocated arguments (and arguments shadow)
slot.
Review URL: http://codereview.chromium.org/
6248014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6426
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Fri, 21 Jan 2011 10:31:28 +0000 (10:31 +0000)]
Remove default template parameter T for the number of temps.
Instead require that the number of temps be specified at each declaration.
Review URL: http://codereview.chromium.org/
6265019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6425
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Fri, 21 Jan 2011 08:30:13 +0000 (08:30 +0000)]
Fix Smi::IsValid assert in StringCharCodeAt deferred code.
Review URL: http://codereview.chromium.org/
6303013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6424
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Thu, 20 Jan 2011 21:53:34 +0000 (21:53 +0000)]
Fix xcode.
TBR=arger@chromium.org
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6423
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Thu, 20 Jan 2011 18:51:47 +0000 (18:51 +0000)]
First part of strict mode.
- var eval | arguments
- catch (eval | arguments)
- 'with' is disabled
- function can't be named eval or arguments
Add FLAG_strict_mode
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6422
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
karlklose@chromium.org [Thu, 20 Jan 2011 17:42:29 +0000 (17:42 +0000)]
Implement fast code for the common cases of left hand sides that are less than three times larger as the right hand side and and right hand sides that are powers of two up and including 32.
In the covered special cases the result is computed directly, else the generic stub is called. The implementation deoptimizes only for mod 0 and if the result may be a negative zero.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/
6331005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6421
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 20 Jan 2011 14:37:28 +0000 (14:37 +0000)]
Remove unused function AddGapMove from the register allocator.
Review URL: http://codereview.chromium.org/
6355009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6420
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 20 Jan 2011 14:20:54 +0000 (14:20 +0000)]
ARM: Implement StringLength and StringCharCodeAt in the lithium-arm
backend.
Review URL: http://codereview.chromium.org/
6368009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6419
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 20 Jan 2011 12:58:57 +0000 (12:58 +0000)]
Revert "Make 'with' mark only variables occurring in the body as used."
This reverts SVN revision 6415 due to layout test failures.
TBR=ricow
Review URL: http://codereview.chromium.org/
6374006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6418
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 20 Jan 2011 12:56:34 +0000 (12:56 +0000)]
Begin changing Hydrogen branch instructions.
Rename HBranch (the instruction that coerces an arbitrary HValue to
control flow) to HTest to free up the term Branch to refer to any
control instruction with two successors.
Change the virtual FirstSuccessor and SecondSuccessor functions on
control instructions to a pair of data members.
Review URL: http://codereview.chromium.org/
6366002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6417
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Thu, 20 Jan 2011 12:47:22 +0000 (12:47 +0000)]
Use typefeedback for bitwise operations.
Add a generic tagged version for all bitwise operation that
invoke the generic stub. This allows us to perform generic
bitwise operations (i.e. on non-integers) without deoptimizing.
Review URL: http://codereview.chromium.org/
6366006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6416
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Thu, 20 Jan 2011 12:32:43 +0000 (12:32 +0000)]
Make 'with' mark only variables occurring in the body as used.
Before, we conservatively marked every variable in a scope as used if the
scope contained 'with'. Instead, just mark the variables occurring in the
body of the with. This avoids marking 'arguments' as used whenever 'with'
occurs, which incurs an extra performance penalty (a use of arguments is
seen as an instruction to redirect all parameter accesses to the arguments
object).
Review URL: http://codereview.chromium.org/
6357007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6415
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 20 Jan 2011 08:38:01 +0000 (08:38 +0000)]
Adding build script changes to support LiveObjectList functionality.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/
6364002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6414
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 20 Jan 2011 08:21:40 +0000 (08:21 +0000)]
Fix Windows compile
Review URL: http://codereview.chromium.org/
6260014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6413
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Thu, 20 Jan 2011 08:11:53 +0000 (08:11 +0000)]
Stubbed out empty liveobjectlist files.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/
6335009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6412
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Thu, 20 Jan 2011 08:08:36 +0000 (08:08 +0000)]
ARM: Implement Math.abs in lithium code generator for the integer and
tagged case. I couldn't find a way to test the double case yet so I'm
leaving that unimplemented for now.
Review URL: http://codereview.chromium.org/
6347007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6411
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Wed, 19 Jan 2011 20:05:22 +0000 (20:05 +0000)]
Support StringCharCodeAt in hydrogen/lithium.
This patch adds H- and L-variants of StringCharCodeAt and StringLength.
StringCharCodeAt is used to inline a constant function call of
String.prototype.charCodeAt and to implement the corresponding inline
runtime function. It does not yet use the recently introduced extra IC
state. (We can specialize on string encoding and avoid deopts because
of out of bounds accesses.)
StringLength needs more work because the stub version of it also
supports strings wrappers and it matters in some cases. (We have to
separate the string only case.)
Review URL: http://codereview.chromium.org/
6243008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6408
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 15:39:40 +0000 (15:39 +0000)]
Fix the ARM simulator's stop support and add conditional breakpoint.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/
6346009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6405
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Wed, 19 Jan 2011 15:26:54 +0000 (15:26 +0000)]
Fix an assertion failure in the full code generator.
We hit an assertion failure when we tried to record the AST ID of
the (shared) .arguments variable proxy more than once. This was hit
when we had multiple calls to the same parameter in a function that
used the arguments object. The fix is to not visit the subexpressions
of the (shared) property access expression.
BUG=1060
Review URL: http://codereview.chromium.org/
6368007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6404
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 19 Jan 2011 14:53:38 +0000 (14:53 +0000)]
ARM: Implement DoInstanceOfKnownGlobal stub
BUG=none
TEST=none
Patch by Martyn Capewell from ARM Ltd.
Review URL: http://codereview.chromium.org/
6248004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6403
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 19 Jan 2011 14:51:01 +0000 (14:51 +0000)]
Fix Linux x64 compilation
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6402
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 19 Jan 2011 14:28:15 +0000 (14:28 +0000)]
Introducing MemoryMappedExternalResource for creating an external
resource from a memory mapped file for creating strings.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/
6240002/
Relanded with Windows compilation issues fixed.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6401
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Wed, 19 Jan 2011 13:55:56 +0000 (13:55 +0000)]
Move LOperand class to lithium.h and move implementations out of .h into .cc files.
Review URL: http://codereview.chromium.org/
6378004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6400
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 19 Jan 2011 13:52:08 +0000 (13:52 +0000)]
X64: Fix bug in DoBranch that miss detecting NaN as falsy.
Review URL: http://codereview.chromium.org/
6369005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6399
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 13:04:21 +0000 (13:04 +0000)]
ARM: Implement HasInstanceType in lithium backend.
Review URL: http://codereview.chromium.org/
6283006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6398
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 11:56:32 +0000 (11:56 +0000)]
ARM: Implement DoCmpJSObjectEqAndBranch.
Review URL: http://codereview.chromium.org/
6381001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6396
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Wed, 19 Jan 2011 11:42:43 +0000 (11:42 +0000)]
Make V8 more Valgrind-friendly.
While we don't have to flush icache on Intel CPUs when we patch code we still have to call CPU::FlushICache() to notify Valgrind otherwise Valgrind will run incorrect translations which will lead to strange crashes.
Review URL: http://codereview.chromium.org/
6271008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6391
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 11:35:41 +0000 (11:35 +0000)]
ARM: Implement StringCharAtStub.
Review URL: http://codereview.chromium.org/
6334007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6390
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 19 Jan 2011 11:20:10 +0000 (11:20 +0000)]
Revert "Introducing MemoryMappedExternalResource for creating an external"
Windows compilation is broken. Will fix and reland later.
This reverts commit
fe13ffaa6d0c3435bfe1ae930813e456650ec980.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6389
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 19 Jan 2011 11:16:23 +0000 (11:16 +0000)]
Using unsigned shifts and masks when dealing with 64-bit addresses.
BUG=v8:1037
Review URL: http://codereview.chromium.org/
6242005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6388
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mikhail.naganov@gmail.com [Wed, 19 Jan 2011 10:48:06 +0000 (10:48 +0000)]
Introducing MemoryMappedExternalResource for creating an external
resource from a memory mapped file for creating strings.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/
6240002/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6386
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Wed, 19 Jan 2011 10:17:18 +0000 (10:17 +0000)]
X64 Crank: Implemented DoBranch and all *AndBranch comparisons.
Review URL: http://codereview.chromium.org/
6374002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6385
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
erik.corry@gmail.com [Wed, 19 Jan 2011 09:42:17 +0000 (09:42 +0000)]
Prepare push to trunk. We are now working in 3.0.10.
Review URL: http://codereview.chromium.org/
6380003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6384
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 09:20:18 +0000 (09:20 +0000)]
Fix the license info to correctly state Copyright "the V8 project
authors" instead of "Google" so it is consistent with the individual
files.
Review URL: http://codereview.chromium.org/
6298006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6383
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 19 Jan 2011 08:34:24 +0000 (08:34 +0000)]
Fix possibly wrong use of strncpy_s
This should also fix MinGW build.
Review URL: http://codereview.chromium.org/
6376003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6382
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 08:20:42 +0000 (08:20 +0000)]
Revert r6376 and r6373 which changes external array support. The ARM
version did not work.
TBR=kbr@chromium.org
Review URL: http://codereview.chromium.org/
6295013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6381
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Wed, 19 Jan 2011 08:16:17 +0000 (08:16 +0000)]
Properly create variables to access outer arguments and function names.
Review URL: http://codereview.chromium.org/
6266007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6380
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Wed, 19 Jan 2011 08:04:48 +0000 (08:04 +0000)]
Adding inspector module and macro-ized object type list.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/
6261012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6379
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Wed, 19 Jan 2011 07:18:04 +0000 (07:18 +0000)]
Fix ARM compilation after external array changes.
TBR=kbr@chromium.org
Review URL: http://codereview.chromium.org/
6261014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6376
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Tue, 18 Jan 2011 23:01:50 +0000 (23:01 +0000)]
Revert strict mode (Mozilla test failure).
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6374
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kbr@chromium.org [Tue, 18 Jan 2011 21:51:50 +0000 (21:51 +0000)]
Truncate rather than round to nearest when performing float-to-integer
conversions for external array types, which implement the Typed Array
spec. The new code paths are for SSE3 and SSE2 capable processors.
The code for non-SSE2 processors is unchanged for now. The ARM port
appears to already be correct.
Moved the generation of the external array load and store intrinsics
to the stub cache (on all platforms) so that they are generated at run
time and can take advantage of CPU features.
This functionality is covered by the array-unit-tests.html test in the
WebGL conformance test suite:
http://khronos.org/webgl/wiki/Testing/Conformance
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/array-unit-tests.html
Manually verified all of the SSE3/SSE2/non-SSE2 code paths by enabling
each in turn. Tested in Chromium on 32-bit Mac OS X and 64-bit Linux.
BUG=http://code.google.com/p/chromium/issues/detail?id=50972
TEST=none (see above)
Review URL: http://codereview.chromium.org/
6315004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6373
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Tue, 18 Jan 2011 16:54:48 +0000 (16:54 +0000)]
Introduce extra IC state to record additional feedback from IC-s.
Extra IC state is only two bits and only supported for call IC-s for
now. To change its extra state an IC stub jumps to a new miss stub
that goes to runtime as usual but then instead of going megamorphic
generates a monomorphic stub with the updated state.
Review URL: http://codereview.chromium.org/
6344005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6370
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
mmaly@chromium.org [Tue, 18 Jan 2011 16:43:53 +0000 (16:43 +0000)]
First part of ES5 strict mode.
- var eval | arguments
- catch (eval | arguments)
- 'with' is disabled
- function can't be named eval or arguments
- function parameter name cannot be eval or arguments
- no duplicate parameter names allowed
Add FLAG_strict_mode
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6369
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 18 Jan 2011 16:16:00 +0000 (16:16 +0000)]
Fix lint error introduced by r6367.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/
6378001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6368
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vegorov@chromium.org [Tue, 18 Jan 2011 16:11:01 +0000 (16:11 +0000)]
Basic GDB JIT Interface integration.
It has certain overheads even when gdb is not attached so it is guarded by ENABLE_GDBJIT_INTERFACE define and --gdbjit flag.
Review URL: http://codereview.chromium.org/
5965011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6367
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
whesse@chromium.org [Tue, 18 Jan 2011 14:32:13 +0000 (14:32 +0000)]
X64 Crankshaft: Add addition of tagged and int32 values to Crankshaft on x64. Enable CallIC to global function to call optimized code.
Review URL: http://codereview.chromium.org/
6329006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6366
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Tue, 18 Jan 2011 14:25:05 +0000 (14:25 +0000)]
Fix operand type for keyed calls.
Record the key as a input operand for keyed call instructions instead
of wrongly making it a temp operand.
This bug does currently not show up as a problem because the
uses are recorded only in the instruction summary.
Review URL: http://codereview.chromium.org/
6368003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6365
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Tue, 18 Jan 2011 13:59:49 +0000 (13:59 +0000)]
Do not optimize functions which are in new space.
If there are many shortliving closures, they pollute sampler window and
delay optimizations of functions which should be optimized.
Review URL: http://codereview.chromium.org/
6344006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6364
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
vitalyr@chromium.org [Tue, 18 Jan 2011 13:43:48 +0000 (13:43 +0000)]
Disable aggressive optimizations on the last optimization attempt.
Only has effect on the loop invariant code motion and Check instructions
for now.
Review URL: http://codereview.chromium.org/
6321007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6363
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 18 Jan 2011 11:31:17 +0000 (11:31 +0000)]
ARM: Implement double constants in the lithium ARM backend and fix
missing minus zero check in MathFloor implementation.
Review URL: http://codereview.chromium.org/
6303009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6362
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Tue, 18 Jan 2011 10:00:36 +0000 (10:00 +0000)]
Incremented preparse version number.
Revision 6309 changed which functions were considered lazy.
That also means that there must be preparse data for now non-lazy functions.
BUG=
TEST=
Review URL: http://codereview.chromium.org/
6270002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6359
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Tue, 18 Jan 2011 07:25:05 +0000 (07:25 +0000)]
Landing for Mark Larson.
Add a README.chromium and LICENSE file for Strongtalk assembler.
This allows the Chromium license tool to automatically include
Strongtalk in about:credits.
BUG= None
TEST= Strongtalk section in Chrome's about:credits
R= ager
Codereview URL: http://codereview.chromium.org/
6357004/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6354
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Mon, 17 Jan 2011 16:54:56 +0000 (16:54 +0000)]
Do not use possibly stale values for cache size, etc.
Those value can become invalid if cache gets cleared by GC.
Review URL: http://codereview.chromium.org/
6348002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6353
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 17 Jan 2011 13:51:59 +0000 (13:51 +0000)]
Merge changes to LTemplateInstruction to X64 (Issue 1048).
Implement ConstantD and ConstantI.
BUG=1048
Review URL: http://codereview.chromium.org/
6262005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6352
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 17 Jan 2011 13:27:16 +0000 (13:27 +0000)]
Clean up test lists. I cannot reproduce any of these locally. My guess
is that the mozilla ones were caused by the safe-point table problem
and the deoptimization ones are fixed by adding support for mod and
div.
Let's see if the buildbot agrees.
Review URL: http://codereview.chromium.org/
6260007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6351
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Mon, 17 Jan 2011 13:11:39 +0000 (13:11 +0000)]
Enable compilation of very simple functions in x64 crankshaft.
This change includes support for safepointtables and adding deoptimization info (but not for deoptimizing).
Implemented crankshaft functions:
CallCode
GenerateSafepointTable
RegisterEnvironmentForDeoptimization
EmitGoto
This change allows us to compile very simple functions with crankshaft:
An empty function
A function returning a constant.
A function returning a parameter.
There is 6 disabled tests that require us to be able to deoptimize
which is currently not supported.
Review URL: http://codereview.chromium.org/
6310009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6350
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 17 Jan 2011 12:54:52 +0000 (12:54 +0000)]
Add UseAny to create a LOperand without register preference.
The result can be a register, a stack slot or a constant operand.
Right now it is only used for enviroment uses.
Review URL: http://codereview.chromium.org/
6348003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6349
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 17 Jan 2011 12:52:06 +0000 (12:52 +0000)]
ARM: Reenable Div and Mod in the ARM lithium codegenerator. The
crashes uncovered by this were caused by constant pool in safe-point
tables. This should be safe to enable now.
Review URL: http://codereview.chromium.org/
6243005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6348
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 17 Jan 2011 12:45:39 +0000 (12:45 +0000)]
ARM: Fix ARM safepoint tables by ensuring that constant pools are not
emitted as part of the safepoint tables.
Always emit the constant pool as part of generating deferred code
(whether or not there actually is any deferred code) and ASSERT that
there is no pending relocation info while using db and dd to write
tables.
Review URL: http://codereview.chromium.org/
6360003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6347
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 17 Jan 2011 12:22:31 +0000 (12:22 +0000)]
Remove the remaining LOperand-members from concrete LIR instructions.
This change introduces the third template parameters for LIR instructions
to specify the number of temp-operands. This is one step towards
removing the instruction-summaries.
I also added hydrogen-accessors in more places and refactored
the LIR-branch instructions to have common super-classes to
avoid code duplication.
Added MUST_USE_RESULT to the functions that record uses
and definitions so that all LOperands are stored in the
LIR instructions (and not only in the summaries).
Review URL: http://codereview.chromium.org/
6237002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6345
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
kmillikin@chromium.org [Mon, 17 Jan 2011 11:25:36 +0000 (11:25 +0000)]
Change the algorithm and generated code for parallel moves on IA32.
Instead of spilling and then immediately restoring eax to resolve
memory to memory moves, the gap move resolver now tracks registers
that are known to be free and uses one if available. If not it spills
but restores lazily when the spilled value is needed or at the end of
the algorithm.
Instead of using esi for resolving cycles and assuming it is free to
overwrite because it can be rematerialized, the gap move resolver now
resolves cycles using swaps, possibly using a free register as above.
The algorithm is also changed to be simpler: a recursive depth-first
traversal of the move dependence graph. It uses a list of moves to be
performed (because it mutates the moves themselves), but does not use
any auxiliary structure other than the control stack. It does not
build up a separate list of scheduled moves to be interpreted by the
code generate, but emits code on the fly.
Review URL: http://codereview.chromium.org/
6263005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6344
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sgjesse@chromium.org [Mon, 17 Jan 2011 10:38:47 +0000 (10:38 +0000)]
Prepare push to trunk. We are now working in 3.0.9.
Review URL: http://codereview.chromium.org/
6354006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6343
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
fschneider@chromium.org [Mon, 17 Jan 2011 10:08:58 +0000 (10:08 +0000)]
Remove unnecessary recording of temp operands in the register allocator.
When processing register contraints we used to add writable input operands
also as temp operands to the same instruction.
This does not seem necessary since we create a fresh virtual register
for writable inputs and insert a definition in the gap before the instruction.
Review URL: http://codereview.chromium.org/
6350002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6342
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
lrn@chromium.org [Mon, 17 Jan 2011 09:36:10 +0000 (09:36 +0000)]
Make invalid break/continue statements an early syntax error.
Previously we delayed the throwing of syntax errors until runtime, so
unreachable errors didn't get reported.
To match a change in JSC, we now stop parsing and report the error immediately.
BUG=69736
TEST=
Review URL: http://codereview.chromium.org/
6355006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6341
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Mon, 17 Jan 2011 08:11:03 +0000 (08:11 +0000)]
Make closures optimizable by Crankshaft compiler.
Currently only closures which only read from the context are supported.
Review URL: http://codereview.chromium.org/
5753005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6340
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Mon, 17 Jan 2011 07:26:36 +0000 (07:26 +0000)]
Landing for Martyn Capewell.
ARM: Implement DoInteger32ToDouble in lithium codegen. Clean up
temporary register use.
Code review URL: http://codereview.chromium.org/
6257003/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6339
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
antonm@chromium.org [Mon, 17 Jan 2011 07:03:19 +0000 (07:03 +0000)]
Relax verification of JSFunction result caches.
As invocation of a functin may trigger GC and hence clear all the caches,
it's hard to ensure previous invariants.
Current invariant is both a key and a value should be the holes or not holes.
Review URL: http://codereview.chromium.org/
6309004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6338
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
sandholm@chromium.org [Sun, 16 Jan 2011 21:29:32 +0000 (21:29 +0000)]
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
whesse@chromium.org [Fri, 14 Jan 2011 16:15:40 +0000 (16:15 +0000)]
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
whesse@chromium.org [Fri, 14 Jan 2011 16:10:00 +0000 (16:10 +0000)]
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
sgjesse@chromium.org [Fri, 14 Jan 2011 15:39:18 +0000 (15:39 +0000)]
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
karlklose@chromium.org [Fri, 14 Jan 2011 15:24:41 +0000 (15:24 +0000)]
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
karlklose@chromium.org [Fri, 14 Jan 2011 15:08:44 +0000 (15:08 +0000)]
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
whesse@chromium.org [Fri, 14 Jan 2011 15:07:44 +0000 (15:07 +0000)]
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
ager@chromium.org [Fri, 14 Jan 2011 14:51:19 +0000 (14:51 +0000)]
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
lrn@chromium.org [Fri, 14 Jan 2011 14:03:05 +0000 (14:03 +0000)]
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
lrn@chromium.org [Fri, 14 Jan 2011 13:16:48 +0000 (13:16 +0000)]
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
ager@chromium.org [Fri, 14 Jan 2011 13:14:26 +0000 (13:14 +0000)]
Unthread message handling test. Changing the MessageHandler in a
threaded test is not a good idea as it has an effect on other tests.
Review URL: http://codereview.chromium.org/
6273004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6323
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ager@chromium.org [Fri, 14 Jan 2011 12:51:04 +0000 (12:51 +0000)]
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
kmillikin@chromium.org [Fri, 14 Jan 2011 12:50:03 +0000 (12:50 +0000)]
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
podivilov@chromium.org [Fri, 14 Jan 2011 12:01:57 +0000 (12:01 +0000)]
Unreviewed. Fix whitespaces for r6314.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6315
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
podivilov@chromium.org [Fri, 14 Jan 2011 11:56:14 +0000 (11:56 +0000)]
Tests for setting break points by script id and position.
Review URL: http://codereview.chromium.org/
6261009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6314
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
ricow@chromium.org [Fri, 14 Jan 2011 11:54:38 +0000 (11:54 +0000)]
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
karlklose@chromium.org [Fri, 14 Jan 2011 11:48:43 +0000 (11:48 +0000)]
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
ricow@chromium.org [Fri, 14 Jan 2011 11:35:02 +0000 (11:35 +0000)]
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
whesse@chromium.org [Fri, 14 Jan 2011 10:57:49 +0000 (10:57 +0000)]
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
lrn@chromium.org [Fri, 14 Jan 2011 10:50:13 +0000 (10:50 +0000)]
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
lrn@chromium.org [Fri, 14 Jan 2011 10:49:18 +0000 (10:49 +0000)]
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
ricow@chromium.org [Fri, 14 Jan 2011 10:33:41 +0000 (10:33 +0000)]
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
ricow@chromium.org [Fri, 14 Jan 2011 10:27:25 +0000 (10:27 +0000)]
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
fschneider@chromium.org [Fri, 14 Jan 2011 09:45:30 +0000 (09:45 +0000)]
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
karlklose@chromium.org [Fri, 14 Jan 2011 08:49:52 +0000 (08:49 +0000)]
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
podivilov@chromium.org [Thu, 13 Jan 2011 17:32:10 +0000 (17:32 +0000)]
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
antonm@chromium.org [Thu, 13 Jan 2011 15:56:33 +0000 (15:56 +0000)]
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
vitalyr@chromium.org [Thu, 13 Jan 2011 14:16:08 +0000 (14:16 +0000)]
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
ricow@chromium.org [Thu, 13 Jan 2011 14:10:26 +0000 (14:10 +0000)]
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
ager@chromium.org [Thu, 13 Jan 2011 12:21:47 +0000 (12:21 +0000)]
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
lrn@chromium.org [Thu, 13 Jan 2011 10:04:02 +0000 (10:04 +0000)]
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