fschneider@chromium.org
88371e63f6
Adding declaration of global variables and functions in new compiler.
...
Adding calls to global functions to the new compiler.
Review URL: http://codereview.chromium.org/302002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-21 09:17:39 +00:00
kmillikin@chromium.org
4dfd44479d
Added support for assignments to global variables in the toplevel code
...
generator. We use the normal store IC mechanism with the global
object as the receiver. The following code is generated for 'x=true'
at toplevel.
======== IA32:
27 mov eax,0xf5d06161 ;; object: 0xf5d06161 <true>
32 mov ecx,0xf5d09c35 ;; object: 0xf5d09c35 <String[1]: x>
37 push [esi+0x17]
40 call StoreIC_Initialize (0xf5ce75c0) ;; code: STORE_IC, UNINITIALIZED
45 mov [esp],eax
======== X64:
25 movq rax,0x7f867a7b6199 ;; object: 0x7f867a7b6199 <true>
35 movq rcx,0x7f867a7bae71 ;; object: 0x7f867a7bae71 <String[1]: x>
45 push [rsi+0x2f]
49 call StoreIC_Initialize (0x7f8655929ac0) ;; code: STORE_IC, UNINITIALIZED
54 movq [rsp],rax
======== ARM:
32 e59f0054 ldr r0, [pc, #+84] ;; object: 0xf5b78161 <true>
36 e59f2054 ldr r2, [pc, #+84] ;; object: 0xf5b7bc35 <String[1]: x>
40 e598c017 ldr ip, [r8, #+23]
44 e52dc004 str ip, [sp, #-4]!
48 e1a0e00f mov lr, pc
52 e59ff048 ldr pc, [pc, #+72] ;; debug: statement 0
;; code: STORE_IC, UNINITIALIZED
56 e58d0000 str r0, [sp, #+0]
Review URL: http://codereview.chromium.org/305005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3095 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-20 13:37:26 +00:00
fschneider@chromium.org
1cc731ab0d
Record statement positions for the debugger in the fast code generator.
...
Review URL: http://codereview.chromium.org/271102
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3075 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-15 15:27:37 +00:00
kmillikin@chromium.org
f74e723599
Initial infrastructure for fast compilation of top-level code. The
...
fast code generator is optimized for compilation time and code size.
Currently it is only implemented on IA32. It is potentially triggered
for any code in the global scope (including code eval'd in the global
scope). It performs a syntactic check and chooses to compile in fast
mode if the AST contains only supported constructs and matches some
other constraints.
Initially supported constructs are
* ExpressionStatement,
* ReturnStatement,
* VariableProxy (variable references) to parameters and
stack-allocated locals,
* Assignment with lhs a parameter or stack-allocated local, and
* Literal
This allows compilation of literals at the top level and not much
else.
All intermediate values are allocated to temporaries and the stack is
used for all temporaries. The extra memory traffic is a known issue.
The code generated for 'true' is:
0 push ebp
1 mov ebp,esp
3 push esi
4 push edi
5 push 0xf5cca135 ;; object: 0xf5cca135 <undefined>
10 cmp esp,[0x8277efc]
16 jnc 27 (0xf5cbbb1b)
22 call 0xf5cac960 ;; code: STUB, StackCheck, minor: 0
27 push 0xf5cca161 ;; object: 0xf5cca161 <true>
32 mov eax,[esp]
35 mov [ebp+0xf4],eax
38 pop eax
39 mov eax,[ebp+0xf4]
42 mov esp,ebp ;; js return
44 pop ebp
45 ret 0x4
48 mov eax,0xf5cca135 ;; object: 0xf5cca135 <undefined>
53 mov esp,ebp ;; js return
55 pop ebp
56 ret 0x4
Review URL: http://codereview.chromium.org/273050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-14 19:30:50 +00:00
kmillikin@chromium.org
586f94f292
Split the AST LoopStatement type into separate types for do/while,
...
while, and for loops.
Previously they were distinguished by a type field, which required
runtime asserts to avoid invalid nodes (since not all loop types have
the same internal structure). Now they C++ type system is used to
require well-formed loop ASTs.
Because they do not share compilation code, we had very large
functions in the code generators that merely did a runtime dispatch to
a specific implementation based on the type.
Review URL: http://codereview.chromium.org/269049
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-10-12 13:14:06 +00:00
kmillikin@chromium.org
f0ba671344
Move the per-ast-node statement position to only statement node types.
...
It was not currently being used for expressions or declarations and
always had the default initial value.
Review URL: http://codereview.chromium.org/246019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2976 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2009-09-28 12:01:05 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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