- 10 May, 2010 1 commit
-
-
erik.corry@gmail.com authored
of having a list of virtual frame pointers in the jump target we have one virtual frame, which is the frame that all have to merge to to branch to that frame. The virtual frame in the JumpTarget is inside the JumpTarget, rather than being an allocated object that is pointed to. Unfortunately this means that the JumpTarget class has to be able to see the size of a VirtualFrame object to compile, which in turn lead to a major reorganization of related .h files. The actual change of functionality in this change is intended to be minimal (we now assert that the virtual frames match when using JumpTarget instead of just assuming that they do). Review URL: http://codereview.chromium.org/1961004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Mar, 2010 2 commits
-
-
kmillikin@chromium.org authored
The stack check has been moved from the Accept function dispatching on the AST node type, earlier to the Visit function dispatching on the visitor type. This allows very simple non-recursive visitors (not taking extra arguments or returning values) via the convention of calling "Visit" if one wants the stack check and "Accept" if one does not. Recursive calls should all be via "Visit". Review URL: http://codereview.chromium.org/1567007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4320 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
Cut down on the number of arguments passed to the various binary operation code generator functions by passing along the expression itself, rather than a subset of its fields. Review URL: http://codereview.chromium.org/1592001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4319 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Mar, 2010 1 commit
-
-
kmillikin@chromium.org authored
The flow graph has been simplified to remove the special branch, join, and exit nodes. All nodes are now basic blocks (possibly empty to preserve edge-split form) with a distinguished entry and exit block. Most trivial expressions are not added to the flow graph as instructions. The assigned variable analyzer has been changed to sometimes work right-to-left so that right subexpressions can be marked as trivial. The reaching definitions analysis has been temporarily removed, and the analyses that depended on it (primitivity analysis, dead code marking) as well. Review URL: http://codereview.chromium.org/1530003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Mar, 2010 1 commit
-
-
whesse@chromium.org authored
Review URL: http://codereview.chromium.org/1233003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4273 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Mar, 2010 1 commit
-
-
kmillikin@chromium.org authored
As part of aggressive dead code elimination, we initially assume all flow-graph instructions are not live. We mark those that are critical and recursively all their children. The children of variable references (VariableProxies occurring as rvalues) include all their reaching definitions. Review URL: http://codereview.chromium.org/1159005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Mar, 2010 3 commits
-
-
kmillikin@chromium.org authored
Previously we marked compare operations that occurred as for loop conditions so as to avoid inlining the floating-point code for them. Begin marking all expressions that occur as any loop condition (because they are never dead code). Review URL: http://codereview.chromium.org/1074009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4227 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
This change adds a data-flow pass to statically determine if a variable contains a primitive type. It requires building the flow graph and computing reaching definitions as pre-requisites. The analysis annotates all VariableProxy nodes with the result. Review URL: http://codereview.chromium.org/1132005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
iposva@chromium.org authored
their place. - Add one field to the SharedFunctionInfo to remember the number of literals used in this function. Review URL: http://codereview.chromium.org/669240 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4211 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Mar, 2010 1 commit
-
-
fschneider@chromium.org authored
This change adds the option to peel off the first iteration of inner loops. Loop peeling is off by default and can enabled by a flag. It also requires building a flow graph. As part of this I added the possibility to clone AST nodes. Review URL: http://codereview.chromium.org/998001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4205 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Mar, 2010 1 commit
-
-
kmillikin@chromium.org authored
After computing RD_in for all flow graph nodes, push the reaching definitions through the basic blocks to annotate all variable references in the AST. Review URL: http://codereview.chromium.org/889003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4143 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Mar, 2010 1 commit
-
-
kmillikin@chromium.org authored
IsPrimitive reflects that an expression's value is known statically to be one of the ECMA-262-3 JS types other than Object (e.g., Undefined, Null, Boolean, String, or Number). The type conversions ToPrimitive, ToNumber, ToInteger, ToInt32, ToUInt32, ToUint16, ToString, or ToObject cannot invoke user code for primitive input values. ToObject throws a TypeError if its input is Undefined or Null. Review URL: http://codereview.chromium.org/912002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4116 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Mar, 2010 1 commit
-
-
fschneider@chromium.org authored
This change fixes a bug with the arguments object that occurred with r4087 and r4088. The fix is not marking the arguments variable as trivial since it can have side effects. Review URL: http://codereview.chromium.org/851002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 Mar, 2010 2 commits
-
-
whesse@chromium.org authored
Review URL: http://codereview.chromium.org/805005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4089 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
This change adds a pass over the AST that computes the set of assigned variables for locals and parameters for each expression. The result of this analysis is used to for two purposes: 1. Recognize variables that are trivial subexpressions. A left sub-expression of a binary operation is trivial if it is a local variable or a parameter and it is not assigned in the right sub-expression. In the case of a trivial left sub-expression we evaluate the right first. Currently only binary operations and compare operations are considered when finding trivial left sub-expressions. 2. Recogize certain simple for-loops with a constant trip count where the loop variable is always within smi range. If the loop count variable is not assigned in the body of the loop (except in the update expression the for-loop). This allows omitting smi checks on operation using the loop count variable. Review URL: http://codereview.chromium.org/669155 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Mar, 2010 1 commit
-
-
kmillikin@chromium.org authored
A variable usage analysis pass was run on toplevel and lazily-compiled code but never used. Remove this pass and the data structures it builds. The representation of variable usage for Variables has been changed from a struct containing a (weighted) count of reads and writes to a simple flag. VariableProxies are always used, as before. The unused "object uses" is removed. Review URL: http://codereview.chromium.org/669270 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 01 Feb, 2010 1 commit
-
-
lrn@chromium.org authored
Review URL: http://codereview.chromium.org/549207 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3752 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Jan, 2010 1 commit
-
-
lrn@chromium.org authored
Review URL: http://codereview.chromium.org/507051 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3563 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Oct, 2009 1 commit
-
-
kmillikin@chromium.org authored
location to an Expression AST node from the node's parent to the node itself. This allows an inherited code generation context from a parent node to be passed arbitrarily far down the tree (eg, the subexpression of a unary not is in the same context as the unary expression itself, the then and else subexpressions of the ternary operator are in the same context as the whole expression, and so forth). We do not yet take advantage of this in the backend (eg, the right subexpression of short-circuited OR is still compiled by using the parent's destination location, rather than the subexpression's itself). Review URL: http://codereview.chromium.org/340005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3163 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Oct, 2009 2 commits
-
-
kmillikin@chromium.org authored
implementation is not yet complete (it prints only the node name for some AST constructs) and does not serialize everything needed to reconstitute the AST. It is motivated by a desire to prototype source-to-source transformations in JavaScript itself (or anything else that can grok JSON), but it should have other uses too. Feedback is welcome. Review URL: http://codereview.chromium.org/131101 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
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
-
- 29 Sep, 2009 1 commit
-
-
kmillikin@chromium.org authored
differentiating between Call and CallEval except in the code generator, and the difference can be detected from a regular Call AST node at code generation time. Review URL: http://codereview.chromium.org/245042 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2984 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jul, 2009 1 commit
-
-
kmillikin@chromium.org authored
Review URL: http://codereview.chromium.org/159633 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2587 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Jun, 2009 1 commit
-
-
kasperl@chromium.org authored
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
-
- 25 May, 2009 1 commit
-
-
mikhail.naganov@gmail.com authored
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
-
- 24 Apr, 2009 1 commit
-
-
christian.plesner.hansen@gmail.com authored
the properties as well. This fixes some failing tests. - Moved json parsing into native code. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1789 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Mar, 2009 1 commit
-
-
olehougaard authored
Review URL: http://codereview.chromium.org/48006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1571 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Mar, 2009 1 commit
-
-
erik.corry@gmail.com authored
Review URL: http://codereview.chromium.org/46088 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1511 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 Mar, 2009 2 commits
-
-
kmillikin@chromium.org authored
blocks labeled by "break", "continue", and "return". BreakTargets are the only jump targets that appear in the AST, the only ones that can be uninitialized, and the only ones that can be shadowed. Review URL: http://codereview.chromium.org/42008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1475 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
olehougaard authored
Review URL: http://codereview.chromium.org/40295 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1469 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Mar, 2009 1 commit
-
-
olehougaard authored
Optimizing nested, constant object literals (like JSON objects) by building one large object template for the entire object instead of one for each sub-object. Review URL: http://codereview.chromium.org/39184 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1432 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Feb, 2009 1 commit
-
-
kmillikin@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 03 Feb, 2009 1 commit
-
-
lrn@chromium.org authored
Choice nodes may know that they are never not at the start of input. This can remove start_of_input assertions in cases where they are statically known to fail. The initial loop is unrolled once if the regexp might check for the start of input. Only the first iteration may be at the start, the following loop knows that it isn't. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1217 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Jan, 2009 1 commit
-
-
christian.plesner.hansen@gmail.com authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1130 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Jan, 2009 1 commit
-
-
christian.plesner.hansen@gmail.com authored
also revealed a bug or two that had to be fixed. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Dec, 2008 1 commit
-
-
lrn@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@988 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Nov, 2008 1 commit
-
-
olehougaard authored
Review URL: http://codereview.chromium.org/12673 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@860 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Nov, 2008 1 commit
-
-
lrn@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@846 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Nov, 2008 1 commit
-
-
christian.plesner.hansen@gmail.com authored
Review URL: http://codereview.chromium.org/12427 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Nov, 2008 1 commit
-
-
ager@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-