Commit Graph

93 Commits

Author SHA1 Message Date
svenpanne@chromium.org
f39b0dfccb Handle all kind of arguments in the ToBooleanStub. While this is not very thrilling in itself, it is one of several steps to add type recording to this stub. Removed a duplicate check for null in the ARM stub and made a tiny simplification, removing a sub instruction.
As a side note, this change has some positive impact on the performace, e.g. imaging-darkroom is 8.3% faster and ws-ieee754conv is even 19.9% faster. No idea why the speedup is so big in some cases, but never look a gift horse in the mouth... ;-)
Review URL: http://codereview.chromium.org/7042004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7926 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-18 10:40:01 +00:00
danno@chromium.org
ecc25bfb47 Add enumeration to specify if smi check needed
R==ager@chromium.org
BUG=none
TEST=none

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-17 12:05:06 +00:00
fschneider@chromium.org
e3fd7c450e Fix presubmit errors.
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/7017011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7912 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-17 11:24:38 +00:00
fschneider@chromium.org
7d446f7f4c Fix bug restoring of JS entry sp so to fix profiler-related valgrind issues.
The profiler did not correctly identify when there was a JS frame
on the stack after an exception was thrown.

I also refactored the code to use PopTryHandler macro-instructions on all platforms

BUG=73722
TEST=No more valgrind errors related to v8::internal::StackFrameIterator.
Review URL: http://codereview.chromium.org/7019010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7910 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-17 11:11:12 +00:00
fschneider@chromium.org
48077e89e9 Remove support for branch hints from the IA32 and X64 assembler.
They were not on by default and should not be needed on modern
platforms.
Review URL: http://codereview.chromium.org/7001025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-11 13:26:07 +00:00
jkummerow@chromium.org
e90d16953c Remove NearLabel, replacing remaining occurrences with Label
TEST=compiles, existing tests pass

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7848 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-11 09:12:16 +00:00
jkummerow@chromium.org
2d38ad98fd fix x64 build error (introduced by rebasing)
TEST=compiles

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7833 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-10 09:15:21 +00:00
jkummerow@chromium.org
95ff85112f Merge Label and NearLabel
by adding NearLabel's functionality to Label and introducing a "near" parameter to jump instructions.

TEST=compiles; existing tests still pass.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-10 09:03:42 +00:00
vegorov@chromium.org
d9c80d4771 Propagate a Failure from GenerateDictionaryNegativeLookup instead of causing GC.
Review URL: http://codereview.chromium.org/6973001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7829 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-09 16:15:18 +00:00
vitalyr@chromium.org
07ed2f1263 Compare IC: add SYMBOLS state.
Review URL: http://codereview.chromium.org/6960011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-09 13:30:04 +00:00
vitalyr@chromium.org
913ce07e2f Extract common code in string compare loops.
Review URL: http://codereview.chromium.org/6927044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-06 14:19:51 +00:00
vegorov@chromium.org
9a9211e22d Unroll more StringDictionary lookup probes both for positive and negative dictionary lookups.
Review URL: http://codereview.chromium.org/6932010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7795 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-05 12:30:57 +00:00
vitalyr@chromium.org
5b2e2636b7 Faster string equals in generated code.
In my previous change I mixed up "compare" and "equals". This made us
miss the fast length check before comparing strings for equality.

Now we have a separate helper for "equals". It shares some of the
inner loop details with "compare". I'll see if this can be cleaned up
without making it unreadable.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7794 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-05 11:40:08 +00:00
fschneider@chromium.org
b4022f7b73 Fix bug in x64 >>> operator.
Whenever >>> produces a non-smi result, the binary op stub would
return a wrong result in case of a failed new-space allocation.

This also fixes the (flaky) sparse-array-reverse test which was failing
sometimes because of this.

BUG=v8:1359
TEST=mjsunit/sparse-array-reverse.js
Review URL: http://codereview.chromium.org/6927013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7790 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-05 08:17:31 +00:00
vitalyr@chromium.org
4ca7b50990 Compare IC: add STRINGS state.
BUG=1340

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7783 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-04 18:30:37 +00:00
whesse@chromium.org
014e42a81f Fix unary sub IC heap number code on x64: an untagged double was pushed on the stack and GCd.
BUG=1352
TEST=mjsunit/math-abs

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-02 12:55:44 +00:00
svenpanne@chromium.org
238349f2a7 Removed dead code: GenericUnaryOpStub is not used anymore, as a consequence, NegativeZeroHandling and UnaryOpFlags are dead, too.
Review URL: http://codereview.chromium.org/6903124

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7731 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-29 17:49:53 +00:00
svenpanne@chromium.org
fd5bff856e Fixed compilation breakage due to warnings. TBR...
Review URL: http://codereview.chromium.org/6880286

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7711 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-28 21:02:14 +00:00
svenpanne@chromium.org
e013d4f0a4 Type recording for unary ops
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7707 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-28 17:49:55 +00:00
lrn@chromium.org
3b445f14f8 X64 tweaks.
Use movapd instead of movsd to move between xmm registers. Avoids partial
register writes and potential stalls.

Use xorps instead of xorpd to zero a register. Same effect and latency, but
one byte smaller.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-15 13:06:41 +00:00
vitalyr@chromium.org
cc782be64e Support string add in crankshaft:
o The type recording binary stub got a new type for string + string.

o Added HStringAdd and LStringAdd based on the new type info.

o Started using HValue types to avoid unneccesary checks.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-15 06:39:36 +00:00
karlklose@chromium.org
f7840f65f0 Isolates: Cleanup usage of FACTORY in code stubs and bootstrapper.
Review URL: http://codereview.chromium.org/6720014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-14 08:01:19 +00:00
lrn@chromium.org
c0aa591bbb X64: Tweak code generation slightly.
Uses a shorter opcode for movl and movb with immediates.
Make movl preferable to movq in Set(register, int64_t) and use Set in more places.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-12 13:20:51 +00:00
fschneider@chromium.org
544a436425 Remove code from the deprecated GenericBinaryOpStub.
All platforms are now using the TypeRecordingBinaryOpStub.

I also removed the ARM IntegerModStub which was called from
the GenericBinaryOpStub.
Review URL: http://codereview.chromium.org/6826032

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-11 09:39:21 +00:00
lrn@chromium.org
ce5500e639 X64: Convert HeapNumbers that contain valid smi values to smis in binop-stub.
When the TypeRecordingBinaryOpStub expect smi values as input, they might
sometimes come as HeapNumbers. The transition code will detect the heap numbers
as holding values that are valid smi values, and will not change the expectations.
However, the stub didn't handle HeapNumbers and always tried to transition again.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-08 12:34:00 +00:00
vegorov@chromium.org
8a8d3bbbee In LCodeGen::DoDeferredLInstanceOfKnownGlobal emit safepoint with registers for the call to stub.
Review URL: http://codereview.chromium.org/6793017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7541 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-07 13:32:45 +00:00
lrn@chromium.org
39ac44216e Fix bad deoptimization tests for double-to-int conversion.
Deopted on zero result, not just bad cvttsi2sd conversion.
Add inline floating point result for SHR in Smi TypeRecordingBinaryOpStub.
Small optimizations.

Adding rightshift to case handled by floating point result in type-recording binary op stub.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-07 10:44:39 +00:00
lrn@chromium.org
058d82a3df X64: Allow the type recording binary op stub to create heapnumber results.
Review URL: http://codereview.chromium.org/6803010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-06 12:52:51 +00:00
lrn@chromium.org
03fd56022b Remove unused last_pc_ in AssemblerX64.
Remove unneeded checks for SSE2 in X64 code.
Remove an unneeded check for SSE3 where the X64 code doesn't use SSE3 features.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-06 08:41:28 +00:00
whesse@chromium.org
ac5d0019bc Revert "Made test.py not mention the defunct --crankshaft flag."
This reverts svn r7477.

BUG=
TEST=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-01 13:27:28 +00:00
lrn@chromium.org
65fb2cf9cb Made test.py not mention the defunct --crankshaft flag.
Cleanup of X64 assembler.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7477 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-04-01 13:07:37 +00:00
vitalyr@chromium.org
179aef2b8f VM initialization refactoring.
This patch introduces global once per-process initialization and moves
the OS and CPU setup there. This makes CPU features isolate-independent.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7462 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-31 16:17:37 +00:00
fschneider@chromium.org
fb457a8b87 Add binary-op stub variant to handle oddball objects more efficiently.
Review URL: http://codereview.chromium.org/6744006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-28 16:36:08 +00:00
ager@chromium.org
1bdc8031fa Introduce accessors on builtins instance and use them to avoid TLS access when getting builtins.
R=vitalyr@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7327 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-23 13:40:07 +00:00
ager@chromium.org
4f5de28a9b Avoid TLS access for counters.
Get rid of the COUNTERS macro and fetch the counters from a locally
stored isolate instead.

R=karlklose@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7321 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-23 11:13:07 +00:00
lrn@chromium.org
a224db3a50 X64: Optimize access to external references.
Access to an ExternalReference in non-serializable code will try to use
an offset relative to the root-array register.
Since the root-array is in the Heap object, and the Heap object is in
the Isolate object, there's a good chance that any external data field
is within a 32-bit offset of the root array register.
It falls back on the original behavior if the serializer is enabled,
if the root register isn't initialized or if the offset is not representable
as a 32-bit value.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7315 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-23 09:05:13 +00:00
ager@chromium.org
b69591bc0f Require an isolate parameter for most external reference creation to
avoid TLS access in connection with external references.

Make the isolate accessible via the assembler.

Only for ia32 at this point. If this looks OK to you I will port it.

R=vitalyr@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-22 13:20:04 +00:00
vitalyr@chromium.org
7976ca2cbc Merge isolates to bleeding_edge.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7271 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-18 20:35:07 +00:00
vitalyr@chromium.org
76e226f832 Revert r7268: it borked the history.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7269 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-18 19:41:05 +00:00
vitalyr@chromium.org
6ff7fdebd3 Merge isolates to bleeding_edge.
Review URL: http://codereview.chromium.org/6685088

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-18 18:49:56 +00:00
mmaly@chromium.org
4cbf3478d8 Implement strict mode ThrowTypeError functions for arguments object.
* Reverse order of arguments in-object fields for length and callee.
* Introduce arguments ThrowTypeError functions (caller/callee).
* Create strict mode arguments boilerplate object.
* Strict mode "new arguments object" stub.
* Runtime arguments object allocation.
* Update es5conform test expectations.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-17 20:28:41 +00:00
mmaly@chromium.org
55906eb46e Implement fast path for strict closure creation.
Review URL: http://codereview.chromium.org/6677036/

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7251 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-17 20:28:30 +00:00
erik.corry@gmail.com
941701d0b9 Fix SmiCompare on 64 bit to distinguish between comparisons where
we know that both sides are Smi and those where we don't.  Fix inlined
symbol table probes to cope with strings, undefined and null (indicating
a deleted entry).  Some changes to other architectures that were found
with the new asserts.
Review URL: http://codereview.chromium.org/6682026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7172 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-15 10:03:57 +00:00
vitalyr@chromium.org
8700f796e4 Remove unused StringCharCodeAt stub.
Review URL: http://codereview.chromium.org/6690014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7163 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-14 16:54:51 +00:00
whesse@chromium.org
55815b5fd5 X64: Load more values from the root array, rather than from immediate 64-bit constants.
Review URL: http://codereview.chromium.org/6676025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7150 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-11 13:33:39 +00:00
lrn@chromium.org
d57a8b0a07 X64: Change kSmiConstantRegister to r12.
We never use the smi register in places where it matters that r12 as
a base register needs an extra SIB byte. Might as well free up the
unencumbered r15 register instead.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-10 10:14:24 +00:00
whesse@chromium.org
5dcd32beda X64 Crankshaft: Add inline one-element cache for Instanceof.
Review URL: http://codereview.chromium.org/6621071

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 15:57:47 +00:00
danno@chromium.org
9cca7d2733 Combine typed and pixel arrays.
Worth mentioning:
- Specialized versions of pixel array and store/loads inside the generic stubs have been removed, since to have parity for all external arrays, 8 different versions would have to be inlined/checked.
- There's a new constant in v8.h for external arrays with pixel array elements.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7106 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 15:01:16 +00:00
sgjesse@chromium.org
061fa8be11 Add the possibility for a code stub to be non-movable
Non-moveable code-stube are allocated in large object space. They are only required on ARM where the different C-entry stubs are required to never move.

This gets rid of pre-computing these stubs and hope that they never move. Also for crankshaft the C-entry stub which saved doubles is not generated in the snapshot so it ends up being generated at runtime and potentially move.
Review URL: http://codereview.chromium.org/6626072

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-09 10:38:19 +00:00
lrn@chromium.org
a8b41a0edd Fix bug in X64 RegExpExec stub.
Used incorrect register for referencing RegExp data, so it always failed
to match the fast case.
When modifiying the object layout, it was possible to make it crash instead.

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

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-08 14:15:25 +00:00