whesse@chromium.org
363060ca23
Ensure that ToPrimitive is called on all objects involved in comparisons <, <=, >, >=. Ensures that ToPrimitive is called when comparing an object to undefined. Fixes bugs on all platforms.
...
Review URL: http://codereview.chromium.org/2834022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4971 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-29 06:47:19 +00:00
whesse@chromium.org
8fda0670ef
Remove not-both-smis optimization on FloatingPointHelper::LoadNumbersAsIntegers on X64 platform.
...
Review URL: http://codereview.chromium.org/2861031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4960 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-28 10:54:07 +00:00
lrn@chromium.org
f0529878d1
Add special case of taking a substring that is the entire string to stub.
...
Review URL: http://codereview.chromium.org/2800027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4951 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-25 11:24:41 +00:00
whesse@chromium.org
667c5e84a1
Port optimization of comparison with a trivial LHS from ia32 to x64.
...
Review URL: http://codereview.chromium.org/2868028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 14:22:25 +00:00
vitalyr@chromium.org
8ab6832203
Add "has fast elements" bit to maps and use it in inlined keyed loads.
...
A potential issue with this change is creating lots of maps when
objects flip between fast/slow elements modes. We could add special
transitions to avoid this. Yet testing this on our benchmarks, gmail,
and wave seems to indicate that this is not a real problem.
Review URL: http://codereview.chromium.org/2870018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4941 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 13:56:35 +00:00
lrn@chromium.org
40d86c616c
X64: Remove more fpu code. Unroll more local initialization loops.
...
Review URL: http://codereview.chromium.org/2815028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-24 09:03:49 +00:00
lrn@chromium.org
0dee9a7942
X64: Change some fpu operations to use XMM registers.
...
Review URL: http://codereview.chromium.org/2827022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4930 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 14:05:18 +00:00
whesse@chromium.org
132fea7980
Use SSE2 registers when comparing identical heap numbers on X64.
...
Review URL: http://codereview.chromium.org/2850018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4927 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-23 09:21:32 +00:00
lrn@chromium.org
324a6df321
X64: Fix bug in LoadSSE2NumberOperands. It can be called with two smis!
...
Remove some unused labels.
Review URL: http://codereview.chromium.org/2861011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4906 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 12:39:37 +00:00
lrn@chromium.org
ed55948864
X64: Reapply fix for allocating HeapNumber results for >>>.
...
Also skip case where both number arguments are smis.
Review URL: http://codereview.chromium.org/2814021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4905 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 11:21:36 +00:00
whesse@chromium.org
48f2458bd9
Avoid redundant smi check in x64 loading of floats into SSE2 registers.
...
Review URL: http://codereview.chromium.org/2862004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4903 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 09:04:44 +00:00
lrn@chromium.org
c94c39a667
X64: Load HeapNumberMap once in BinaryOpStub, and reuse it.
...
Review URL: http://codereview.chromium.org/2819012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-21 08:51:44 +00:00
vitalyr@chromium.org
3cafa65462
Track ascii-ness of data in externalized strings.
...
If a two-byte string only contains ascii characters, then we can save
memory when flattening a cons string containing it. Similarly we can
use this in Array.prototype.join implementation. To track this a new
bit is added to instance type. This bit is used as a hint in generated
code and in runtime functions.
To enable testing a new V8 extension is added controlled by
--expose-externalize-string flag.
Review URL: http://codereview.chromium.org/2762008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4894 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 16:19:28 +00:00
lrn@chromium.org
26e692af2f
X64: Change some smi operations to work on untagged integers instead.
...
Use direct reading and writing of integers from Smi fields.
Change RecordWrite with 0 offset to take untagged index instead of
smi tagged index.
Review URL: http://codereview.chromium.org/2872005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4893 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-17 15:48:43 +00:00
ager@chromium.org
2043956c54
Remove the comisd instruction from the ia32 and x64 assemblers. We
...
should always use ucomisd.
Add missing pop from floating-point stack in case of allocation failure.
Review URL: http://codereview.chromium.org/2831009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4878 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 12:32:34 +00:00
kaznacheev@chromium.org
b251f14782
Port KeyedCallIC implementation to x64 and ARM.
...
Also edited ic-ia32.cc for clarity and better formatting.
Review URL: http://codereview.chromium.org/2853003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4873 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 10:03:47 +00:00
ager@chromium.org
ed0fc41723
Change hash computation for transcendental cache to use arithmetic
...
shifts. Leads to fewer collisions.
Review URL: http://codereview.chromium.org/2809012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4872 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 08:29:25 +00:00
ager@chromium.org
6b474bc1d8
Another x64 build fix. Actually builds now.
...
KExponentBits -> kExponentBits.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/2835001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:55:37 +00:00
ager@chromium.org
1dbf2db4b6
Fix build by fixing a typo in codegen-x64.cc.
...
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/2824002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4858 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:43:00 +00:00
ager@chromium.org
9a34337066
Remove direct reference from builtins code to global object. Load the
...
global object through the context instead.
Review URL: http://codereview.chromium.org/2822003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 12:08:39 +00:00
whesse@chromium.org
317dcabe84
Change tests for string type in RegExpExecStub on all platforms.
...
Review URL: http://codereview.chromium.org/2772004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4854 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-14 10:21:24 +00:00
ager@chromium.org
89ffd6c2f2
Implement transcendental cache probing in generated code on ARM.
...
Fixed hash code computation on ia32 and x64 to match the runtime
system (change arithmetic shift right to logical shift right).
Review URL: http://codereview.chromium.org/2731007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-11 10:18:44 +00:00
whesse@chromium.org
ab65809a62
Use static type information in ConstantIntBinaryOperation on x64.
...
Review URL: http://codereview.chromium.org/2754004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-10 14:37:49 +00:00
whesse@chromium.org
e1e4d985f9
Use static type information on x64 in LikelySmiBinaryOperation.
...
Refactor check for smi operands, using type information, on ia32 and x64.
Review URL: http://codereview.chromium.org/2771001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-09 11:15:54 +00:00
ager@chromium.org
a40569e5a0
Port fast eval calls to x64 and ARM. For global variables that can
...
only be shadowed by eval-introduced variables we usually do not need
to do a context lookup in the runtime system.
Review URL: http://codereview.chromium.org/2672001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4803 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-07 07:12:00 +00:00
whesse@chromium.org
0fc3dca698
Add test_b(Operand, immediate) to ia32 assembler, and use it where possible. Improve comparison to a constant one-character string. Use CmpInstanceType in more places on ia32. Add IsObjectJSObjectType and IsInstanceJSObjectType to ia32 macro assembler, using a single branch for a range test.
...
Review URL: http://codereview.chromium.org/2586001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4795 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-04 10:46:04 +00:00
whesse@chromium.org
ebc21fc958
Change keyed load IC interface on x64 to pass arguments in registers.
...
Review URL: http://codereview.chromium.org/2470001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-02 14:37:47 +00:00
vitalyr@chromium.org
26be30912d
Fix generated code for String.charCodeAt.
...
Review URL: http://codereview.chromium.org/2468001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-01 14:08:19 +00:00
whesse@chromium.org
019b8c4511
Change the interface of LoadIC on the x64 platform to take its arguments in registers.
...
Review URL: http://codereview.chromium.org/2330003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4759 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-31 13:26:12 +00:00
vegorov@chromium.org
fc7c5f789a
Cardmarking writebarrier.
...
Reapply r4715 with fixes reviewed in http://codereview.chromium.org/2276002 .
Review URL: http://codereview.chromium.org/2255004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4743 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 12:30:45 +00:00
lrn@chromium.org
7bfe569088
X64: Many small tweaks and more usages of "load smi as int32".
...
Review URL: http://codereview.chromium.org/2266003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4739 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-27 10:25:33 +00:00
vitalyr@chromium.org
64bc39a726
Fix: make string indexing work with Infinity.
...
NumberToUint32 that I was trying to use maps -0 to +0 (as desired) but
also maps +/-Infinity to +0, which made +/-Infinity a valid string
index. I fixed it by introducing a new runtime function with the right
semantics.
TEST=LayoutTests/fast/js/char-at.html,mjsunit/string-charat.js
Review URL: http://codereview.chromium.org/2223003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 16:11:30 +00:00
vitalyr@chromium.org
ad0e38909f
Custom call IC-s for String.prototype.{charAt,charCodeAt}.
...
These string methods can be composed from two basic blocks: charCodeAt
and fromCharCode, both of which have fast cases for certain types of
inputs. In this patch these two blocks are refactored to allow
generating the fast cases without having to jump around the slow
cases. In the slow cases since they can now be invoked both from
inline runtime functions and from IC stubs we either have to
save/restore state of the current frame or enter/leave a new internal
frame. This is handled by new RuntimeCallHelper interface. Its
implementation for virtual frame is based on FrameRegisterState class
extracted from DeferredCode class.
Review URL: http://codereview.chromium.org/2087009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 14:23:19 +00:00
whesse@chromium.org
fcc3d19321
Refactor x64 named loads to agree with ia32 implementation. Remove dead code and flag is_global from x64 keyed loads.
...
Review URL: http://codereview.chromium.org/2121022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 11:38:33 +00:00
vegorov@chromium.org
e268fbdaba
Revert r4715.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2274001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-26 09:24:44 +00:00
vegorov@chromium.org
675e711f1c
Cardmarking writebarrier.
...
- New сardmarking write barrier handles large objects and normal objects in a similar fashion (no more additional space for pointer tracking is required, no conditional branches in WB code).
- Changes to enable oldspaces iteration without maps decoding:
-- layout change for FixedArrays: length is stored as a smis (initial patch by
Kevin Millikin)
-- layout change for SharedFunctionInfo: integer fields are stored as smi on
arm, ia32 and rearranged on x64.
-- layout change for String: meaning of LSB bit is fliped (1 now means hash not
computed); on x64 padding is added.
-- layout of maps is _not_ changed. Map space is currently iterated in a special
way.
Review URL: http://codereview.chromium.org/2144006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-25 13:15:16 +00:00
vegorov@chromium.org
2241d2af45
Reverting r4703.
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2073018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 17:37:47 +00:00
vegorov@chromium.org
8879691793
Cardmarking writebarrier.
...
Reapplication of r4685 (reviewed http://codereview.chromium.org/2101002 ) with minor modifications:
- Fix compilation problems on Win64.
- Improve heap verification pass: search for garbage pointers to new space not only in dirty regions but in all regions.
Review URL: http://codereview.chromium.org/2114015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 15:52:38 +00:00
lrn@chromium.org
74c01fdc50
X64: Added inline conversion of double to smi for LikelySmiBinaryOp shifts.
...
Review URL: http://codereview.chromium.org/2078028
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-21 09:08:14 +00:00
whesse@chromium.org
ac60f498d2
Change keyed store IC interface on x64 to take value, key, and receiver in registers rather than on the stack.
...
Review URL: http://codereview.chromium.org/2111011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4692 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 15:09:21 +00:00
ager@chromium.org
1d5eb6517f
Reapply r4686: Complete version of full codegen for x64.
...
Already reviewed at: http://codereview.chromium.org/2078022/show
TBR=vegorov@chromium.org
Review URL: http://codereview.chromium.org/2137008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:33:02 +00:00
vegorov@chromium.org
955828e437
Reverting r4685, r4686, r4687
...
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/2071020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 14:02:51 +00:00
ager@chromium.org
355d3166e1
Complete the full codegenerator on x64.
...
Review URL: http://codereview.chromium.org/2078022
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:50:09 +00:00
vegorov@chromium.org
b38a0a719a
- Changes to enable oldspaces iteration without maps decoding:
...
-- layout change for FixedArrays: length is stored as a smis (initial patch by Kevin Millikin)
-- layout change for SharedFunctionInfo: integer fields are stored as smi on arm, ia32 and rearranged on x64.
-- layout change for String: meaning of LSB bit is fliped (1 now means hash not computed); on x64 padding is added.
-- layout of maps is _not_ changed. Map space is currently iterated in a special way.
- Cardmarking write barrier. New barrier handles large objects and normal objects in a similar fashion (no more additional space for pointer tracking is required, no conditional branches in WB code).
Review URL: http://codereview.chromium.org/2101002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-20 13:10:38 +00:00
whesse@chromium.org
cd6afbc617
Spill arguments for a function call from the virtual frame as they are produced.
...
Review URL: http://codereview.chromium.org/2103007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 11:19:34 +00:00
fschneider@chromium.org
b46757a4e1
Eliminate smi check using type information in x64 count operation.
...
Also simplify the assertion code for type information in the macro assembler.
Review URL: http://codereview.chromium.org/2130003/show
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-18 08:43:08 +00:00
mark@chromium.org
e9b5d7855b
Allow build-time selection between ia32 and x86_64 in the GYP/Xcode Mac
...
Chromium build.
v8.gyp no longer sets any V8_TARGET_ARCH_* macro on the Mac. Instead, the
proper V8_TARGET_ARCH_* macro will be set by src/globals.h in the same way as
the V8_HOST_ARCH_* macro when it detects that no target macro is currently
defined. The Mac build will attempt to compile all ia32 and x86_64 .cc files.
#ifdef guards in each of these target-specific source files prevent their
compilation when the associated target is not selected. For completeness,
these #ifdef guards are also provided for the arm and mips .cc files.
BUG=706
TEST=x86_64 Mac GYP/Xcode-based Chromium build (still depends on other changes)
Review URL: http://codereview.chromium.org/2133003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-17 15:41:35 +00:00
lrn@chromium.org
44fb6cc8d3
X64: Made bit-fiddling fallback for double-to-int32 conversion.
...
Review URL: http://codereview.chromium.org/2048007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4648 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-12 11:16:35 +00:00
ager@chromium.org
75cd61a912
Refactor the fast-case code for loading local/global variables and
...
arguments in the presence of eval to avoid code duplication. Almost
the same code was duplicated for loading properties and calling
properties.
Review URL: http://codereview.chromium.org/2053003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-12 09:12:23 +00:00
whesse@chromium.org
596adcf675
Optimize loading the global object for a named load on x64.
...
This is a port of r3911 to x64.
Review URL: http://codereview.chromium.org/1983005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4642 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-11 08:32:13 +00:00