fschneider@chromium.org
6cc0310a72
Mark map-transition stores as map-changing instructions.
...
This prevents code motion from hoisting map-checks across such stores
which may result in unnecessary deoptimizations.
In the following example program we would move a map-check from the inner loop out before the outer loop which is not desirable:
function f() {
var o = {};
var j = 0;
o.a = 1;
do {
o.b = 6; // Map transition
for (var i=0; i<10; i++) {
o.a = o.b + i;
}
} while(++j < 1) {}
}
for (var i = 0; i < 1000000; i++) f();
Review URL: http://codereview.chromium.org/5991001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 13:44:19 +00:00
ager@chromium.org
06ac3b18a0
When setting property on a context extension object do not inherit the
...
attributes from an existing property on a prototype object.
Review URL: http://codereview.chromium.org/5995002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6068 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 13:04:53 +00:00
sgjesse@chromium.org
648fcd906e
Adding Date::ResetCache() API so that the cache values in the Date object
...
can be reset to allow DST / timezone changes to be re-cached and reflected
in the Date object.
Patch by Mark Lam from Hewlett-Packard Development Company, LP
Review URL: http://codereview.chromium.org/5978001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 12:45:27 +00:00
vitalyr@chromium.org
8ff6c23c84
Allow rapid socket reuse on POSIX platforms.
...
Review URL: http://codereview.chromium.org/5990001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6066 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 12:31:42 +00:00
sandholm@chromium.org
578e70a552
Improve regexp split, replace and test.
...
Review URL: http://codereview.chromium.org/5959002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6065 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 11:57:10 +00:00
whesse@chromium.org
83b28cd1fc
Avoid comparing a pointer-to-member to NULL, even though C++ is supposed to support it.
...
Review URL: http://codereview.chromium.org/5988001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6064 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 11:52:10 +00:00
lrn@chromium.org
9f1bcdf8ac
Change quicksort pivot from random to median-of-three.
...
Tweak quicksort bailout parameter to minimize time.
Review URL: http://codereview.chromium.org/5962003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6063 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 10:06:11 +00:00
erik.corry@gmail.com
7b6d7f5ba4
Add a couple of missing includes.
...
Review URL: http://codereview.chromium.org/5899001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 08:58:04 +00:00
ager@chromium.org
0cb7623801
Prepare push to trunk. Now working on version 3.0.4.
...
Also fix files because of missing prepare for push of version 3.0.2
which was pushed directly.
Review URL: http://codereview.chromium.org/5962002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6060 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 08:24:54 +00:00
ager@chromium.org
02382a6d57
Fix 'Optimizations' typo in gyp file.
...
BUG=http://code.google.com/p/v8/issues/detail?id=998
Review URL: http://codereview.chromium.org/5970001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6059 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 07:52:20 +00:00
ricow@chromium.org
717153274f
Reduce number of iterations in new regression test, this times out on arm and the regression is hit with an order of magnitude less iterations.
...
Review URL: http://codereview.chromium.org/5963001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6058 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-17 07:23:06 +00:00
vitalyr@chromium.org
2ba48c0a45
Support loading constant functions in hydrogen.
...
Review URL: http://codereview.chromium.org/5878004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6057 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 22:30:53 +00:00
fschneider@chromium.org
73737fcdb6
Fix bugs in the range analysis for integers.
...
The overflow conditions were not correctly detected for
certain add, sub and mul instructions.
I replaced the previous code by using 64-bit arithmetic
to correctly identify overflows for *, + and -.
Review URL: http://codereview.chromium.org/5860009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6055 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 18:01:36 +00:00
vitalyr@chromium.org
5e86c6c752
Use near labels in write barrier code.
...
Review URL: http://codereview.chromium.org/5939003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6054 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 17:45:26 +00:00
vitalyr@chromium.org
3dd300df48
Emit better code when pushing a constant.
...
Review URL: http://codereview.chromium.org/5884003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6053 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 16:56:45 +00:00
ager@chromium.org
6e30a77ab5
A number of instructions use GVN but do not provide a comparison
...
function for the data. This leads to wrong results where operations
are wrongly assumed to have the same value as a previous (different)
operation.
Provide the data comparison functions.
BUG=995
Review URL: http://codereview.chromium.org/5898003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 15:40:02 +00:00
kmillikin@chromium.org
4f231f59b4
Fix an issue discovered in regress-969.
...
When running with 10 stress runs we get polymorphic stores. This revealed
an incorrect bailout ID for the state following a polymorphic store. The ID
should be the internal ID of the assignment side-effect, not the ID of the
end of the expression.
Review URL: http://codereview.chromium.org/5885003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 14:18:41 +00:00
ricow@chromium.org
a362f1d0f7
Add flag for running with a non standard number of stress-runs.
...
This allows easy testing with more than 5/2 stress runs in
release/debug and will allow us to have a nightly run with e.g., 10
stress runs in debug mode.
Review URL: http://codereview.chromium.org/5903003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6050 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 13:24:23 +00:00
kmillikin@chromium.org
4a6ef3ee28
Fix issue 977, occasional failure of the DeltaBlue benchmark.
...
Before, when we deoptimized after a branch we jumped to before the branch
was taken in the unoptimized code with a token value that indicated when
edge to take. There was a lot of machinery to track this value through the
short-circuit logical operations and logical negation, and to handle it
properly at inline function return sites. There was also machinery to
prevent incorrectly seeing this environment with the extra value never
actually materialized in the unoptimized code.
Instead, now we deoptimize directly to one of the targets of the branch.
Much but not yet all of the extra machinery has been removed or simplified.
The cost is that branching control structures (the looping statements, if
statements, conditional expressions, and the short-circuit binary logical
operations) need extra AST IDs to identify the branch targets.
Review URL: http://codereview.chromium.org/5908001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 13:13:36 +00:00
ager@chromium.org
1b67320800
Perform more aggressive time to NaN conversions. Our internal date
...
methods rely on the time values passed in being within a certain range
- not significantly larger than the the ECMA 262 specified time
range. When creating a time, always make it NaN if there is no way
that it can be within range even after UTC conversion.
Review URL: http://codereview.chromium.org/5905003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 13:02:09 +00:00
lrn@chromium.org
b20f0968fa
Change DefaultString and DefaultNumber to match the spec required behavior.
...
Previously it did two reads of the .toString and .valueOf properties where
only one was allowed.
Review URL: http://codereview.chromium.org/5950001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6047 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 12:49:55 +00:00
mikhail.naganov@gmail.com
75d5ad65c4
Fix presubmit errors
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6046 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 12:26:04 +00:00
ricow@chromium.org
357afa385b
Change Object.defineProperty to accept undefined as getters and setters and to correctly accept overriding an accessor with a data property.
...
In the past we only accepted functions as argument for setting an
accessor. Since one should be able to set an accessor to undefined
this had to be changed to take either.
In addition, we did not lookup properties in the prototype chain,
causing us to call the setter of an existing accessor up the prototype
chain when trying to replace an existing accessor (that was not local)
with a data property.
Review URL: http://codereview.chromium.org/5861006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 12:21:08 +00:00
mikhail.naganov@gmail.com
e521db4afa
Make V8 compilable with profiling support turned off.
...
BUG=990
Review URL: http://codereview.chromium.org/5890003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6044 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 12:14:56 +00:00
fschneider@chromium.org
cdc7d3908e
Fix a SEGV in the register allocator.
...
This occasionally caused the regress-806 unit test to crash.
Review URL: http://codereview.chromium.org/5913002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6043 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 12:01:22 +00:00
sgjesse@chromium.org
d559d8c6c0
IA32: Optimize instanceof
...
The instanceoff stub now supports arguments in registers and checks for null,
smi and string values without going to runtime.
Needs porting to X64 and ARM.
Review URL: http://codereview.chromium.org/5828004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-16 08:58:42 +00:00
peter.rybin@gmail.com
e9c989b8fa
Fix evaluate with context debug protocol
...
Review URL: http://codereview.chromium.org/5866002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6039 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 19:55:51 +00:00
vegorov@chromium.org
ed59e77256
Fix several register allocation issues revealed by fuzzer:
...
- LIsObject had incorrect contraint for value input;
- Temporaries had incorrect lifetime intervals;
- Live ranges for live_out values was not covering the whole block.
Review URL: http://codereview.chromium.org/5899002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6038 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 18:13:02 +00:00
vitalyr@chromium.org
7a3fd2aa52
Deoptimize non-smi switch cases if they are reached.
...
This way if the type oracle says an unreachable clause has a non-smi
type, we can still emit optimized code instead of doing an early
bailout.
This change depends of Florian's r5970.
Review URL: http://codereview.chromium.org/5812005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6037 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 17:11:11 +00:00
kmillikin@chromium.org
bccab25564
Fix compilation on x64.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/5873003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6036 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 16:37:17 +00:00
kmillikin@chromium.org
ace6290452
Fix issue 974.
...
When entering a finally block in unoptimized code, we unconditionally
save the accumulator register in the stack in case it holds a return
value or an exception. In the case of a break, continue, or falling
off the end of the try or catch block, this value is unpredictable and
not necessarily safe for GC.
Review URL: http://codereview.chromium.org/5883003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 16:14:29 +00:00
fschneider@chromium.org
c03c71a937
Emit a load of the elements array only before the first store.
...
This avoid emitting the load for empty and constant array literals.
Review URL: http://codereview.chromium.org/5697006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6034 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 16:12:55 +00:00
whesse@chromium.org
564d65958f
Mark TranscendentalCacheSSE2Stub as allowing internal stub calls. Mark pextrd instruction as requiring SSE 4.1.
...
Review URL: http://codereview.chromium.org/5901001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 16:10:13 +00:00
ager@chromium.org
06a684d353
Fix deoptimization from %_MathPow. Do not prepare the stack for a C
...
call and then bailout without performing the call.
In order to not duplicate code, convert both heap number and smi to a
double in an xmm register if possible. Then setup the stack and call
the C function.
BUG=http://code.google.com/p/v8/issues/detail?id=986
Review URL: http://codereview.chromium.org/5900001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6032 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 15:25:53 +00:00
vegorov@chromium.org
655b30858d
Fix issue 982.
...
When splitting at the beginning of a use interval assign coinciding position to the split child instead of leaving it to parent.
BUG=v8:982
Review URL: http://codereview.chromium.org/5898001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6031 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 14:35:46 +00:00
fschneider@chromium.org
b93a0f5d9a
Second attempt: Improve our type feedback by recogizining never-executed IC calls for binary operations.
...
This is an improved version of my earlier change r5970. It avoids degrading the
non-optimized code.
Initially we emit a conditional branch that is either always- or never-taken
after a smi-check (depending on whether we test for smi for for non-smi)
Since test-eax always sets the carry-flag to 0 we use jump-if-carry and
jump-if-not-carry.
The first invocation of the stub patches a jc with a jz and
jnc with a jnz-instruction so that the code looks exactly as it was
without patching. The only difference is the test- or nop-instruction
after the IC-call.
Review URL: http://codereview.chromium.org/5763004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 13:56:41 +00:00
lrn@chromium.org
3ed6c2a12f
Fix ES5 failure after removing Number/String/Boolean.prototype.toJSON.
...
The failure is that we no longer fail the tests.
Review URL: http://codereview.chromium.org/5896001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6028 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 12:39:18 +00:00
erik.corry@gmail.com
2996dca6aa
Support %_IsObject in Crankshaft.
...
Review URL: http://codereview.chromium.org/5806001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6027 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 12:32:19 +00:00
kmillikin@chromium.org
eb7b4e347e
Fix issue 979.
...
The issue is caused when deoptimizing to an internal AST ID in a
postfix increment or decrement operation on variable. This could
happen for a global variable. In that case, the optimized code was
not properly simulating an extra stack slot in the unoptimized code to
hold the original value.
Review URL: http://codereview.chromium.org/5871002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6025 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 11:47:05 +00:00
karlklose@chromium.org
88dfadd090
Fix presubmit error.
...
Review URL: http://codereview.chromium.org/5891001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6024 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 11:43:35 +00:00
karlklose@chromium.org
5f962f2eb2
Add array bound checks to code generated for SwapElements. This fixes a bug that lead to a segfault when an array was modified while it was sorted.
...
Review URL: http://codereview.chromium.org/5686006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6020 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 09:52:58 +00:00
lrn@chromium.org
f118f44130
Fix regression in JSON serialization of RegExps.
...
Tweaks to the serialization.
Review URL: http://codereview.chromium.org/5676005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6018 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 09:31:05 +00:00
erik.corry@gmail.com
d25755eeea
Add some missing includes and other minor changes intended to keep
...
the distance between bleeding edge and the gc branch minimal.
Review URL: http://codereview.chromium.org/5788002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6016 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 08:07:27 +00:00
ager@chromium.org
d3341acd45
Landing for Martin Maly.
...
Update the XCode project file.
Updating the Xcode project after crankshaft landed.
Codereview URL: http://codereview.chromium.org/5834001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6015 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 07:47:35 +00:00
ager@chromium.org
5dc1d7a126
Update test expectations for ARM crankshaft build.
...
Review URL: http://codereview.chromium.org/5813002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6014 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 07:46:22 +00:00
vitalyr@chromium.org
57e072298f
Merge math function ids and custom call generator ids.
...
Two old id types are replaced by builtin function ids. We can use
these in the code generators to emit custom code for the selected
functions.
Review URL: http://codereview.chromium.org/5767002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6013 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-14 18:53:48 +00:00
erik.corry@gmail.com
5b55e1ad9a
API: Correct documentation of String::WriteUtf8, String::Write
...
and String::WriteAscii and add test. Correct implementation of
String::Write, fixing bug 975 (the patch in that bug was not
used, however).
Review URL: http://codereview.chromium.org/5718005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6011 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-14 13:21:46 +00:00
whesse@chromium.org
c23c244add
Reapply change 5989, adding untagged double calls to Math.pow, with problem in generated code for TranscendentalCacheSSE2Stub (unguarded SSE 4.1 code) fixed.
...
Review URL: http://codereview.chromium.org/5726008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-14 13:21:29 +00:00
ricow@chromium.org
cd2f41f7dd
Don't run mjsunit/compiler/regress-funcaller in debug mode.
...
This test takes 12+ minutes to run on the windows slaves. In addition,
the regression is hit in release mode on the code prior to the fix for
this.
Review URL: http://codereview.chromium.org/5701006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-14 13:15:28 +00:00
whesse@chromium.org
ce1473b257
Postpone interrupts during marking garbage collection. This allows the check for C stack overflow to function correctly.
...
Review URL: http://codereview.chromium.org/5685010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6006 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-14 11:48:42 +00:00