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
lrn@chromium.org
764dc66556
Made format string match arguments for GenericBinaryOpStub::GetName.
...
Review URL: http://codereview.chromium.org/2014010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4640 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-11 08:07:42 +00:00
ager@chromium.org
f54b7767c6
Implement fast load and call of arguments in the presence of eval.
...
Load the arguments object from the context if there are no extensions
objects on the way. Then load the argument with a keyed load ic.
Review URL: http://codereview.chromium.org/2033004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4633 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-10 12:20:06 +00:00
lrn@chromium.org
9f859fef26
Make X64 double-to-int32 conversion use the 64-bit version of cvttsd2si.
...
Use type info to allow ia32 to use the 32-bit versions in some cases.
Remove sse3-specific code from X64 GenericBinaryOpStub.
Review URL: http://codereview.chromium.org/1992011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4632 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-10 11:38:58 +00:00
antonm@chromium.org
a83a88cd58
Moving more code to lookup an item from the native cache into code generator.
...
To bypass expensive invocation of JS functions from C++ and omit runtime
call overhead for searching the cache, more elaborate deferred code is generated.
Review URL: http://codereview.chromium.org/1695007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4616 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 12:48:18 +00:00
lrn@chromium.org
876c3e06b5
Synchronizing Comparison codegen between X64 and ia32.
...
Review URL: http://codereview.chromium.org/2010007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4612 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 11:25:29 +00:00
antonm@chromium.org
5ce4f8059b
Turn {mov,add}q into {mov,add}l.
...
All the cases fixed are safe as registers hold 32-bit value, but that looks
safer to operate on proper sizes.
Review URL: http://codereview.chromium.org/2017002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 10:56:22 +00:00
ager@chromium.org
856135af42
Implement fast calls of functions in the presence of eval (if the eval
...
calls do not introduce new bindings).
The infrastructure is already in place for fast loads from context
slots in the presence of eval. This change simply uses that
infrastructure for calls as well as loads.
Review URL: http://codereview.chromium.org/2027002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4609 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-07 10:25:11 +00:00
whesse@chromium.org
fc41b41fc2
Allocate the right number of fast context slots on X64 and ARM. Port from ia32.
...
This is ported from change 3505 on ia32.
Review URL: http://codereview.chromium.org/1992003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4603 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 11:59:10 +00:00
lrn@chromium.org
23064a1b28
X64: Skip smi-test on GenericBinaryOpStub if static type test says we have smis.
...
Review URL: http://codereview.chromium.org/2032001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4600 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 10:31:34 +00:00
erik.corry@gmail.com
d18b73c2fe
Add a single-element global positive and negative cache to
...
the implementation of instanceof.
Review URL: http://codereview.chromium.org/1765012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4599 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 09:35:18 +00:00
whesse@chromium.org
1f13b58b97
Correct bug with left shift on X64 platform from change 4571 ( http://code.google.com/p/v8/source/detail?r=4571 ). Speed up left shift with a constant left hand side on X64 platform. Add unit test for this bug. Remove unused failure target argument from MacroAssembler::SmiShiftLeft and MacroAssembler::SmiShiftLeftConstant.
...
Review URL: http://codereview.chromium.org/1934004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4598 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-06 08:15:15 +00:00
whesse@chromium.org
cbcec49cd7
Make sure that type info of results is correctly recorded when results are moved to registers by generated code.
...
Review URL: http://codereview.chromium.org/1905002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-05 08:56:16 +00:00
serya@chromium.org
16d3811d50
Changing string length field type from int to SMI. It will make it be a regular field. Code generated in EmitNamedLoad could be patched for faster access to string.length.
...
Review URL: http://codereview.chromium.org/1706013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 14:49:50 +00:00
lrn@chromium.org
4fdf57ace0
X64: Faster push/pop implementation.
...
Also snuck in an intended optimization for fast api call preparation and a few indentation fixes.
Review URL: http://codereview.chromium.org/1689010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 13:23:58 +00:00
lrn@chromium.org
001f020d04
X64: Minor change of control flow in inline transcendental cache.
...
Move NaN-handling away from main code path.
Review URL: http://codereview.chromium.org/1851002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4577 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 12:05:55 +00:00
whesse@chromium.org
852cebb1cb
Improve static type information in (constant SHL smi) computation.
...
Review URL: http://codereview.chromium.org/1910002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4576 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 11:17:45 +00:00
whesse@chromium.org
1f9fef3d51
Add inlined code for (constant SHL smi), ported from ia32 to x64. Improve type information on ia32 version of code.
...
Review URL: http://codereview.chromium.org/1869001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4571 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-04 08:10:05 +00:00
ager@chromium.org
cf54120a58
Port inlined version of swap primitive for sorting from ia32 to x64.
...
Original code review for ia32 version: http://codereview.chromium.org/1709008
Review URL: http://codereview.chromium.org/1858002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 18:18:25 +00:00
whesse@chromium.org
130d6adf78
Change calling convention of BinaryOperation code generation functions on x64 platform to match ia32 platform.
...
Review URL: http://codereview.chromium.org/1844002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 10:53:03 +00:00
lrn@chromium.org
1790c3534a
X64: Port inline transcendental cache to X64.
...
Review URL: http://codereview.chromium.org/1860001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 10:43:49 +00:00
lrn@chromium.org
289b245d2b
X64: Use allocation with no scratch registers to avoid push/pop.
...
Minor prettifications.
Review URL: http://codereview.chromium.org/1862001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4562 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 09:54:48 +00:00
ager@chromium.org
b83486c5f6
Port handling of heap numbers in deferred code for binary ops from
...
ia32 to x64.
Review URL: http://codereview.chromium.org/1692015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-05-03 08:46:23 +00:00
whesse@chromium.org
e7a3875bb4
Cut-and-paste port from ia32 to x64: Delay load of trivial left operand of binary operation until after right operand loaded.
...
Review URL: http://codereview.chromium.org/1736023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4552 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-30 08:40:31 +00:00
antonm@chromium.org
55e32d2f3b
Introduce faster swapping primitives.
...
Keyed store stub sits high in sorting profiles.
Swapping allows to save us additional type checks as we could both read and
write elmenets (on fast path) without them.
Review URL: http://codereview.chromium.org/1709008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4551 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-29 15:14:39 +00:00
sgjesse@chromium.org
0b4c1efd18
Improve the success rate for inline keyed store on x64
...
Added a simple new space check on the elements fixed array which can allow
updating with other values than smis without updating the remembered set.
Also combined the positive smi and range check so that a separate smi check can be avoided when the key is known to be a smi.
This is a port of r4543.
Review URL: http://codereview.chromium.org/1702013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-29 12:52:09 +00:00
whesse@chromium.org
3e689b5283
Add inline floating point comparisons for comparison operators to x64 platform.
...
Review URL: http://codereview.chromium.org/1703019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-29 11:44:17 +00:00
podivilov@chromium.org
1872574f4d
Port string keyed load IC improvements (r4444) to x64.
...
http://compute1.aar:9013/golem/r4502-v8-podivilov-string-char-at2-x64-vs-4502-v8-x64.html
Review URL: http://codereview.chromium.org/1750017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-28 17:16:51 +00:00
ager@chromium.org
62e8d5a789
Port inline version of Math.sqrt and Math.pow from ia32 to x64.
...
Review URL: http://codereview.chromium.org/1774010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4541 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-28 14:43:51 +00:00
whesse@chromium.org
f0f62a06d4
Fix logical error in change 4515.
...
Review URL: http://codereview.chromium.org/1769011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-27 15:02:22 +00:00
podivilov@chromium.org
5a999d8b18
Port number string cache lookup for heap numbers in generatred code to x64 and ARM.
...
Review URL: http://codereview.chromium.org/1575047
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-27 14:56:56 +00:00
whesse@chromium.org
52a5ebc70f
Port improved ia32 CompareStub to x64. Add framework for inlined floating point compares, to be implemented in next change.
...
Review URL: http://codereview.chromium.org/1687014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-27 14:02:24 +00:00
vitalyr@chromium.org
559ba2ccf0
Don't share function result caches between contexts.
...
A reference to the caches array was embedded directly into the builtin
code and this allowed sharing objects between contexts.
Unfortunately, clearing the cache on GC won't prevent sharing so we
either have to have per-context builtin code or load the cache
indirectly from the current context. This change implements the second
approach. The first approach may be interesting to consider in the
future for some perfomance critical functions, and the current
approach can still be improved by putting the caches directly into the
global context (or even global objects).
Review URL: http://codereview.chromium.org/1731002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-25 10:31:52 +00:00
whesse@chromium.org
07f68ec357
Compute static type information for remaining expression types on x64 platform.
...
Review URL: http://codereview.chromium.org/1751008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-23 08:05:13 +00:00
whesse@chromium.org
5db2af4873
Fix error in static type information computation for bitwise shift.
...
Review URL: http://codereview.chromium.org/1756007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-22 09:02:10 +00:00
sgjesse@chromium.org
49d685684a
Minor formatting changes.
...
Review URL: http://codereview.chromium.org/1766005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-22 07:35:43 +00:00
whesse@chromium.org
9cf54367e9
Port inlined quick equality check for non-NaN to x64.
...
Review URL: http://codereview.chromium.org/1756002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4463 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-21 13:33:36 +00:00
erik.corry@gmail.com
e1b3b92a2c
Make not sucking at regexp the default
...
(remove V8_NATIVE_REGEXP flag, add
V8_INTERPRETED_REGEXP flag).
Review URL: http://codereview.chromium.org/1635001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4443 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-19 19:30:11 +00:00
ager@chromium.org
07db17ce1b
Remove some remaining references to boilerplate functions.
...
Review URL: http://codereview.chromium.org/1605037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4440 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-19 12:39:07 +00:00
sgjesse@chromium.org
88fc8f1fb5
Add tracking of loop nesting to ARM code.
...
Review URL: http://codereview.chromium.org/1645008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4429 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 14:06:57 +00:00
sgjesse@chromium.org
f6cce43255
Add stack alignment check to ia32 and x64
...
The stack is now checked for proper alignment before calling into C code when the flag --debug-code is turned on.
Review URL: http://codereview.chromium.org/1637015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 12:41:30 +00:00
sgjesse@chromium.org
09aa20da08
Ensure stack alignment in ARM port
...
In the CEntryStub keep track of the actual skew from the correct alignment to ensure proper alignment before calling the runtime. Add checks to test the expected skew when running on hardware.
Use the PrepareCallCFunction/CallCFunction in a few other places.
Add check to the ARM simulator for correct alignment.
Add option --sim-stack-alignment to set the stack alignment in the simulator. Currntly only values 4 and 8 makes sense. 8 is the default to make snapshots generated with the simulator work on hardware requiring 8 byte stack alignment.
Review URL: http://codereview.chromium.org/1530043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-15 09:34:47 +00:00
antonm@chromium.org
a713b27428
Introduce fast native caches and use it in String.search.
...
Review URL: http://codereview.chromium.org/1563005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4418 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 14:46:15 +00:00
sgjesse@chromium.org
d74a8a8014
Port direct call to native RegExp from JavaScript to ARM
...
The ia32 version was implemented in r3542 and r3543. The x64 was implementeed in r3740, r3741 and r3742.
Minor tweaks to the is32 and x64 code as well.
Review URL: http://codereview.chromium.org/1575035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4409 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-14 09:25:33 +00:00
whesse@chromium.org
f720592ac3
Port optimized comparison of a string to a constant single character string to X64 platform. Fix small mistake on ia32 platform.
...
Review URL: http://codereview.chromium.org/1627014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-13 13:42:45 +00:00
lrn@chromium.org
2716660dab
X64: Add smi-type to loop variable of simple smi for-loops.
...
Review URL: http://codereview.chromium.org/1642003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-13 11:34:14 +00:00
lrn@chromium.org
285d5bc48a
Native construction of RegExp result objects, with in-object index and input.
...
Avoid cloning using CloneRegExpResult for results that are just arrays.
Made a more direct path for string.match with string argument.
Review URL: http://codereview.chromium.org/1645001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4395 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-04-13 09:31:03 +00:00