- 20 May, 2010 1 commit
-
-
whesse@chromium.org authored
Change keyed store IC interface on x64 to take value, key, and receiver in registers rather than on the stack. Review URL: http://codereview.chromium.org/2111011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4692 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Mar, 2010 1 commit
-
-
fschneider@chromium.org authored
This change fixes an assert we hit when we recognized a fast smi loop with a parameter as the loop variable. BUG=650 Review URL: http://codereview.chromium.org/1138003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4202 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Mar, 2010 2 commits
-
-
fschneider@chromium.org authored
We may encounter an invalid frame after generating code for the loop body in case the loop body ends in an unconditional return. Before setting the type information for the loop variable we need to check for a valid frame. Review URL: http://codereview.chromium.org/1106002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4182 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/1014007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Mar, 2010 1 commit
-
-
fschneider@chromium.org authored
Also treat const-variables as not side-effect free. Review URL: http://codereview.chromium.org/982009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4172 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Mar, 2010 1 commit
-
-
fschneider@chromium.org authored
Even if we know that the input to a count operation is a smi we still need to check if the result overflowed (and becomes a heap number). Also fix the smi loop analysis to take two border cases correctly into account. Review URL: http://codereview.chromium.org/1040002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4147 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Feb, 2010 1 commit
-
-
whesse@chromium.org authored
Fix error in compound assignment to keyed load by making platform-independent full compiler code platform dependent, add test of compound assignments. Review URL: http://codereview.chromium.org/646009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3897 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Feb, 2010 1 commit
-
-
fschneider@chromium.org authored
This change add simple local live variable information to the fast code generator. It supports only AST nodes that are accepted by the syntax checker. Each variable use points to a variable definition structure which contains the last use of the definition. To determine whether a variable is live after a certain point we can check whether its last use occurs later in the evaluation order defined by the AST labeling number. The new information is currently only printed out together with the IR and not yet used for code generation. Review URL: http://codereview.chromium.org/603004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 Feb, 2010 2 commits
-
-
kmillikin@chromium.org authored
Explicitly check that global variables do not have accessors or interceptors in the fast code generator syntax checker. Review URL: http://codereview.chromium.org/595022 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3828 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
Do not use the speculative compiler for functions with other than one statement in the body, and do not use it if subexpressions can have side effects. Bailing out to the beginning of the full code is not sound if side effects have already occurred. Add tests that would fail without the restrictions. Review URL: http://codereview.chromium.org/598016 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3826 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Feb, 2010 1 commit
-
-
kmillikin@chromium.org authored
Support a binary operation (bitwise OR) so long as it's not nested in the left subexpression. This ensures that the expression stack never has height greater than two and so can be kept fully in registers. The bounded expression stack height and the absence of any side effects on the fast path allows us to still bailout out to the very beginning of the function if any of our fast-path checks fail. Review URL: http://codereview.chromium.org/594008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3822 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Feb, 2010 1 commit
-
-
fschneider@chromium.org authored
This is a first step towards loading globals directly from property cells instead of going through a load IC. This change supports only properties with the DontDelete attribute since we are only able to bailout into the generic code generated by the secondary code generator the beginning of a function. The resulting fast-case code is specialized for a specific context. When invoked with a different global object, it will always bailout to the secondary code. When loading a property that does not exist at compile-time or a property that is deleteable we still generate the generic load IC. Review URL: http://codereview.chromium.org/565034 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3808 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Jan, 2010 1 commit
-
-
fschneider@chromium.org authored
TBR=kmillikin@chromium.org, Review URL: http://codereview.chromium.org/555132 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3724 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Jan, 2010 1 commit
-
-
ager@chromium.org authored
Review URL: http://codereview.chromium.org/555099 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3711 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Jan, 2010 1 commit
-
-
kmillikin@chromium.org authored
allowing the value of the rightmost subexpressions to be evaluated into an accumulator register (eg, eax, rax, or r0) rather than onto the stack. Review URL: http://codereview.chromium.org/541047 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3630 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 04 Jan, 2010 1 commit
-
-
fschneider@chromium.org authored
Until now we only supported postfix operations on global variables. This change add generic count operations to the top-level compiler. I tried to re-use code from the code generator used for assignment expressions where possible. Review URL: http://codereview.chromium.org/496009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3530 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Dec, 2009 1 commit
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/466056 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Nov, 2009 1 commit
-
-
fschneider@chromium.org authored
Also added a simple test that invokes a JS runtime function in top-level code. Review URL: http://codereview.chromium.org/437081 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3371 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Nov, 2009 1 commit
-
-
fschneider@chromium.org authored
Fixes issue 526: BUG=http://code.google.com/p/v8/issues/detail?id=526 The object literals code in the fast compiler returned an incorrect result when getter or setters are defined together with computed properties. Added a regression test that captures the most reduced version of this problem. Also added a test for object literals with getters/setters and prototype properties. Review URL: http://codereview.chromium.org/444001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Nov, 2009 3 commits
-
-
kmillikin@chromium.org authored
Review URL: http://codereview.chromium.org/340059 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3199 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
a function in the top-level compiler. e.g. function f() { return (function() { return true; }) } f()() Review URL: http://codereview.chromium.org/346029 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3196 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
variable for the top-level compiler. Review URL: http://codereview.chromium.org/342058 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3194 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Oct, 2009 1 commit
-
-
fschneider@chromium.org authored
o.x() and o[expr]() other changes: - Fix missing relocation info for StoreIC on global object. - Generate only one common return sequence instead of always appending "return <undefined>" at the end of each function: The first JS return-statement will generate the common return sequence. All other return-statements will generate a unconditional branch to the common return sequence. Review URL: http://codereview.chromium.org/340037 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3183 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Oct, 2009 1 commit
-
-
fschneider@chromium.org authored
The generated code is similar to the existing code, but we never inline any IC code in the fast compiler. Review URL: http://codereview.chromium.org/337045 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3152 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Oct, 2009 1 commit
-
-
fschneider@chromium.org authored
I also added more unit tests for literals. Right now, the fast compiler produces code very similar to the existing code generator. We may consider different ways to further compact the generated code for top-level code. ARM always goes through a runtime function to initialize computed properties in an object literal whereas IA32 and x64 use StoreIC. Review URL: http://codereview.chromium.org/316009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Oct, 2009 1 commit
-
-
kmillikin@chromium.org authored
currently compiled the same as with the optimizing compiler: they are cloned from a boilerplate object and the boilerplate objects are lazily constructed. Also changed argument pushing on ARM to use stm (store multiple), which required changing the order of arguments to the runtime functions DeclareGlobals and NewClosure. They were only used from generated code. Finally, changed the toplevel code generator so that stack pops to discard a temporary became addition to the stack pointer on ia32 and x64. Review URL: http://codereview.chromium.org/303021 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3110 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Oct, 2009 1 commit
-
-
kmillikin@chromium.org authored
the normal named load IC mechanism for now. Generated code is similar to the case for global variable assignments. Review URL: http://codereview.chromium.org/294021 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3101 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Oct, 2009 1 commit
-
-
kmillikin@chromium.org authored
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
-
- 14 Oct, 2009 1 commit
-
-
fschneider@chromium.org authored
are in a separate subdirectory called 'compiler' in the mjsunit directory. Review URL: http://codereview.chromium.org/273039 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-