sgjesse@chromium.org
3546e91bbc
Refactor the register to name mapping in the ARM simulator.
...
Review URL: http://codereview.chromium.org/195024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2847 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-09 07:01:20 +00:00
lrn@chromium.org
8f60f1a46f
Win64 - Allow returning two values from a runtime function.
...
(Not yet fully functional)
Review URL: http://codereview.chromium.org/201042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2845 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-08 11:52:05 +00:00
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
b8b7832a61
Last step in allocating objects in generated code on ARM.
...
Port specialized constructor code for constructing simple objects to ARM.
See http://codereview.chromium.org/173470 for description.
Review URL: http://codereview.chromium.org/196024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2834 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-07 10:31:02 +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
ager@chromium.org
5b3ce10995
Fix lint issue.
...
Review URL: http://codereview.chromium.org/197006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2819 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-03 07:23:22 +00:00
sgjesse@chromium.org
8150609edb
Fix the debugger in the ARM simulator.
...
The debugger in the ARM simulator is now working again.
Added a help command and a command to print all registers. Made the printobject command print something in release builds.
Review URL: http://codereview.chromium.org/191004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2818 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-02 14:46:40 +00:00
sgjesse@chromium.org
376537c12a
First step in allocating objects in generated code on ARM.
...
Re-apply http://codereview.chromium.org/175045 with the single change that the line
mov(scratch, Operand(new_space_allocation_top));
have been added to MacroAssembler::UndoAllocationInNewSpace after the #endif. Without this change the top was not reset.
TBR=erik.corry@gmail.com
Review URL: http://codereview.chromium.org/184009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-02 11:13:44 +00:00
lrn@chromium.org
11ef516137
ARM RegExp fix bug 432.
...
Review URL: http://codereview.chromium.org/186005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2814 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-02 09:10:49 +00:00
lrn@chromium.org
23e84069c8
RegExp: Remove unnecessary function from ARM specific code and convert condition to assertion.
...
Review URL: http://codereview.chromium.org/178034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-02 07:34:51 +00:00
sgjesse@chromium.org
33a8bdad62
Reverting 2797.
...
Review URL: http://codereview.chromium.org/176060
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2799 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-01 15:23:35 +00:00
sgjesse@chromium.org
00a2afeaa6
First step in allocating objects in generated code on ARM
...
This change moves the allocation of new objects into generated code. The allocation will bail out into the runtime system if the number of properties to allocate for the object exceeds the number of in-object properties.
Review URL: http://codereview.chromium.org/175045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2797 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-01 14:18:27 +00:00
sgjesse@chromium.org
6cdd89b165
hange bad choice for scratch register for native code counters on ARM
...
This caused running with native code counters on ARM to crash.
Review URL: http://codereview.chromium.org/181031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2792 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-01 11:26:48 +00:00
sgjesse@chromium.org
62e9956c91
Move object allocation in new space to macro assembler
...
Currently allocation in generated code on ARM is only used for allocating heap numbers. This change factors this out for use in upcomming changes.
Review URL: http://codereview.chromium.org/173625
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2789 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-01 07:36:46 +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
fcf8293df2
Move stack check into AllocateStackSlots so the load delay can be
...
interleaved with other instructions. Reorder the stack check
slightly to avoid some load delay. The end result is almost
imperceptible.
Review URL: http://codereview.chromium.org/181019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2784 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-31 10:38:00 +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
erik.corry@gmail.com
a29d4e6762
* Make stack/preemption guard faster on ARM by putting stack
...
limit in the roots array.
Review URL: http://codereview.chromium.org/174517
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2760 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-26 10:27:32 +00:00
sgjesse@chromium.org
46a9b8f26b
Make ARM simulator compile on Windows.
...
Remove suspicious line from ARM simulator, which caused a compiler warning on Windows.
Review URL: http://codereview.chromium.org/173464
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2756 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-26 08:11:46 +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
erik.corry@gmail.com
038f9074bc
Reapply ARM root array change to reduce const pool size
...
by using r10 to point to a list of common root objects.
This time we also disable a debugger test on ARM that
has never worked, but with this change sometimes
crashes.
Review URL: http://codereview.chromium.org/174317
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-24 11:57:57 +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
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
feng@chromium.org
33fb11c12f
Revert commit 2701 per Erik Corry's request.
...
Original CL:
http://codereview.chromium.org/171041
Review URL: http://codereview.chromium.org/171089
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2702 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-18 00:12:26 +00:00
whesse@chromium.org
349dc04a5d
Use root array to load roots in generated ARM code.
...
This cuts down on code size and reloc work.
Review URL: http://codereview.chromium.org/171041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2701 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-17 14:31:49 +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
kmillikin@chromium.org
d1f846cb2b
Remove much of the register allocation overhead from ARM. When
...
registers are required for calls, explicitly construct a Result with
the needed register rather than allocating it. For returns from
calls, let the return value in r0 be implicit rather than explicitly
allocated.
Review URL: http://codereview.chromium.org/164316
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2659 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-11 11:46:27 +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
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
90772fa427
Change the SpilledScope scope and ...AndSpill functions on ARM so that
...
they do nothing. The frame is currently always spilled, so they were
not doing anything useful.
The call sites have been left alone to mark where spills will
eventually be needed if we begin doing register allocation on ARM.
Review URL: http://codereview.chromium.org/164136
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2644 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-08-07 08:18:31 +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
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
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
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
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
kmillikin@chromium.org
1a39e07003
Another name change for consistency's sake. NODE_LIST -> AST_NODE_LIST.
...
Review URL: http://codereview.chromium.org/159633
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2587 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-30 12:09:05 +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
antonm@chromium.org
0d2c81584b
Compile precanned answers for the case of failed interceptor for some combinations.
...
Review URL: http://codereview.chromium.org/140069
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2577 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-29 12:34:21 +00:00
antonm@chromium.org
4354661a49
Get rid of unnecessary handle management when invoking interceptors.
...
Review URL: http://codereview.chromium.org/155682
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2562 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-28 14:46:06 +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
iposva@chromium.org
1ce28eda0b
- Expose CanvasPixelArray functionality directly in JavaScript
...
indexed property accesses.
- The IC stubs have not been updated to handle these directly, but
at least we do not have to leave the VM to access bytes.
Review URL: http://codereview.chromium.org/159263
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2549 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-28 08:43:51 +00:00
vitalyr@chromium.org
57e8217c10
Stub Cache: speed up load callback accessor by allocating data handle on stack.
...
Review URL: http://codereview.chromium.org/160041
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2538 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-27 09:54:59 +00:00
kmillikin@chromium.org
1ca19c383d
Fix ARM compiler crash in short-circuited boolean expressions.
...
We did not handle the case where the left-hand-side expression was
fully compiled to control flow. There were also some assertions for
unary and binary expressions that crashed debug builds when the
expression was fully compiled to control flow.
Regression test added.
Review URL: http://codereview.chromium.org/160006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2524 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-07-23 11:40:14 +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