- 26 Nov, 2015 1 commit
-
-
rossberg authored
Moves all files related to AST and scopes into ast/, and all files related to scanner & parser to parsing/. Also eliminates a couple of spurious dependencies. R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1481613002 Cr-Commit-Position: refs/heads/master@{#32351}
-
- 25 Aug, 2015 1 commit
-
-
mtrofin authored
This change encompasses what is necessary to enable stack checks in loops without suffering large regressions. Primarily, it consists of a new mechanism for dealing with deferred blocks by "splintering", rather than splitting, inside deferred blocks. My initial change was splitting along deferred block boundaries, but the regression introduced by stackchecks wasn't resolved conclusively. After investigation, it appears that just splitting ranges along cold block boundaries leads to a greater opportunity for moves on the hot path, hence the suboptimal outcome. The alternative "splinters" ranges rather than splitting them. While splitting creates 2 ranges and links them (parent-child), in contrast, splintering creates a new independent range with no parent-child relation to the original. The original range appears as if it has a liveness hole in the place of the splintered one. All thus obtained ranges are then register allocated with no change to the register allocator. The splinters (cold blocks) do not conflict with the hot path ranges, by construction. The hot path ones have less pressure to split, because we remove a source of conflicts. After allocation, we merge the splinters back to their original ranges and continue the pipeline. We leverage the previous changes made for deferred blocks (determining where to spill, for example). Review URL: https://codereview.chromium.org/1305393003 Cr-Commit-Position: refs/heads/master@{#30357}
-
- 31 Oct, 2014 1 commit
-
-
dcarney@chromium.org authored
additionally rename data-flow.* to bit-vector.* as at some point these file became very inaccurately named BUG= R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/683243005 Cr-Commit-Position: refs/heads/master@{#25030} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Aug, 2014 1 commit
-
-
bmeurer@chromium.org authored
R=machenbach@chromium.org Review URL: https://codereview.chromium.org/502803002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Aug, 2014 1 commit
-
-
bmeurer@chromium.org authored
The bit counting functions provided by CompilerIntrinsics were undefined for zero, which was easily overlooked and unsafe in general. Also their implementation was kinda hacky and mostly untested. Fixed the implementation and moved the functions to base/bits.h. TEST=base-unittests,cctest,compiler-unittests,mjsunit R=hpayer@chromium.org Review URL: https://codereview.chromium.org/494633002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 03 Jun, 2014 1 commit
-
-
jochen@chromium.org authored
- this avoids using relative include paths which are forbidden by the style guide - makes the code more readable since it's clear which header is meant - allows for starting to use checkdeps BUG=none R=jkummerow@chromium.org, danno@chromium.org LOG=n Review URL: https://codereview.chromium.org/304153016 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Apr, 2014 1 commit
-
-
bmeurer@chromium.org authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/259183002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Apr, 2011 1 commit
-
-
fschneider@chromium.org authored
Not used in Crankshaft anymore. Review URL: http://codereview.chromium.org/6849023 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Apr, 2011 1 commit
-
-
fschneider@chromium.org authored
Instead of adding an extra AST node we can just use an auxiliary bailout id for named and keyed property count operations. Review URL: http://codereview.chromium.org/6810015 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7524 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Dec, 2010 3 commits
-
-
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
-
- 04 Oct, 2010 1 commit
-
-
kmillikin@chromium.org authored
Change more functions used by the Compiler class to have a uniform interface: they get passed as argument an input/output pointer to a CompilationInfo that they mutate if they succeed, and they return a flag telling whether they succeeded. Also, remove some unnecessary timers. Review URL: http://codereview.chromium.org/3561012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Sep, 2010 1 commit
-
-
erik.corry@gmail.com authored
This one has been approved by the 64 bit compiler in MSVC 2005 so I hope it also passes the 2008 version. The --max-new-space-size option is now in kBytes. The --max-old-space-size option is now in MBytes. Some issues remain with 64 bit heaps and the counters. See http://code.google.com/p/v8/issues/detail?id=887 Review URL: http://codereview.chromium.org/3573005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5559 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Sep, 2010 2 commits
-
-
erik.corry@gmail.com authored
be done from Windows where the compiler is stricter about truncating changes. Review URL: http://codereview.chromium.org/3454035 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
erik.corry@gmail.com authored
Fix test after 64 bit heap size change. Review URL: http://codereview.chromium.org/3432032 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Sep, 2010 1 commit
-
-
kmillikin@chromium.org authored
For some reason, the scope's arguments and arguments shadow were variable proxies, which resulted in all references to the arguments shadow being shared in the AST. This makes it hard to put per-node state on the AST nodes. I took the opportunity to remove Variable::AsVariable which has confused people in the past, and to rename Variable::slot to the more accurate Variable::AsSlot. Review URL: http://codereview.chromium.org/3432022 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5517 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Aug, 2010 2 commits
-
-
kasperl@chromium.org authored
increment part of a count operation. Review URL: http://codereview.chromium.org/3150032 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kasperl@chromium.org authored
flow graph code completely. Add new AST node for null compares and use it to make the full codegens better at generating code for null comparisons. Review URL: http://codereview.chromium.org/3146037 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Jun, 2010 1 commit
-
-
erik.corry@gmail.com authored
Improve code generation for known smis and suspected Smis. Review URL: http://codereview.chromium.org/2452002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4783 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
-
-
kmillikin@chromium.org authored
The FlowGraph, FlowGraphBuilder, and flow graph node classes are moved to src/flow-graph.cc. Review URL: http://codereview.chromium.org/1253009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4287 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 2 commits
-
-
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 2 commits
-
-
kmillikin@chromium.org authored
Include the initial definitions for parameters on input to the function, and the initial definition of stack-allocated locals as undefined. Review URL: http://codereview.chromium.org/1155006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4206 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
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
-
- 19 Mar, 2010 1 commit
-
-
fschneider@chromium.org authored
Also remove unused attributes related to it from the ast. Review URL: http://codereview.chromium.org/1117003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4194 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Mar, 2010 2 commits
-
-
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
-
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 5 commits
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/885004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
We only track definitions of stack-allocated variables. Trying to look up other variables in the environment is a bug. Review URL: http://codereview.chromium.org/843006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4119 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Property stores were not visited correctly by the visitor. I fixed this issue by visiting property stores by visiting receiver and key directly (and not calling visit on the lhs property ast node) Review URL: http://codereview.chromium.org/903003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
Use the classical worklist algorithm to compute reaching definitions. All nodes are initially put on the worklist. Until the worklist is empty, nodes are removed, their RD_in is recomputed, and if it changes their successors are added to the worklist. Review URL: http://codereview.chromium.org/853004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Const variables are not considered as trivial sub-expressions since we have the check for the hole value as a side-effect. Review URL: http://codereview.chromium.org/849003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Mar, 2010 3 commits
-
-
kmillikin@chromium.org authored
Reaching definitions in (RD_in) is initially empty for all nodes. Gen and kill sets are computed. AST node numbers are used for nodes to refer to their definition number. Also: two small changes to flow graph printing. Children of branch nodes are visited in right-to-left order when performing depth first search. Instructions are numbered locally within blocks so as to not destroy AST node number before printing (it's useful to print the definition). Review URL: http://codereview.chromium.org/876001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Add a missing null check that can hit when the for-loop index is not a variable. Review URL: http://codereview.chromium.org/840002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4101 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
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
-