- 22 Feb, 2011 1 commit
-
-
fschneider@chromium.org authored
The class did not correctly implement the RequiredInputRepresentation. I changed this functions to be abstract so that all hydrogen classes must implement it. As a convention instructions with zero input operands return None as input representation. Instructions that can handle all input representations without converting before also have None as required input representation (e.g. HTest) All other instructions need a proper required input representation. Review URL: http://codereview.chromium.org/6538088 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6891 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Feb, 2011 1 commit
-
-
kmillikin@chromium.org authored
If we have a property access of the form this.x, where the access site sees the global object, we can specialize the IC stub so that it performs a map check without first performing a heap object check. Ensure that we do not get in JS code with a non-JSObject this value by deoptimizing at Function.prototype.apply if the first argument is not a JSObject. BUG=v8:1128 Review URL: http://codereview.chromium.org/6463025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6707 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Feb, 2011 1 commit
-
-
lrn@chromium.org authored
Review URL: http://codereview.chromium.org/6410028 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6577 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 31 Jan, 2011 1 commit
-
-
fschneider@chromium.org authored
1. The placement of checks for negative zero has to be computed after all conversion instructions have been inserted. I separated the code into its own phase. 2. GVN need to take instruction flags into account when comparing instructions for redundancy. Review URL: http://codereview.chromium.org/6260035 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6534 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Jan, 2011 1 commit
-
-
antonm@chromium.org authored
Review URL: http://codereview.chromium.org/6266007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Jan, 2011 1 commit
-
-
antonm@chromium.org authored
Currently only closures which only read from the context are supported. Review URL: http://codereview.chromium.org/5753005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6340 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Jan, 2011 1 commit
-
-
whesse@chromium.org authored
Review URL: http://codereview.chromium.org/6175001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6228 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Dec, 2010 1 commit
-
-
ricow@chromium.org authored
Reduce number of iterations in new regression test, this times out on arm and the regression is hit with an order of magnitude less iterations. Review URL: http://codereview.chromium.org/5963001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6058 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Dec, 2010 1 commit
-
-
fschneider@chromium.org authored
The overflow conditions were not correctly detected for certain add, sub and mul instructions. I replaced the previous code by using 64-bit arithmetic to correctly identify overflows for *, + and -. Review URL: http://codereview.chromium.org/5860009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6055 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Dec, 2010 4 commits
-
-
kmillikin@chromium.org authored
When falling off the end of a function inlined in a test context, we cannot constant fold the test of undefined away. The graph builder assumes that control flow always reaches both branches of a test. Instead, explicitly test and branch on "undefined". Introduce a pair of empty blocks to hold the necessary LeaveInlined instructions. Review URL: http://codereview.chromium.org/5566005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5927 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kasperl@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5922 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kasperl@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5921 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kasperl@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5920 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Nov, 2010 1 commit
-
-
lrn@chromium.org authored
Review URL: http://codereview.chromium.org/5129002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5855 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 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
-