fschneider@chromium.org
f7ef880041
Use a loop in generated code to allocate stack slots for function with many local variables.
...
If a function contains more than a certain number of locals (IA32: 9, X64: 6, ARM: 4)
a loop for initializing the locals with 'undefined' is more compact.
For less locals we unroll that loop by emitting a sequence of push instructions.
Review URL: http://codereview.chromium.org/515012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3521 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-23 15:06:21 +00:00
bak@chromium.org
c3fa79ab2b
- Reordered the instructions in the inlined allocation code to space dependent instructions.
...
- Replaced the or instruction with lea.
Review URL: http://codereview.chromium.org/521003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-23 13:27:58 +00:00
kmillikin@chromium.org
c114f17efa
When promoting objects during a copying collection, promote all
...
non-large objects that cannot contain non-map-word pointers to other
heap objects into the old data space.
Review URL: http://codereview.chromium.org/502100
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-22 13:34:02 +00:00
kasperl@chromium.org
afabb5a9bc
Make the FastCloneShallowArrayStub a bit prettier.
...
TBR=fschneider@chromium.org
Review URL: http://codereview.chromium.org/507069
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-22 13:10:24 +00:00
ager@chromium.org
2409b4b7ba
Revert r3514 and r3515. The new cache is too large for some tests
...
that attempt to run with a small heap. Additionally, it can
potentially keep a lot of string data alive and it is never flushed.
Can we make it grow dynamically if used so that we can still start the
VM with a small heap size?
Review URL: http://codereview.chromium.org/503081
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-22 13:07:27 +00:00
fschneider@chromium.org
735aee05f0
Use one runtime call for creating object/array literals in
...
the code generator.
The runtime function checks if it needs to create a boilerplate
object or if it can clone from an existing boilerplate.
This is already done in the top-level compiler.
Review URL: http://codereview.chromium.org/507036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-22 12:41:45 +00:00
kasperl@chromium.org
f034c31bb2
Fix linto.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-22 12:39:56 +00:00
bak@chromium.org
6742d62c30
- Increased size of number string cache.
...
- Change the instruction order for inlined allocation.
Review URL: http://codereview.chromium.org/501170
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3514 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-22 11:35:05 +00:00
kasperl@chromium.org
6ca5876419
Add fast case stub for BIT_NOT.
...
Review URL: http://codereview.chromium.org/503079
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-22 10:16:27 +00:00
ager@chromium.org
af6971d883
Check for undefined in the binary operation stub when convertion to
...
int32 for bitops. undefined converts to zero in ToInt32 conversions.
Review URL: http://codereview.chromium.org/508020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-22 09:48:55 +00:00
kasperl@chromium.org
8d6a8e2451
Very experimental fix for issue 555.
...
Review URL: http://codereview.chromium.org/508006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3509 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-21 15:09:26 +00:00
erik.corry@gmail.com
14975f3dd0
Optimize implementation of Math.floor a little by special casing
...
the comparison it uses in the code generator. Use Math.floor for
date operations.
Review URL: http://codereview.chromium.org/509007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-21 15:04:00 +00:00
ager@chromium.org
fc26307487
Remove complicated Math.sin and Math.cos optimizations that do not buy
...
us much.
Review URL: http://codereview.chromium.org/509006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3507 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-21 13:30:10 +00:00
ager@chromium.org
827575b0e9
Optimize sine and cosine by checking up front if the fsin or fcos
...
operation can throw an exception.
Review URL: http://codereview.chromium.org/504073
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-21 12:08:59 +00:00
kasperl@chromium.org
9c627d6ba3
The number of heap slots stored in a scope includes the
...
fixed contexts slots. Take this into account when using
the new, fast context creation path to avoid allocating
too many slots (wasteful).
Review URL: http://codereview.chromium.org/501148
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-21 10:24:11 +00:00
erik.corry@gmail.com
73fcafd650
Bring back the fisttp instruction on machines with SSE3, but check the
...
input so we don't have to check the exception flags afterwards.
Review URL: http://codereview.chromium.org/509001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3504 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-21 08:32:20 +00:00
kmillikin@chromium.org
e1b13fc351
Disallow garbage collection at another site in the LoadCallback ICs.
...
MacroAssembler::PopHandleScope emits a runtime call (through a stub),
which should not be allowed to perform a GC but return a failure
instead.
BUG=30790
TEST=none
Review URL: http://codereview.chromium.org/504071
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3501 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-20 08:40:13 +00:00
peter.rybin@gmail.com
d3e63a319b
Reapply "wait for connection" feature implementation
...
Review URL: http://codereview.chromium.org/491079
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 20:30:29 +00:00
kasperl@chromium.org
64e443768e
Recommit r3494 after fixing stupid mistake where the deferred code stub didn't know it was reversed.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3499 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 13:47:58 +00:00
lrn@chromium.org
9b0a967cae
Fast-codegen: Adding support for try/catch and throw.
...
Still no support for lookup-variables, so we bailout if using the catch variable.
Review URL: http://codereview.chromium.org/501076
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3498 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 13:38:28 +00:00
antonm@chromium.org
f8b9e6dd5b
Force mark sweep instead of compcation if size of map space is too big to allow forward pointers encoding.
...
Review URL: http://codereview.chromium.org/507025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3497 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 13:38:09 +00:00
kasperl@chromium.org
12866185ea
Revert r3495 - some weird corner case is broken.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3496 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 13:14:37 +00:00
kasperl@chromium.org
0b4e755047
Improve code generated for left shifts where the left side
...
is a constant by avoiding a few checks.
Review URL: http://codereview.chromium.org/504057
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 13:07:02 +00:00
kasperl@chromium.org
56a6b0cdff
Convert the rest of the sar(xxx, kSmiTagSize) to SmiUntag(xxx).
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3494 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 11:20:25 +00:00
kasperl@chromium.org
546b99b79f
Refactor smi tagging and untagging on IA-32.
...
Review URL: http://codereview.chromium.org/501113
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3493 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 11:13:33 +00:00
erik.corry@gmail.com
0553c7feb9
Optimize bitops with non-Smi inputs. Instead of converting both inputs
...
to floating point and then converting back we convert directly to a
32 bit integer. In addition the bit twiddling implementation of float-
to-integer conversion has been ported from ARM. Testing has shown that
this runs faster than the x87 or SSE3 rounding instructions. This change
is IA32 only. There may be a smaller benefit from doing the same on x64.
Review URL: http://codereview.chromium.org/506052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 09:33:24 +00:00
sgjesse@chromium.org
c7c821fdfb
Prepare push to trunk. We are now working on version 2.0.6
...
Review URL: http://codereview.chromium.org/504056
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3489 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 08:21:21 +00:00
bak@chromium.org
93bbe2acdc
added else
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 06:58:45 +00:00
bak@chromium.org
07742f5672
-Inlined double variant of compare iff one of the sides is a constant smi and it is not a for loop condition.
...
Review URL: http://codereview.chromium.org/507040
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3487 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 06:38:12 +00:00
iposva@chromium.org
13febb2585
- Handle HeapNumbers in deferred code instead of jumping to stub
...
for DeferredInlineBinaryOperations.
Review URL: http://codereview.chromium.org/502067
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-18 01:43:50 +00:00
kasperl@chromium.org
914d4f801d
Optimize the allocation of small, non-nested literal
...
arrays and argument objects on IA-32.
Review URL: http://codereview.chromium.org/503042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3485 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-17 15:35:15 +00:00
kmillikin@chromium.org
6af6a82ae3
Streamline the calling convention of the call ICs by passing the
...
property name in a register rather than on the stack below the
receiver and arguments.
Implemented only for IA32, passing the name in the ecx register to
match the calling convention of the load ICs.
Review URL: http://codereview.chromium.org/502028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3484 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-17 10:23:20 +00:00
kasperl@chromium.org
a3aa9e96ef
Don't bother callling into the ProducerHeapProfile methods
...
if logging producers is turned off.
Review URL: http://codereview.chromium.org/500092
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-17 09:16:44 +00:00
kasperl@chromium.org
f4251cc42c
Enable fast allocation of context objects on IA-32.
...
Review URL: http://codereview.chromium.org/507035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3482 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-17 08:53:19 +00:00
sgjesse@chromium.org
44b7c59eb5
Extend the maximum size map space
...
On 32-bit the maps are now aligned on a 32-byte boundary in order to encode more maps during compacting GC. The actual size of a map on 32-bit is 28 bytes making this change waste 4 bytes per map.
On 64-bit the encoding for compacting GC is now using more than 32-bits and the maps here are still pointer size aligned. The actual size of a map on 64-bit is 48 bytes and this change does not intruduce any waste.
My choice of 16 bits for kMapPageIndexBits for 64-bit should give the same maximum number of pages (8K) for map space. As maps on 64-bit are larger than on 32-bit the total number of maps on 64-bit will be smaller than on 32-bit. We could consider raising this to 17 or 18.
I moved the kPageSizeBits to globals.h as the calculation of the encoding really depended on this.
There are still an #ifdef/#endif in objects.h and this constant could be moved to globaks.h as well, but I kept it together with the related constants.
All the tests run in debug mode with additional options --gc-global --always-compact as well (except for a few tests on which also fails before this change when run with --gc-global --always-compact).
BUG=http://code.google.com/p/v8/issues/detail?id=524
BUG=http://crbug.com/29428
TEST=test/mjsunit/regress/regress-524.js
Review URL: http://codereview.chromium.org/504026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-17 08:53:18 +00:00
kasperl@chromium.org
51aa605e62
Fix ARM and x64 tests in debug mode after r3477.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/500090
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-17 07:35:12 +00:00
iposva@chromium.org
1fa340ff9c
- Fix x64 build.
...
Review URL: http://codereview.chromium.org/500089
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-17 07:18:05 +00:00
iposva@chromium.org
4380812b39
- Undo unfortunate renaming of StaticType.
...
Review URL: http://codereview.chromium.org/506050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3478 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-17 06:21:50 +00:00
kasperl@chromium.org
b1721d4c3e
Improve performance of allocating closures for nested
...
functions by allocating them in new space without
entering the runtime system.
Review URL: http://codereview.chromium.org/506037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3477 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-16 15:43:20 +00:00
kmillikin@chromium.org
e7fd8bb56e
Prepare push to trunk. We are now working on version 2.0.5.
...
Review URL: http://codereview.chromium.org/502031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-16 15:23:25 +00:00
lrn@chromium.org
482d434f4d
Fast codegen: Implement with.
...
Review URL: http://codereview.chromium.org/491077
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-16 09:51:07 +00:00
yurys@chromium.org
bb0431b097
Fix presubmit error: remove whitespace
...
TBR=sgjesse
Review URL: http://codereview.chromium.org/504012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3466 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-15 09:34:00 +00:00
yurys@chromium.org
e88df5b792
Ignore debug break events when bootstrapper is active. Collecting debug data when the context is not yet setup may lead to subtle errors like in the following Chromium bug: http://crbug.com/28933
...
Review URL: http://codereview.chromium.org/497006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3465 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-15 09:17:15 +00:00
vitalyr@chromium.org
fce227ea77
stats-viewer.py: support passing test_shell pid.
...
Review URL: http://codereview.chromium.org/496010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 17:05:38 +00:00
vitalyr@chromium.org
f83180a1eb
Updated stats-viewer.py to work with chromium.
...
Review URL: http://codereview.chromium.org/473002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3463 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 16:13:52 +00:00
kasperl@chromium.org
f0b00d7f02
Do a fast check for undefined values when comparing.
...
Review URL: http://codereview.chromium.org/496008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3462 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 12:18:20 +00:00
lrn@chromium.org
9ff5f9daed
Fast-codegen: Implementing try/finally on top of nesting context.
...
Review URL: http://codereview.chromium.org/492002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3461 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 11:09:25 +00:00
erik.corry@gmail.com
d225baa2b5
Modified SConstruct to enable building of shared library
...
with hidden visibility on Mac OS X. Patch from
Abdulla Kamar. http://codereview.chromium.org/475002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 10:20:35 +00:00
kasperl@chromium.org
4839eb611f
Try to make the contextuality check in the IC code faster
...
by checking if the receiver is a global object before diving
into traversing reloc info.
Review URL: http://codereview.chromium.org/491075
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3459 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 09:54:13 +00:00
sgjesse@chromium.org
f74429b917
Reverted r3457
...
Caused compilation errors in cctests and on ARM platform.
TBR=peter.rybin@gmail.com
Review URL: http://codereview.chromium.org/491074
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-12-14 07:51:59 +00:00