yangguo@chromium.org
8a61d3f2fd
Port r11517 (not deopt Math.floor on negative input) to x64, sse2.
...
BUG=v8:873
TEST=math-floor-negative.js
Review URL: https://chromiumcodereview.appspot.com/10636057
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-27 07:27:28 +00:00
yangguo@chromium.org
20ebd21b09
Port r7868 (constant masking) to x64.
...
BUG=v8:1374
TEST=test-compiler/SplitConstantsInFullCompiler
Review URL: https://chromiumcodereview.appspot.com/10662045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11932 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-26 13:56:48 +00:00
verwaest@chromium.org
41560e9f5f
Separate stub types from property types.
...
Review URL: https://chromiumcodereview.appspot.com/10656018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11920 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-25 11:35:23 +00:00
jkummerow@chromium.org
9ce4133017
Make near-jump check more strict in LoadNamedFieldPolymorphic on ia32/x64
...
BUG=134055
TEST=mjsunit/regress/regress-crbug-134055
Review URL: https://chromiumcodereview.appspot.com/10630027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11907 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-22 13:38:39 +00:00
verwaest@chromium.org
1cff0c498e
Cleaning up usage of lookup results.
...
- Ensure that IsFound() is only used when not in combination with other
checks. To do so, the default type is NONEXISTENT rather than NORMAL;
and NotFound() also resets the type to NONEXISTENT.
- Use test methods rather than .type() == A_PROPERTY_TYPE.
Review URL: https://chromiumcodereview.appspot.com/10626004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-21 15:32:52 +00:00
yangguo@chromium.org
41113d7301
Fix Windows build.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10578039
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-20 14:22:32 +00:00
yangguo@chromium.org
e4f4aad2d1
x86/x64 port of Math.floor(x/y) to use integer division for specific divisor.
...
Only handles when x is int32 and y is int32 constant.
BUG=v8:2038
Currently implemented by imul (not fpmul).
x86 and x64 algorithm differs a bit.
x86 implementation is kind of cumbersome, but I couldn't think of better ways.
Review URL: https://chromiumcodereview.appspot.com/10382033
Patch from Zheng Liu <zheng.z.liu@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11887 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-20 14:08:03 +00:00
erik.corry@gmail.com
d31ed98428
Fix GC bug with missing handle. Bug=133618
...
Review URL: https://chromiumcodereview.appspot.com/10559083
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11886 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-20 13:40:10 +00:00
sanjoy@chromium.org
9e4fbb45c1
One Zone per CompilationInfo.
...
The CompilationInfo record now saves a Zone, and the compiler pipeline
allocates memory from the Zone in the CompilationInfo. Before
compiling a function, we create a Zone on the stack and save a pointer
to that Zone to the CompilationInfo; which then gets picked up and
allocated from.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10534139
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-20 08:58:41 +00:00
yangguo@chromium.org
a075583479
Unbreak interpreted regexp.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10535164
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 17:06:16 +00:00
fschneider@chromium.org
bb0a2ea766
Share optimized code for closures.
...
Each SharedFunctionInfo gets an optimized code map to store
one optimized code object per context. When allocating a new
closure we consult this map and check if there is optimized code
that can be shared.
This patch is based on an original patch
by Anton Muhin (http://codereview.chromium.org/6793013/ ).
BUG=v8:2087, v8:2094
TEST=test/mjsunit/compiler/optimized-closures.js
Review URL: https://chromiumcodereview.appspot.com/10103035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 14:06:22 +00:00
yangguo@chromium.org
675d9b8a04
Add missing string length check in regexp engine.
...
R=erik.corry@gmail.com
BUG=v8:2172
TEST=regress-2172.js
Review URL: https://chromiumcodereview.appspot.com/10536170
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 13:59:48 +00:00
yangguo@chromium.org
ce6aa5c251
Remove faster ticks for debug mode.
...
This solves the problem that code runs very slow when the debugger is enabled.
BUG=v8:2179
TEST=
Review URL: https://chromiumcodereview.appspot.com/10544135
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-13 14:07:50 +00:00
erikcorry
5eb4baed65
Fix r11780 to avoid bugs where near branches are used to labels that are out of range.
...
Review URL: http://codereview.chromium.org/10542137
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11792 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-13 09:54:34 +00:00
erikcorry
0418b67142
Add negative lookups to polymorphic loads in Crankshaft.
...
Review URL: http://codereview.chromium.org/10539110
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11780 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-12 15:44:12 +00:00
danno@chromium.org
43a1f5e25d
Eliminate redundant smi checks
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10543094
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11774 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-12 12:16:19 +00:00
vegorov@chromium.org
75ca3e3395
Reimplement dynamic frame alignment for frames that are compiled via OSR or have more than 2 double spill slots.
...
The first spill slot is now reserved on all optimized frames to distinguish frames that were aligned.
Review URL: https://chromiumcodereview.appspot.com/10532066
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-12 10:22:33 +00:00
svenpanne@chromium.org
e6f2eab7f6
Implemented StoreIC for setters.
...
Review URL: https://chromiumcodereview.appspot.com/10534091
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11771 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-12 09:32:17 +00:00
ulan@chromium.org
75a1fa91ef
Reland r11425 "Re-enable optimization for hot functions that have optimization disabled due to many deopts."
...
Fix performance regressions introduced in r11425 by
- counting number of function deoptimizations instead of function optimizations,
- packing several counters into one field of shared function info.
BUG=v8:2040,121196
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10534063
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11766 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 16:57:27 +00:00
sanjoy@chromium.org
d67e1d4fe9
AssemblerBase does not need remember a Zone. Fix this.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10546095
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11765 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 16:47:08 +00:00
yangguo@chromium.org
09179b314a
Reland r11753: Fix try..finally.
...
R=ulan@chromium.org
BUG=129171
TEST=test-api/TryFinallyMessage, mjsunit/try-finally-continue.js
Review URL: https://chromiumcodereview.appspot.com/10540095
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11762 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 13:18:05 +00:00
sanjoy@chromium.org
6125718f37
Remove TLS access for current Zone.
...
By passing around a Zone object explicitly we no longer need to do a
TLS access at the sites that allocate memory from the current Zone.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10534006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11761 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 12:42:31 +00:00
yangguo@chromium.org
e98fb1028b
Revert r11753.
...
R=mstarzinger@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10546092
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 11:21:21 +00:00
yangguo@chromium.org
1b25fb8fa9
Preserve error message during finally block in try..finally.
...
R=ulan@chromium.org
BUG=129171
TEST=test-api/TryFinallyMessage
Review URL: https://chromiumcodereview.appspot.com/10537078
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 10:51:09 +00:00
verwaest@chromium.org
2b574ef580
Promoting elements transitions to their own field.
...
This is a first step towards separating all transitions from the property descriptions. If we link the property descriptions from the transition object, this will in allow the descriptor array (property descriptions) to become immutable.
Review URL: https://chromiumcodereview.appspot.com/10444055
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11750 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 06:59:56 +00:00
svenpanne@chromium.org
128f426e06
Tentative fix for overly clever Mac compiler.
...
TBR=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10543074
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11736 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-08 09:15:32 +00:00
svenpanne@chromium.org
40dbd13e2e
Added LoadIC stub for getters.
...
Removed some dead constants on the way.
Review URL: https://chromiumcodereview.appspot.com/10515008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11735 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-08 08:48:05 +00:00
mstarzinger@chromium.org
81e8aa0016
Implement implicit instance checks for API accessors.
...
This allows to specify a constructor against which an implicit instance
check is performed for API accessors. If the receiver is incompatible,
an implicit TypeError is thrown and no callback is invoked.
R=svenpanne@chromium.org
BUG=v8:2075
TEST=cctest/test-api/InstanceCheckOn[*]
Review URL: https://chromiumcodereview.appspot.com/10442129
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-08 07:45:11 +00:00
danno@chromium.org
16e4c29513
Optimize write barrier of map-only elements transitions
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10544005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11729 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-06 11:05:28 +00:00
erik.corry@gmail.com
c3e6fab818
Remove CheckNotRegistersEqual regexp-masm function from all architectures. This is a commit of http://codereview.chromium.org/10066009/ for Daniel Kalmar
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11721 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-06 07:50:22 +00:00
sanjoy@chromium.org
98db16d94f
Progress towards making Zones independent of Isolates and Threads.
...
This CL changes some parts of the code to explicitly pass around a
Zone. Not passing in a zone is okay too (in fact most of v8 still
doesn't), but that may incur a TLS lookup.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10443114
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-04 14:42:58 +00:00
yangguo@chromium.org
85e3fba8a3
Remove unnecessary code for non-zero-length global regexps.
...
Also fixing a bug in the arm implementation.
BUG=
TEST=regexp-global.js
Review URL: https://chromiumcodereview.appspot.com/10383280
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-04 08:49:17 +00:00
rossberg@chromium.org
e4c472a7af
Implement correct checking for inherited readonliness on assignment.
...
Removes 6 out of 8 of our remaining unintentional failures on test262.
Also fixes treatment of inherited setters added after the fact.
Specifically:
- In the runtime, when looking for setter callbacks in the prototype chain,
also look for read-only properties. If one is found, reject (exception in
strict mode). If a proxy is found, invoke proper trap.
Note: this folds in the CanPut function from the spec and avoids an extra
lookup over the prototype chain.
- In generated code for stores, insert a test for the maps from the prototype
chain, but only up to the object where the property already exists (which
may be the object itself).
In Hydrogen, if the found property is read-only or not cacheable (e.g. a
proxy), bail out; in a stub, generate an unconditional miss (to get an
exception in strict mode).
- Add test cases and adapt existing test expectations.
R=mstarzinger@chromium.org
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10388047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11694 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-01 10:51:36 +00:00
mstarzinger@chromium.org
ebe9a0e0b2
Fix missing write barrier in store field stub.
...
R=vegorov@chromium.org
BUG=v8:2143,v8:1465,chromium:129355
TEST=cctest/test-heap/Regress2143
Review URL: https://chromiumcodereview.appspot.com/10443052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-29 16:39:26 +00:00
danno@chromium.org
9910edbb9a
Implement tracking and optimizations of packed arrays
...
R=jkummerow@chromium.org
TEST=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10170030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-23 14:24:29 +00:00
yangguo@chromium.org
7ab5dcf4df
Fix stack push order when reserving space for regexp registers on Windows.
...
TBR=erik.corry@gmail.com
BUG=
TEST=test-regexp/MacroAssemblerNativeLotsOfRegisters
Review URL: https://chromiumcodereview.appspot.com/10407095
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-22 15:30:08 +00:00
yangguo@chromium.org
578fc3cc2d
Implement loop for global regexps in regexp assembler.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10386090
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11623 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-22 14:05:44 +00:00
mmassi@chromium.org
2fd1e1bbc2
Array index computation dehoisting.
...
When an array index (in an array access) is a simple "expression + constant", just embed the constant in the array access operation so that the full index expression is (potentially) no longer used and its live range can be much shorter.
This is effective in conjunction with array bounds check removal (otherwise the index is anyway used in the check).
Review URL: https://chromiumcodereview.appspot.com/10382055
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-21 07:59:50 +00:00
erik.corry@gmail.com
3d45e98b5e
Remove %_SwapElements. This inlined runtime contained an optimization that was dangerous in the presence of incremental compaction. It also prevented QuickSort from array.js from being optimized by Crankshaft, so it is probably better to do without it. We have high hopes that this will fix bug=117879.
...
Review URL: https://chromiumcodereview.appspot.com/10392150
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-17 20:53:32 +00:00
peter.rybin@gmail.com
401fbbaef6
Fix issue 825 (LiveEdit vs. function with no locals) for x64.
...
Review URL: https://chromiumcodereview.appspot.com/10387116
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11587 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-16 21:15:24 +00:00
erik.corry@gmail.com
423451aed7
Simplify DoLoadNamedFieldPolymorphic
...
Review URL: https://chromiumcodereview.appspot.com/10386089
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-11 09:13:02 +00:00
erik.corry@gmail.com
50ecb6f011
Fix compose-discard crasher from 11524. We can't do a call (to a generic
...
stub) unless there is a pointer map. This does not fix the 3d-raytrace
regression, that will be in another change.
Review URL: https://chromiumcodereview.appspot.com/10382102
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11539 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-10 20:34:06 +00:00
jkummerow@chromium.org
63263a9aa9
Fix unsigned-Smi check in MappedArgumentsLookup
...
BUG=126414
TEST=mjsunit/regress/regress-crbug-126414
Review URL: https://chromiumcodereview.appspot.com/10375033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-07 10:05:39 +00:00
yangguo@chromium.org
718ec5eb64
Handle negative number in Math.floor,ia32,non-SSE4.1 code path.
...
Zheng Liu
zheng.z.liu@intel.com
Review URL: https://chromiumcodereview.appspot.com/10168001
Patch from Zheng Liu <zheng.z.liu@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-04 15:50:43 +00:00
peter.rybin@gmail.com
1719a1499a
Fix issue 825 (LiveEdit vs. function with no locals) in core and for ia32.
...
Review URL: https://chromiumcodereview.appspot.com/10263002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-03 17:31:34 +00:00
mstarzinger@chromium.org
d965561862
Fix register clobbering in LoadIC for interceptors.
...
This fixes a corner-case where the receiver register was clobbered by
LoadICs for interceptors and inlined followup code still relied on the
receiver to be intact in case of prototype changes.
R=vegorov@chromium.org
BUG=chromium:125988
TEST=cctest/test-api/Regress125988
Review URL: https://chromiumcodereview.appspot.com/10358010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-03 11:28:24 +00:00
mstarzinger@chromium.org
c810016e77
Implement clearing of CompareICs.
...
This allows CompareICs to be cleared during garbage collection to avoid
cross-context garbage retention through maps stored in CompareIC stubs
for the KNOWN_OBJECTS state.
R=vegorov@chromium.org
BUG=v8:2102
Review URL: https://chromiumcodereview.appspot.com/10263008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11491 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-03 10:54:17 +00:00
yangguo@chromium.org
ce8f4df9b2
Small patch to save one jump instruction and one label bind in JSEntryStub.
...
BUG=v8:2105
TEST=
Review URL: https://chromiumcodereview.appspot.com/10249003
Patch from Zhongping Wang <kewpie.w.zp@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-02 12:13:39 +00:00
jkummerow@chromium.org
0133965d1b
Fix mistakes in r11472
...
TBR=vegorov@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10274008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-30 17:06:13 +00:00
jkummerow@chromium.org
f6dacfe83a
Fixed corner cases in truncation behavior when storing to TypedArrays.
...
Also simplified ia32 KeyedStoreStubCompiler::GenerateStoreExternalArray a bit.
BUG=v8:2110
TEST=mjsunit/regress/regress-2110
Review URL: https://chromiumcodereview.appspot.com/10260011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11472 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-30 15:17:59 +00:00