Commit Graph

782 Commits

Author SHA1 Message Date
sgjesse@chromium.org
fe8a5ac59a Move common enums for macro assemblers.
All macro-assembler-*.cc used a number of common enums. Moved these to macro-assembler.h.

Removed unused enum ExitJSFlag from ARM macro assembler.
Review URL: http://codereview.chromium.org/202004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-07 12:07:40 +00:00
sgjesse@chromium.org
92eb226c99 Fix lint error.
TBR=erik.corry@chromium.org
Review URL: http://codereview.chromium.org/193039

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2833 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-07 10:08:03 +00:00
sgjesse@chromium.org
2192a315a4 Second step in allocating objects in generated code on ARM.
Objects which require an additional fixed array to be allocated now have this allocated in generated code as well. Added allocation flags to the macro assembler new space allocation routines.

Changed the ia32 and x64 macro assemblers to take allocation flags to the allocation routines instead of boolean flag.
Review URL: http://codereview.chromium.org/201015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-07 09:44:29 +00:00
lrn@chromium.org
2364f20cc5 X64 RegExp - fix RegExp on WIN64.
Use the correct ifdef to detect Win64 (_WIN64, not __MSVC__).

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-04 11:00:07 +00:00
lrn@chromium.org
de33b1d03d X64: Added missing optimization of unary negate.
Review URL: http://codereview.chromium.org/174214


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2808 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-02 07:49:53 +00:00
sgjesse@chromium.org
07e1bb76c7 Port specialized constructor code for constructing simple objects to x64.
See http://codereview.chromium.org/173470 for description. The x64 implementation follows the ia32 except it uses some additional registers to avoid spilling to the stack. Also tweaked the ia32 version a bit.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2805 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-02 06:17:59 +00:00
whesse@chromium.org
0f20431c36 X64: Use sahf instruction only on processors that support it.
Review URL: http://codereview.chromium.org/183028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2793 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-01 11:32:20 +00:00
whesse@chromium.org
970874ad62 X64: Obey WIN64 ABI more exactly, in WIN64 build.
Review URL: http://codereview.chromium.org/182027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-01 10:40:00 +00:00
whesse@chromium.org
f77d7aab55 X64: Fix bug introduced in revision 2779
Review URL: http://codereview.chromium.org/180040

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-31 15:28:17 +00:00
lrn@chromium.org
9230ad29eb ARM native regexps.
Review URL: http://codereview.chromium.org/173567


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2785 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-31 12:40:37 +00:00
erik.corry@gmail.com
369214c159 Use a root array register for constant loads and stack guards on x64.
This only wins us around 1% in performance, but it makes the code more
compact.  We don't currently have a way to represent in the virtual
frame that a slot contains a value from the root array.  Adding this
would probably make the code more compact.
Review URL: http://codereview.chromium.org/174639

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2783 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-31 08:57:36 +00:00
whesse@chromium.org
b01a7395c4 X64: Add inline cache load of normal field (slow case objects).
Review URL: http://codereview.chromium.org/180020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2779 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-28 11:08:16 +00:00
sgjesse@chromium.org
94c0539052 Add allocation support to x64 macro assembler.
Factored out the allocation in new space from assembler code into the macro assembler for x64 as was recently done for ia32.

Added set property svn:eol-style to native for all x64 files.
Review URL: http://codereview.chromium.org/173568

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-28 06:18:36 +00:00
whesse@chromium.org
231f0b9656 X64: Activate Probes for Megamorphic StoreIC on 64-bit platform.
Review URL: http://codereview.chromium.org/174609

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2777 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-27 15:46:03 +00:00
ager@chromium.org
7331301703 Port apply with arguments optimization to x64.
Review URL: http://codereview.chromium.org/173566

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2776 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-27 14:58:50 +00:00
whesse@chromium.org
536a1b5d81 X64: Activate the IC stub for prototype lookups.
Review URL: http://codereview.chromium.org/174606

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2775 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-27 14:11:20 +00:00
whesse@chromium.org
ced7756402 Use Arguments object in C builtins, instead of __argc__ and __argv__.
Fix a stack-offset constant.  Make Windows 64-bit stack 16-byte aligned.
Review URL: http://codereview.chromium.org/173563

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-27 11:24:43 +00:00
whesse@chromium.org
48d1e49262 Use stack frame marker constants to mark arguments adaptor frame.
Review URL: http://codereview.chromium.org/174522

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-27 07:44:37 +00:00
sgjesse@chromium.org
717394492d Generate specialized constructor code for constructing simple objects.
For objects which only have simple assignments of the form this.x = ...; a
specialized constructor stub is now generated. This generated code allocates the
object and fills in the initial properties directly. If this fails for some
reason code continues in the generic constructor stub which in turn might pass
control to the runtime system.

Added counter to see how many objects are constructed using a specialized stub.

The specialized stub is only implemented for ia32 architecture in this change.
For x64 and ARM the generic construct stub is used.

This is change is identical to http://codereview.chromium.org/174392 (committed in r2753 and reverted in r2754) except that a few parts have already been committed from http://codereview.chromium.org/173469 (committed in r2762).
Review URL: http://codereview.chromium.org/173470

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2764 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-26 12:22:44 +00:00
whesse@chromium.org
046b4020f7 X64: Small changes to let WIN64 platform compile.
Review URL: http://codereview.chromium.org/174394

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-26 06:29:53 +00:00
sgjesse@chromium.org
3fdbc0848c Reverting 2753.
Review URL: http://codereview.chromium.org/173349

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2754 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-25 15:00:07 +00:00
sgjesse@chromium.org
53531ed48a Generate specialized constructor code for constructing simple objects.
For objects which only have simple assignments of the form this.x = ...; a specialized constructor stub is now generated. This generated code allocates the object and fills in the initial properties directly. If this fails for some reason code continues in the generic constructor stub which in turn might pass control to the runtime system.

Added counter to see how many objects are constructed using a specialized stub.

The specialized stub is only implemented for ia32 architecture in this change. For x64 and ARM the generic construct stub is used.
Review URL: http://codereview.chromium.org/174392

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-25 12:23:58 +00:00
ager@chromium.org
4cd3d7afe8 Revert change 2745 because of assertion failures in debug mode.
TBR=yurys@chromium.org
Review URL: http://codereview.chromium.org/173268

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-24 16:08:44 +00:00
whesse@chromium.org
1dfac258a3 Change some integer types to make the x64 Win32 platform happier.
Review URL: http://codereview.chromium.org/173115

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2743 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-24 11:56:29 +00:00
ager@chromium.org
0efbd40baf Add support for forceful termination of JavaScript execution.
The termination is achieved by throwing an exception that is uncatchable by JavaScript exception handlers.
Review URL: http://codereview.chromium.org/174056

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-19 15:14:11 +00:00
lrn@chromium.org
fdf31f7f5e X64: Implement debugger hooks.
Debugger is now fully functional.
Fix difference in emitting statement positions to match ia32.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2716 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-19 10:18:30 +00:00
sgjesse@chromium.org
4e03645dc4 Analyze functions for assignment to this properties.
During parsing functions are analyzed for statements of the form this.x = ...;. These assignments are categorized in two types: simple and non simple. The simple ones are where the right hand side is known to be either a constant or an argument to the function. If a function only contains statements of this type the property names are collected and for the simple assignments the index of the argument or the constant value assigned are stored as well.

When the initial map for a function is created and the function consists of only this type of assignemnts the initial map is created with a descriptor array describing these properties which will be known to always exist in an object created from the function.

The information on this property assignments is not collected during pre-parsing so if compiling using pre-parse data these optimization hints are not available.

Next step will be to use the information collected for the simple assignments to generate constructor code which will create and initialize the object from this information without calling the code for the function.
Review URL: http://codereview.chromium.org/172088

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2710 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-19 07:30:20 +00:00
whesse@chromium.org
5b8d422524 Remove one of the GCs performed by the --gc-greedy flag. The GC performed by CEntryStub before the first call to C, when --gc-greedy is set, caused a bug in calling API callbacks.
Review URL: http://codereview.chromium.org/171104

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-18 10:52:14 +00:00
ager@chromium.org
1656dd639a Fix regression caused by the generation of a shift stub during
snapshot creation in a better way.

Encode whether or not the stub should use sse3 instructions in the
minor key of the stub.  The stubs generated during snapshot creation
will have sse3 disabled, but they will not be found when sse3 is
enabled.  Therefore they will only affect the code generated as part
of the snapshot.
Review URL: http://codereview.chromium.org/172086

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2705 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-18 09:47:45 +00:00
whesse@chromium.org
a82bd0507c X64: Remove compound smi+overflow test using cmov.
Review URL: http://codereview.chromium.org/165525

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2694 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-17 09:07:40 +00:00
whesse@chromium.org
ab041ee4ed X64: Do not use an AllocateWithoutSpill register if it is invalid. Abandoned in favor of approach in http://codereview.chromium.org/165525/show (Issue 165526)
Review URL: http://codereview.chromium.org/164480

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2693 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-17 08:02:07 +00:00
sgjesse@chromium.org
409993be38 Refactor SetFunctionInfo to reduce long argument list take 2.
It now includes the change to ARM and x64 architectures as well.

TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/165528

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-14 11:35:10 +00:00
lrn@chromium.org
4254388c14 X64: Implement RegExp natively.
Review URL: http://codereview.chromium.org/165443


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-14 11:24:32 +00:00
whesse@chromium.org
5a3998c1f4 X64: Change testl to testb if mask fits in 1 byte. Shortens smi test.
Review URL: http://codereview.chromium.org/164472

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-13 12:35:09 +00:00
whesse@chromium.org
d7474a61a8 X64: Add an SHL optimization, fix a floating-point bug, fix xchg rax,r8 and printing of test ?ax, imm in disassembler.
Review URL: http://codereview.chromium.org/164399

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-13 08:00:04 +00:00
whesse@chromium.org
2596299f1e X64: Remove optimization of SHR by constant, due to unfixed bug.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-11 15:30:09 +00:00
whesse@chromium.org
6a8a7d580e X64: Implement remaining constant smi optimizations. Enable mozilla tests that now pass.
Review URL: http://codereview.chromium.org/164317

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-11 12:49:27 +00:00
whesse@chromium.org
9024b946e7 X64: Add special inlining for subtracting a constant smi.
Review URL: http://codereview.chromium.org/164252

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2658 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-10 14:35:20 +00:00
kmillikin@chromium.org
2bdd9d7c2e "Port" (count >= 0) assertion in VirtualFrame::Drop to ia32 and x64.
Review URL: http://codereview.chromium.org/164251

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2656 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-10 11:54:25 +00:00
kmillikin@chromium.org
a53c70c788 Eliminate most of the jump target jumping, branching, and binding
overhead on the ARM platform.

Because virtual frames are always in memory, there is no work to be
done for control flow except in the case of breaking or continuing
when there is extra statement state on the stack.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2655 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-10 11:13:34 +00:00
kmillikin@chromium.org
e8f54a6073 Added support for property loads to the CFG builder and fast-mode
compiler.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2653 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-07 13:32:39 +00:00
whesse@chromium.org
e73bfe98a4 Implement inline constructors for X64. Fix ia32 inline constructors a little. Fix a bug of a non-constant length between a call and its fixup.
Review URL: http://codereview.chromium.org/164144

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2652 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-07 12:52:32 +00:00
lrn@chromium.org
6ad8b09efb X64: Implement fast charCodeAt.
Review URL: http://codereview.chromium.org/164135


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2648 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-07 11:16:26 +00:00
kmillikin@chromium.org
216eaff31a Factor out some platform-independent code into the shared cfg.cc.
Review URL: http://codereview.chromium.org/165127

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2647 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-07 10:55:19 +00:00
kmillikin@chromium.org
9edc69c72f Add support for (some) assignment expressions to the CFG builder and
fast-mode compiler.

1. We avoid generating a useless temporary for assignments with
nontrivial right-hand sides.  Instead of translating id = expr into:

...
tmp = <last expr instruction>
id = tmp

we generate directly

...
id = <last expr instruction>

by passing a data destination ('hint') down the AST.  The semantics is
to use the destination as a result location if a temp is needed.  It
may be ignored.  NULL indicates I don't care and you should generate a
temp.

2. We correctly handle assignments as subexpressions.  When building
the CFG for an expression we accumulate the assigned variables and we
emit a move to a fresh temporary if a value in a variable is in
jeopardy of being overwritten.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-07 07:15:31 +00:00
whesse@chromium.org
384a6f299e X64: Implement inline trigonometric operations.
Review URL: http://codereview.chromium.org/164056

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-06 14:42:10 +00:00
whesse@chromium.org
7bd88e829f X64: Optimize MOD operator by a constant power of 2.
Review URL: http://codereview.chromium.org/164054

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2634 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-06 11:51:23 +00:00
kmillikin@chromium.org
6a19a8f5fd Fix the debugger in multipass mode by introducing phantom instructions
marking statement boundaries.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2633 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-06 11:14:48 +00:00
lrn@chromium.org
6f21761ea8 X64: Fix bug in boolean conversion of empty string.
Review URL: http://codereview.chromium.org/165043


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2632 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-06 10:22:38 +00:00
whesse@chromium.org
23507e34db X64: Make megamorphic and normal calls use stub cache and stub code.
Review URL: http://codereview.chromium.org/162009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2629 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-06 07:42:04 +00:00
kmillikin@chromium.org
23fbd8fe3f Add support to the CFG builder for non-short-circuited binary
expressions.  Add compilation support in fast mode (optimized for
compilation time and code size).

This breaks one debugger test each on ARM and IA32 (expectedly).
Review URL: http://codereview.chromium.org/160584

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2628 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-05 12:52:31 +00:00
lrn@chromium.org
30fa78f1f7 Fix bug in X64 RSet code. Optimize IA32 version.
Review URL: http://codereview.chromium.org/162001


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-05 11:08:24 +00:00
whesse@chromium.org
2f7f0f6ea5 X64: Enable specialized stubs for length property.
Review URL: http://codereview.chromium.org/160582

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2620 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-04 14:18:03 +00:00
whesse@chromium.org
f2faaa5c34 X64: Add missing pop when calling handler with Out-of-memory exception.
Review URL: http://codereview.chromium.org/160520

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2618 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-04 13:46:58 +00:00
lrn@chromium.org
e05ea61528 X64: Fix bug in RandomPositiveSmi (doesn't save rsi before calling C-code).
Review URL: http://codereview.chromium.org/160519


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2614 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-04 08:23:37 +00:00
lrn@chromium.org
fd8b376989 X64: Reenabled RSet.
Review URL: http://codereview.chromium.org/160453


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2607 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-03 11:05:26 +00:00
whesse@chromium.org
118d5e171b Fix debug printing of pointers, and a keyed store with smi index error, in X64
Review URL: http://codereview.chromium.org/160452

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2605 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-03 10:53:45 +00:00
kmillikin@chromium.org
67a61e96c7 Restructure to support recursive invocation of the CFG builder. Add
support for stack-allocated variables when run with multipass.

There is no liveness analysis and they are currently always allocated
to memory.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2604 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-03 07:55:48 +00:00
kmillikin@chromium.org
b092d55890 Enable --trace when --multipass is on. Bugfix in bailout condition.
All V8 and (ia32) mozilla tests pass with --multipass on, failures now
count as regressions.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2598 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-31 11:27:14 +00:00
mikhail.naganov@gmail.com
33f54fa6e2 X64: enable stack sampling in profiler.
Added necessary code to initialize Top::js_entry_sp value.
Renamed 'test-log-ia32' test to 'test-log-stack-tracer' and enabled it in 64-bit version.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-31 11:07:05 +00:00
kmillikin@chromium.org
3a472fada8 Basic infrastructure for fast two-pass compilation. A CFG is
generated in one-pass from the source AST, code is generated from the
CFG.  Enabled by the flag --multipass and disabled by default.

Rudimentary and currently only supports literal expressions and return
statements.  There are some other known limitations (e.g., missing
support for tracing).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-31 11:06:17 +00:00
whesse@chromium.org
ddbe148b68 X64: Add fix of issue 392 to X64
Review URL: http://codereview.chromium.org/160393

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-31 08:04:41 +00:00
lrn@chromium.org
67936a7b16 X64: Fix lint problem and add missing stub function.
Review URL: http://codereview.chromium.org/160387


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-30 12:09:51 +00:00
kmillikin@chromium.org
a48fd5916e Change the overly-general class named Node to the more specific
AstNode in case we ever want to have some other kind of node.

Split the NODE_LIST macro-generating macro so that we can iterate
concrete subclasses of Statement and concrete subclasses of Expression
separately.
Review URL: http://codereview.chromium.org/159632

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2586 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-30 11:53:29 +00:00
lrn@chromium.org
dc8ca16931 X64: Added inline keyed load/store and a bunch of other missing functions.
Review URL: http://codereview.chromium.org/160272


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-30 09:18:14 +00:00
whesse@chromium.org
027f8d11c7 X64: Change wording of comments.
Review URL: http://codereview.chromium.org/160381

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-30 08:11:25 +00:00
whesse@chromium.org
79b52509d3 X64: Fix error in division & modulus, adjust mjsunit test status, fix lint error in objects.h
Review URL: http://codereview.chromium.org/159584

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-30 07:31:54 +00:00
whesse@chromium.org
1ed7462166 X64: Fix bug that showed up in mjsunit/invalid-lhs.js
Review URL: http://codereview.chromium.org/159506

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2561 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-28 14:11:09 +00:00
whesse@chromium.org
b357dc043e More X64 inline cache implementation.
Review URL: http://codereview.chromium.org/160268

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-28 13:44:17 +00:00
kasperl@chromium.org
516d47c73b Fix pixel array support for x64 and make the fast Array functions
that use JSARRAY_HAS_FAST_ELEMENTS_CHECK a bit safer in the presence
of pixel arrays.
Review URL: http://codereview.chromium.org/159500

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2556 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-28 12:46:08 +00:00
sgjesse@chromium.org
422b02717e Change the updating of the counters for global stub use to be consistent. Now counters are updated when they are sure to count to avoid decrementing them when there is a miss.
Review URL: http://codereview.chromium.org/160265

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2554 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-28 11:42:18 +00:00
lrn@chromium.org
25eb44253f X64: Fixed bug de-tagging of smis in multiplication code.
Moved some dummy function implementations to from ic-x64.cc to stub-cache-x64.cc (where they belong)

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2546 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-28 08:22:48 +00:00
whesse@chromium.org
65580ea35e X64: Fix buggy expression in disassembler. Fixes Issue 408: http://code.google.com/p/v8/issues/detail?id=408
Review URL: http://codereview.chromium.org/160174

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-27 18:51:46 +00:00
whesse@chromium.org
72ac6f619a X64: Add inline cache stub for storing to globals.
Review URL: http://codereview.chromium.org/160160

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-27 15:02:35 +00:00
whesse@chromium.org
9b25131b4f X64: Add mov rax,(mem64) to disassembler.
Review URL: http://codereview.chromium.org/159397

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-27 10:39:46 +00:00
whesse@chromium.org
8558fde3a5 Make X64 implementation update Store ic stubs. Remove comment that talks about "below" on the stack meaning closer to the top.
Review URL: http://codereview.chromium.org/159402

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2539 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-27 10:39:21 +00:00
whesse@chromium.org
500e10b648 Add inline caching for keyed loads and stores. Remove extra parentheses from some files.
Review URL: http://codereview.chromium.org/159266

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2534 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-24 11:22:35 +00:00
whesse@chromium.org
be562ee794 X64: Add StoreField inline cache stub.
Review URL: http://codereview.chromium.org/155915

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-22 09:11:33 +00:00
whesse@chromium.org
ff242173c3 Make stub cache hash work on X64 platform. Stub cache now works.
Switch arguments of 32-bit arithmetic instructions so they are consistent
with 64-bit arithmetic instructions (all on X64 platforms).
Review URL: http://codereview.chromium.org/155849

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-21 13:30:46 +00:00
whesse@chromium.org
8ff3dc5280 X64: Implement inline caches for loads
Review URL: http://codereview.chromium.org/159131

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-21 11:06:24 +00:00
whesse@chromium.org
46b8d84659 X64: Fix compiler complaint
Review URL: http://codereview.chromium.org/159079

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2514 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-20 20:17:27 +00:00
whesse@chromium.org
ca6cd9b4b2 X64: Add instructions to disassembler. Skip hanging test-api test.
Review URL: http://codereview.chromium.org/155771

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-20 14:57:09 +00:00
whesse@chromium.org
7f886c8582 X64: Enable more of LoadIC, disable individual stub types.
Review URL: http://codereview.chromium.org/155763

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-20 14:33:59 +00:00
whesse@chromium.org
39c9dd5ab1 X64: Add inline caching to calls of global functions
Review URL: http://codereview.chromium.org/155688

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2503 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-17 12:58:12 +00:00
whesse@chromium.org
76833936b7 Make Array::kHeaderSize protected, and only use kHeaderSize of its subclasses.
Many X64 bugs have been due to the difference between (unaligned) Array::kHeaderSize and (aligned) FixedArray::kHeaderSize.
Review URL: http://codereview.chromium.org/155687

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-17 12:12:24 +00:00
whesse@chromium.org
f8e622a620 Added inline caching for calls to a field to X64. Changed a use of Array::kHeaderSize to FixedArray::kHeaderSize on all platforms.
Review URL: http://codereview.chromium.org/149798

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2496 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-17 08:55:01 +00:00
kasperl@chromium.org
38f5a84701 Avoid more static variables in inline functions.
Review URL: http://codereview.chromium.org/149799

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2494 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-17 08:22:07 +00:00
whesse@chromium.org
263acb4d02 X64: Implement inline cache of monomorphic constant function call. Mark a debugger test on X64 as failing.
Review URL: http://codereview.chromium.org/155631

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2485 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-16 12:49:14 +00:00
whesse@chromium.org
a1cf7d6e3d X64: Enable inline caching for calls, with some stubs stubbed out.
Review URL: http://codereview.chromium.org/149674

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-16 08:38:52 +00:00
whesse@chromium.org
10605879f6 Disable inline caching on X64 separately for loads, stores, and calls, while they are being implemented and tested one-by-one.
Review URL: http://codereview.chromium.org/149673

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2477 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-15 12:30:28 +00:00
whesse@chromium.org
894af58c82 Change tests status for x64, make test runner pass --arch flag to Scons, add to x64 disassembler. Copied from http://codereview.chromium.org/155346 so it can be committed.
Review URL: http://codereview.chromium.org/149608

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-14 11:39:45 +00:00
kasperl@chromium.org
875dbe6584 Re-enable ICs for loads and calls that skips a global object during
lookup through the prototype chain.
Review URL: http://codereview.chromium.org/155344

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-10 09:40:47 +00:00
whesse@chromium.org
b019600dce X64: Let debugger patch JSReturn with a debug break.
Review URL: http://codereview.chromium.org/155286

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2421 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-09 13:30:27 +00:00
lrn@chromium.org
b3e8f5ef49 X64: Fixed more bad smi operations.
Review URL: http://codereview.chromium.org/155281


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2415 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-09 11:46:30 +00:00
kasperl@chromium.org
98f1a228c6 Allow access through the global proxy to use ICs.
Review URL: http://codereview.chromium.org/155283

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2413 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-09 11:17:57 +00:00
lrn@chromium.org
e3bb851efb X64: Fix bug in left-shift.
Also changed a few other places that looked suspicious in the same way.
Added more info to failing test case and rewrote incorrect uses of mjsunit "fail" function.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2409 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-09 08:00:12 +00:00
lrn@chromium.org
b360ef238d X64: Fix recently introduced bug in movq with 64-bit literal.
Review URL: http://codereview.chromium.org/155223


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2404 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-09 05:43:34 +00:00
whesse@chromium.org
bf656d2ae1 Fix an X64 problem with builtin fixups. Remove an assert from fixups that is no longer true on all platforms.
Review URL: http://codereview.chromium.org/149332

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2397 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-08 16:19:13 +00:00
lrn@chromium.org
bef7669209 X64: Fix bug in for-in iteration.
Review URL: http://codereview.chromium.org/155213


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-08 15:43:31 +00:00
lrn@chromium.org
dbdce5e650 X64: Added unimplemented method in codegen-x64.cc.
Six more tests run.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-08 09:26:51 +00:00
ager@chromium.org
b4c6762b61 Port IsConstructCall optimization to x64 and ARM.
Review URL: http://codereview.chromium.org/149266

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-07 19:00:24 +00:00
kmillikin@chromium.org
35a1de0f6a Remove the support for jump-table switches from the x64 port as well.
Review URL: http://codereview.chromium.org/126197

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2378 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-07 13:17:22 +00:00
lrn@chromium.org
9cecee80f1 X64: Disassembler updated to using REX, extended registers and some X64 opcodes.
Not all opcodes fixed yet (some should be invalid in 64-bit mode, others should be added).

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2375 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-07 12:40:15 +00:00
whesse@chromium.org
e9580c61ba X64: Use CmpObjectType macro everywhere, fix problem with sign of instance types.
Review URL: http://codereview.chromium.org/155132

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2374 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-07 12:17:31 +00:00
whesse@chromium.org
1bee2d8a34 X64: Implement sin and cos.
Review URL: http://codereview.chromium.org/149200

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-07 07:53:15 +00:00
whesse@chromium.org
6cf6824c17 X64: Make comparisons work on zero-extended smis.
Review URL: http://codereview.chromium.org/155083

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2364 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-06 13:21:39 +00:00
whesse@chromium.org
1370cae14b Lint error fix
Review URL: http://codereview.chromium.org/149189

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-05 15:38:06 +00:00
whesse@chromium.org
203ae17b5d X64: Fix LoadFloatOperands.
Review URL: http://codereview.chromium.org/155073

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2357 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-05 15:22:59 +00:00
whesse@chromium.org
0a774c9c18 X64: Use low bits of registers in emit_sse_operand. Enable --stop-at flag.
Review URL: http://codereview.chromium.org/155052

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-03 13:30:15 +00:00
whesse@chromium.org
48ceb2cfab X64: Exit frame should use x64 ABI callee-save registers.
Review URL: http://codereview.chromium.org/155045

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-03 10:13:05 +00:00
whesse@chromium.org
d53e5f8d8a X64: Remove optimistic smi operations on non-smis. They cannot be undone on X64.
Review URL: http://codereview.chromium.org/151200

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-03 09:24:53 +00:00
whesse@chromium.org
a0d07c2941 X64: Fix floating point and integer instructions in assembler.
Review URL: http://codereview.chromium.org/151207

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2346 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-03 09:16:23 +00:00
ager@chromium.org
465aadc8b6 Port %ClassOf() optimization to X64 and ARM.
Review URL: http://codereview.chromium.org/150226

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-02 14:17:10 +00:00
whesse@chromium.org
2ddf3301da X64: Implement InstanceofStub. Prohibit zero-size code objects.
Review URL: http://codereview.chromium.org/151142

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-02 07:09:49 +00:00
whesse@chromium.org
e7e3f03504 X64: Add Math.random, fix UnarySubStub
Review URL: http://codereview.chromium.org/151077

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2320 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-01 11:59:10 +00:00
kasperl@chromium.org
6cfc5f1ef9 Treat the builtins object like other global objects (with
cells in old space for properties) and avoid allocating tons
of unused properties in new space when creating new contexts.
Review URL: http://codereview.chromium.org/151146

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2319 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-01 11:44:37 +00:00
feng@chromium.org
3bf1af0916 Fix the redness on Flexo.
/auto/JavaScriptV8/flexo/linux64/v8/src/x64/stub-cache-x64.cc:0:  One or more unexpected \r (^M) found;better to use only a \n  [whitespace/newline] [1]

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2312 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-30 19:02:59 +00:00
sgjesse@chromium.org
20165a648e Fixed X64 compilation.
TBR=kasperl@chromium.org
Review URL: http://codereview.chromium.org/150103

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2309 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-30 14:58:33 +00:00
whesse@chromium.org
3d065ccebe X64: Make lazy arguments objects work
Review URL: http://codereview.chromium.org/151075

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-30 12:16:47 +00:00
whesse@chromium.org
137f61b85a X64: Implement unary subtraction, ObjectPair. 350 tests still fail.
Review URL: http://codereview.chromium.org/150093

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2304 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-30 12:11:21 +00:00
lrn@chromium.org
df135415ea X64: Fix bad value in stack layout constants.
Remove references to Array:kHeaderSize.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2303 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-30 11:09:57 +00:00
sgjesse@chromium.org
a54a4ada5c Changed the global object representation.The global object is now always in dictionary (slow) mode with each of its properties stored in a cell object. A cell object has one field containing the actual value for the property. Inline caches for access to global properties which uses direct to the cell are now created for load, store and call to properties of the global object. When properties of the global object are deleted the cell for that property is kept with an indcation of that the property is deleted.Added counters to track the use of the global property inline caches.Added additional information on IC's in the disassembler.
Review URL: http://codereview.chromium.org/151019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-30 10:05:36 +00:00
whesse@chromium.org
a7c7d67d3a X64: Remove temporary compiler and assembler tests, now that shell runs.
Review URL: http://codereview.chromium.org/151022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2297 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-29 15:04:24 +00:00
erik.corry@gmail.com
da61eb8b1e Fix build on x64 after compare stub change.
Review URL: http://codereview.chromium.org/150022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2296 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-29 14:23:33 +00:00
erik.corry@gmail.com
c9e004a808 Add a compare stub on ARM.
Review URL: http://codereview.chromium.org/151003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2295 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-29 13:52:13 +00:00
kasperl@chromium.org
f1ffd50257 Optimize %ClassOf() on IA-32 and use it instead of the
custom %HasXXXClass() calls.
Review URL: http://codereview.chromium.org/151018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-29 10:45:16 +00:00
erik.corry@gmail.com
4a30e3f58e * Add missing imul instruction on Intel.
* Fix incorrect signedness in disassembly of umull/mull on ARM.
* Fix incorrect register order in disassembly of umull/mull.
* Fix incorrect assembly of umull on ARM.
* Remove retroactively obsoleted restriction on choice of
  registers in mul instructions on ARM.
Review URL: http://codereview.chromium.org/150002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2292 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-29 09:32:06 +00:00
kasperl@chromium.org
a1622491af Optimize %IsConstructCall() on IA-32.
Review URL: http://codereview.chromium.org/150018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-29 08:14:06 +00:00
whesse@chromium.org
49474f0408 X64: Fix error in running handlers, disable TakeValue optimization for count operators.
Review URL: http://codereview.chromium.org/150007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2288 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-29 08:11:35 +00:00
whesse@chromium.org
29bcccb4e0 X64 Implementation: Implement Generate_Function(Call,Apply)
Review URL: http://codereview.chromium.org/147205

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2287 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-29 08:04:39 +00:00
whesse@chromium.org
e99f056a43 X64 implementation: Store to lookup slots
Review URL: http://codereview.chromium.org/147203

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2284 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-26 13:52:05 +00:00
whesse@chromium.org
0746d93014 X64 Implementation: Correct type, add VisitCallEval
Review URL: http://codereview.chromium.org/149066

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2282 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-26 11:35:42 +00:00
whesse@chromium.org
1ad12de4ba X64 Implementation: Implement floating-point compare
Review URL: http://codereview.chromium.org/147201

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2281 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-26 11:01:13 +00:00
lrn@chromium.org
a51771ddae X64: Break and continue.
Review URL: http://codereview.chromium.org/147198


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2280 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-26 10:59:04 +00:00
whesse@chromium.org
b64f6b9287 X64 implementation: Add arguments object to context when needed.
Review URL: http://codereview.chromium.org/149063

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-26 08:38:48 +00:00
lrn@chromium.org
5b5f528a4f X64: Added support for "with" and "switch".
Review URL: http://codereview.chromium.org/147197


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2278 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-26 08:29:01 +00:00
lrn@chromium.org
f131788739 X64: Added for-in
Review URL: http://codereview.chromium.org/149005


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2277 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-26 07:41:19 +00:00
whesse@chromium.org
8608e1bb4f X64 Implementation: Correct error with initializer blocks
Review URL: http://codereview.chromium.org/149008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2276 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-26 07:27:06 +00:00
whesse@chromium.org
d7e86fc341 X64 implementation: Add some inline runtime functions.
Review URL: http://codereview.chromium.org/149004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2274 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-25 12:06:30 +00:00
lrn@chromium.org
fa03347706 X64: Count operations (increment, decrement)
Review URL: http://codereview.chromium.org/149002


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2273 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-25 11:48:27 +00:00
whesse@chromium.org
14397182f6 X64 implementation: VisitLoop and StackCheck
Review URL: http://codereview.chromium.org/147143

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-25 10:39:28 +00:00
whesse@chromium.org
08d098e082 X64 implementation: VisitUnaryOperation, configure dtoa for X64 platform.
Review URL: http://codereview.chromium.org/147141

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-25 10:15:50 +00:00
whesse@chromium.org
4c2a378842 X64 implementation: GenerateAdaptor builtin.
Review URL: http://codereview.chromium.org/146085

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2266 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-24 15:02:46 +00:00
whesse@chromium.org
cc271fe751 X64 implementation: Start compiling native functions.
Review URL: http://codereview.chromium.org/146083

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2265 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-24 13:48:09 +00:00
whesse@chromium.org
a367522a1a X64 implementation: comparison operations.
Review URL: http://codereview.chromium.org/146082

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-24 13:46:07 +00:00
lrn@chromium.org
76ac8bc73b Removed static type inference and add a dynamic test for string addition.
The complexity of static type inference never really paid off, and as an
analysis it didn't fit well with codegen frame propagation.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2262 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-24 12:46:00 +00:00
lrn@chromium.org
1f5a905302 X64: Implemented LikelySmiBinaryOperation
Review URL: http://codereview.chromium.org/146081


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2261 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-24 12:12:17 +00:00
ager@chromium.org
1a12862c9a Revert attempt to optimize away the allocation of a temporary.
TBR=whesse@chromium.org
Review URL: http://codereview.chromium.org/147076

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-24 08:56:55 +00:00
ager@chromium.org
5b4bacdd69 x64 code generation for construct calls, declaring global variables
and for runtime calls.

We could not handle functions with no explicit return statement.  I
added support for that as well.  The place was hard to find because
code was left out from the codegenerator with no TODO comment.  We
need to make sure to comment if we leave out code when porting
something. :-)

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2257 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-24 08:28:42 +00:00
kasperl@chromium.org
f66ea38c0b Allocate arguments object on-demand instead of at function entry.
This allows Function.prototype.apply to not allocate the objects 
and copy the arguments directly from the stack.
Review URL: http://codereview.chromium.org/147075

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2256 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-24 08:01:38 +00:00
lrn@chromium.org
69764a5d2a X64: Addition binary operation.
Review URL: http://codereview.chromium.org/146022


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2255 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-23 11:26:05 +00:00
whesse@chromium.org
e61d1c7380 X64 implementation: Read compiler tests from test.js.
Review URL: http://codereview.chromium.org/146024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2254 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-23 11:11:38 +00:00
whesse@chromium.org
c19fde4f1c X64 implementation: Change argument to relocator to take a 64-bit delta. Change maximum relocation info encoding length.
Review URL: http://codereview.chromium.org/146021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-23 09:50:51 +00:00
ager@chromium.org
768dc546d2 Remove unused variable from keyed stores to fix 64-bit release mode.
The variable is used for the inlined version of stores which has not
yet been implemented.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-23 06:24:37 +00:00
ager@chromium.org
094d17ffeb x64: Generate code for loading from, storing to and calling properties.
Review URL: http://codereview.chromium.org/141056

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-23 06:12:14 +00:00
ager@chromium.org
ad970953f8 Implement code generation for conditional expressions and regexp
literals.  Regexp literals will not really work before we can
bootstrap, but the right code is being called with the right
arguments.

Finish implementation of object literals.  We can now call through the
StoreIC_Miss stub into the runtime system to do stores.

Restore comment that I accidentally removed in my last commit.
Review URL: http://codereview.chromium.org/140068

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-22 19:25:41 +00:00
ager@chromium.org
8de05cef85 Enable code generation for array literals.
Introduce macro assembler support for pushing heap-object handles and
for comparing a register to a heap-object handle.

Cleanup: Remove some code that was needlessly commented out.  Added
TODO's for code that was commented out (where we do not hit an
UNIMPLEMENTED). 
Review URL: http://codereview.chromium.org/140060

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-22 15:14:20 +00:00
whesse@chromium.org
dcd25643bd X64 implementation: Correct kTargetAddrToReturnAddrDist value for x64.
Review URL: http://codereview.chromium.org/140063

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2240 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-22 14:46:33 +00:00
whesse@chromium.org
1ae3423af8 X64 implementation: Emit correct merge code for virtual frames at CFG merges.
Review URL: http://codereview.chromium.org/141043

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2238 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-22 14:22:39 +00:00
ager@chromium.org
59cd4dc572 X64: Enable lazy compilation and add code generation for simple object
literals.
Review URL: http://codereview.chromium.org/141040

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-22 10:54:11 +00:00
whesse@chromium.org
83ad579ac5 X64 implementation: Add high_bit() and low_bits() to register methods.
Review URL: http://codereview.chromium.org/141032

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2231 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-22 08:17:44 +00:00
whesse@chromium.org
4f6a4a8339 X64 implementation: if-then-else
Review URL: http://codereview.chromium.org/141030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-22 08:08:47 +00:00
whesse@chromium.org
5831cc70e8 X64 implementation: Local vars, nested function calls, assignment statements
Review URL: http://codereview.chromium.org/131050

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-19 10:16:52 +00:00
whesse@chromium.org
8ad2edb6b5 Clarify precedence of operations involving bitwise and(&) in x64/assembler.
Review URL: http://codereview.chromium.org/131099

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2223 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-19 09:12:20 +00:00
kasperl@chromium.org
5f5fbd4e4a Allow functions to have custom construct stubs that are called
when the function is instantiated.
Review URL: http://codereview.chromium.org/132063

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2222 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-19 07:36:16 +00:00
whesse@chromium.org
da49c0f8a2 X64 implementation: Add function literals and function calls.
Review URL: http://codereview.chromium.org/131029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2217 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-18 11:46:38 +00:00
kasperl@chromium.org
ac19e4b29b Update Mozilla test expectations to better match the new handling
of tests that time out.
Review URL: http://codereview.chromium.org/126274

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2207 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-17 13:57:44 +00:00
whesse@chromium.org
310fd67aea X64 Implementation: Make codegen load literals and assign to local variables.
Review URL: http://codereview.chromium.org/126198

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2204 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-17 12:16:59 +00:00
lrn@chromium.org
e9b13d9c39 X64: Implementation of a bunch of stubs, and some new opcodes.
Review URL: http://codereview.chromium.org/125185


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-17 11:50:33 +00:00
kmillikin@chromium.org
73fe551048 Remove the unused support for jump-table switch statements.
Review URL: http://codereview.chromium.org/126193

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2183 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-16 09:50:37 +00:00
whesse@chromium.org
7358e1980c X64 implementation: Test Compiler::Compile by compiling and running a function.
Review URL: http://codereview.chromium.org/126191

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2178 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-16 08:25:08 +00:00
whesse@chromium.org
fb03c8414f X64 platform: Add more register allocator functions.
Review URL: http://codereview.chromium.org/125131

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2177 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-16 08:24:42 +00:00
ager@chromium.org
225a6a82b0 Optimize Math.sin and Math.cos by avoiding runtime calls.
Review URL: http://codereview.chromium.org/125121

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-15 12:06:48 +00:00
kasperl@chromium.org
a20757d7dc Fix x64 build.
Review URL: http://codereview.chromium.org/126114

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2160 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-15 08:25:08 +00:00
lrn@chromium.org
8be7fd052e X64: Call runtime function from JS stack frame.
Review URL: http://codereview.chromium.org/125049


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2156 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-12 13:14:35 +00:00
lrn@chromium.org
d4cc50e165 X64: Remove restriction on using r12 as index register.
Review URL: http://codereview.chromium.org/126045


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2155 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-12 12:29:01 +00:00
whesse@chromium.org
e2fdac39a4 Implement more of x64 register allocator.
Review URL: http://codereview.chromium.org/126043

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-12 11:25:15 +00:00
kmillikin@chromium.org
b318835cdc First round of JumpTarget simplification. Remove dead functions (jumps,
branches, and bind with more than two arguments).  Remove unneeded
variable (the "watermark" on virtual frames).

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2153 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-12 11:25:13 +00:00
ager@chromium.org
f706cfa30c Fix debugger after inlined keyed store change.
Make sure that the IC is always hit when debugging and make sure to
restore the fast case when leaving the debugger.
Review URL: http://codereview.chromium.org/125044

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2152 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-12 11:24:13 +00:00
whesse@chromium.org
f1fcab31c2 X64 implementation starts using virtual frame and register allocators.
Review URL: http://codereview.chromium.org/123018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2146 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-11 13:51:46 +00:00
lrn@chromium.org
d39df3809c X64: Create test JS-function and call it.
Review URL: http://codereview.chromium.org/123017


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-11 13:17:46 +00:00
lrn@chromium.org
e797b865aa X64: Adds zone scope before creating codegenerator for testing.
Review URL: http://codereview.chromium.org/122033


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2143 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-11 11:21:10 +00:00
lrn@chromium.org
525b72a4d5 X64: Implemented InvokeFunction
Review URL: http://codereview.chromium.org/122030


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2142 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-11 10:46:28 +00:00
whesse@chromium.org
594a30ef73 Add x64 implementation test support for assembler and code generator.
Review URL: http://codereview.chromium.org/123014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-11 10:03:51 +00:00
whesse@chromium.org
2de98f8e55 Add statistics operations and long calls and jumps to x64 macro assembler.
Remove unimplemented instructions from x64 assembler.  Add operand-size
suffixes to add, sub, inc, dec, and cmp.
Review URL: http://codereview.chromium.org/118380

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-10 15:53:46 +00:00
kmillikin@chromium.org
2d7d89d831 Get rid of the notion of "parameter pointer" that no longer exists in
the implementation but still lives on in comments and identifier
names.

Where it was used, it has been changed to "caller's stack pointer".
Review URL: http://codereview.chromium.org/118500

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-10 15:08:25 +00:00
lrn@chromium.org
13e548af1d X64: Implement CEntryStub and JSEntryTrampoline.
Still some supporting functions missing.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2130 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-10 09:48:15 +00:00
kmillikin@chromium.org
94a122296d Cleanup of ARM exception handlers. Remove the unused code and
parameter pointer slots.  Change it so that the handler address no
longer points into the middle of the handler.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-10 09:00:07 +00:00
mikhail.naganov@gmail.com
d7cccf6b8d Add log compression ability.
This is a trivial per-row compression:
- short aliases are introduced for events and code creation tags;
- in tick events, offsets are used instead of absolute addresses;
- removed 'code-allocation' event, as it seems not used.

The first two options are depend on the new flag: 'compress-log', which is off by default.

On benchmarks run w/o snapshot, this gives 45% log size reduction.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-08 13:39:48 +00:00
kmillikin@chromium.org
42c7dc755c Fix x64 build.
TBR=whesse@chromium.org,lrn@chromium.org
Review URL: http://codereview.chromium.org/118310

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2114 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-05 17:14:06 +00:00
kmillikin@chromium.org
bd82b972fc Simplify the processing of deferred code in the code generator. Our
deferred code snippets are highly stylized.  They always make a call
to a stub or the runtime and then return.  This change takes advantage
of that.

Creating a deferred code object now captures a snapshot of the
registers in the virtual frame.  The registers are automatically saved
on entry to the deferred code and restored on exit.

The clients of deferred code must ensure that there is no change to
the registers in the virtual frame (eg, by allocating which can cause
spilling) or to the stack pointer.  That is currently the case.

As a separate change, I will add either code to verify this constraint
or else code to forbid any frame effect.

The deferred code itself does not use the virtual frame or register
allocator (or even the code generator).  It is raw macro assembler
code.
Review URL: http://codereview.chromium.org/118226

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-05 14:16:32 +00:00
lrn@chromium.org
b918e64dc3 X64: JSEntry Stub
Review URL: http://codereview.chromium.org/118115


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-04 11:54:14 +00:00
whesse@chromium.org
34de62698c Add multiplication and division to x64 assembler. Add emit_modrm() function.
Review URL: http://codereview.chromium.org/119078

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2098 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-03 13:30:31 +00:00
lrn@chromium.org
5e83c2cc9c X64: Added implementations of Set(..., Immediate) to macro assembler.
Removed duplicates comments in assembler-x64.cc.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-03 10:30:50 +00:00
whesse@chromium.org
ea0644506d Add miscellaneous operations to x64 assembler.
Review URL: http://codereview.chromium.org/113997

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2089 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-02 13:40:52 +00:00
whesse@chromium.org
8c78e673ad Add shift operations to x64 assembler.
Review URL: http://codereview.chromium.org/118107

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2088 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-02 11:43:26 +00:00
lrn@chromium.org
734f1fd135 X64: Added jmp and call and nop(n) to X64 assembler.
Review URL: http://codereview.chromium.org/115920


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2085 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-06-02 07:21:05 +00:00
whesse@chromium.org
b4a219774a Add test, neg, and not instructions to x64 assembler
Review URL: http://codereview.chromium.org/112066

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2076 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-29 08:56:31 +00:00
whesse@chromium.org
ac5eabddee Add more arithmetic to x64 assembler.
Review URL: http://codereview.chromium.org/115857

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-28 10:06:48 +00:00
whesse@chromium.org
76d5e4e06d Add immediate operands and arithmetic operations to the x64 assembler.
Review URL: http://codereview.chromium.org/115816

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2069 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-28 09:18:17 +00:00
kmillikin@chromium.org
3d15415414 Simplify deferred code by removing some unneeded or redundant stuff.
Review URL: http://codereview.chromium.org/113895

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2065 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-27 15:13:00 +00:00
whesse@chromium.org
88635e401e Implement memory operands for instructions in the x64 assembler.
Review URL: http://codereview.chromium.org/113841

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-27 08:15:31 +00:00
kmillikin@chromium.org
9c829fafe9 Change the register allocator so that it no longer tracks references
to the platform-specific reserved registers.  They are always in use
for their intended purpose, cannot appear in the virtual frame, and
can be freely used without allocation in the code generator.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-27 07:53:47 +00:00
whesse@chromium.org
960a1d36c2 Add implementation of control flow and label binding to x64 assembler.
Review URL: http://codereview.chromium.org/113832

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2057 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-26 12:32:09 +00:00
whesse@chromium.org
3bd462f2eb Add a unit test for V8's 64-bit assembler.
Review URL: http://codereview.chromium.org/115707

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-26 07:58:36 +00:00
erik.corry@gmail.com
dc154a9878 Fix 64-bit after in-loop patch.
Review URL: http://codereview.chromium.org/115764

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2047 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-25 18:57:25 +00:00
whesse@chromium.org
80fba5a127 Implementation of a few more assembly instructions on x64
Review URL: http://codereview.chromium.org/113767

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2043 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-25 14:00:30 +00:00
mikhail.naganov@gmail.com
30a0a7de43 Split nested namespaces declaration in two lines in accordance with C++ Style Guide.
This issue was raised by Brett Wilson while reviewing my changelist for readability. Craig Silverstein (one of C++ SG maintainers) confirmed that we should declare one namespace per line. Our way of namespaces closing seems not violating style guides (there is no clear agreement on it), so I left it intact.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2038 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-25 10:05:56 +00:00
kmillikin@chromium.org
6244c02f24 Remove unreachable x64-specific function.
Review URL: http://codereview.chromium.org/113635

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2032 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-22 10:31:41 +00:00
whesse@chromium.org
1f7b98689d Add missing file to change 2030. x64/assembler-x64-inl.h was not uploaded.
Review URL: http://codereview.chromium.org/113761

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2031 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-22 09:04:06 +00:00
whesse@chromium.org
5f5f33e4fb Implement quadword MOV on x64 assembler, emitting REX prefix.
Review URL: http://codereview.chromium.org/115571

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-22 07:53:28 +00:00
whesse@chromium.org
1ac2603eb7 Add the REX prefix to 64-bit assembly operands. Move some inline functions.
Review URL: http://codereview.chromium.org/115568

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2017 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-20 14:14:44 +00:00
lrn@chromium.org
19d279f815 X64: Move some methods in x64/ to their file and make codegen do int3.
Review URL: http://codereview.chromium.org/115567


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2016 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-20 13:20:02 +00:00
whesse@chromium.org
59fab02e3e Implement constructor and destructor of 64-bit assembler
Review URL: http://codereview.chromium.org/113631

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2014 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-20 12:17:23 +00:00
kmillikin@chromium.org
01bc6d1056 Fix x64 build.
Review URL: http://codereview.chromium.org/115565

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2013 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-20 11:54:35 +00:00
kmillikin@chromium.org
bcff796134 Size reduction of VirtualFrame objects. Remove the code generator and
macro assembler pointers and all derived state.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2011 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-20 11:14:18 +00:00
kmillikin@chromium.org
2ab1dedb03 Increase the size of VirtualFrame members to allow a larger number of
parameters, stack-allocated locals, or expression stack elements.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2002 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-19 20:29:23 +00:00
lrn@chromium.org
c27d0f7b4b X64: Fixups in heap-test.cc to make it compile in X64 mode.
Review URL: http://codereview.chromium.org/113574


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1994 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-19 08:59:23 +00:00
kmillikin@chromium.org
0dda60a96d Inline some simple member functions of VirtualFrame.
Review URL: http://codereview.chromium.org/113525

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1993 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-18 14:32:43 +00:00
ager@chromium.org
33debd1460 Fix build on arm and x64.
Note to self: remember all platforms.
Review URL: http://codereview.chromium.org/115399

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1967 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-15 11:32:03 +00:00
whesse@chromium.org
4a12504f89 Improve algorithm for detaching and attaching a virtual frame to the code
generator.  Inline copying of a register file.
Review URL: http://codereview.chromium.org/113402

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1954 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-14 16:06:04 +00:00
ager@chromium.org
2a96ec599b Fix x64 build.
Review URL: http://codereview.chromium.org/115351

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1952 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-14 12:26:59 +00:00
deanm@chromium.org
6d319c7229 x64: Stub out more unimplemented functions, we now link shell.
Review URL: http://codereview.chromium.org/113339


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1936 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-13 13:50:18 +00:00
lrn@chromium.org
ae8e20ba83 X64: Added dummy definitions of needed functions.
All functions added in assembler-x64.cc. They should be distributed to where they belong when they are implemented.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1933 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-13 12:50:33 +00:00
kmillikin@chromium.org
60c42717f3 Refactor JumpTarget::Combine.
Review URL: http://codereview.chromium.org/113329

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1930 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-13 10:29:49 +00:00
lrn@chromium.org
2b6988f2dd X64: Added stubs for unimplemented disassembler functions.
Review URL: http://codereview.chromium.org/113261


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1917 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-12 13:09:02 +00:00
lrn@chromium.org
142fe3431a X64: General fixes - added inline definitions and changed some places to intptr_t.
Review URL: http://codereview.chromium.org/113199


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1913 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-12 10:33:40 +00:00
whesse@chromium.org
d550fdbb3f Add x64 header files to make the build compile
Review URL: http://codereview.chromium.org/115023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1885 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-06 13:27:35 +00:00
whesse@chromium.org
1a5c6cfaca Make assembler-x64.h and assembler-x64-inl.h compile
Review URL: http://codereview.chromium.org/115021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1881 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-06 12:08:50 +00:00
deanm@chromium.org
e3762851a1 Stub out a small portion of the x64 assembler.
Review URL: http://codereview.chromium.org/108014


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1869 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-05 14:39:05 +00:00
deanm@chromium.org
cdbdb969ec Add a x64 stub of frames-x64.h so we have StackHandlerConstants.
This is just a stripped down version of ia32, and will need to change.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1865 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-05 12:26:29 +00:00
lrn@chromium.org
32686a11f0 Added empty files in the x64 directory.
Added initially empty files for x64 development.

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


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-05-04 07:16:10 +00:00