- 27 Sep, 2011 1 commit
-
-
kmillikin@chromium.org authored
Introduce a version of the CallFunctionStub that records monomorphic call targets in a one-element cache in the instruction stream. Use the cache for inlining attempts in the optimizing backend. R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7966038 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9449 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Sep, 2011 1 commit
-
-
svenpanne@chromium.org authored
Although this patch is not small, most parts of it are rather mechanical: * First of all, the concept of a 'nil-like' value is introduced, which can be null or undefined. They are treated symmetrically regarding comparisons, so it makes sense to handle them in a uniform manner. It is a mystery why JavaScript defines two of those beasts, when even *one* is a design wart... * Extended and renamed a few things which now handle undefined in addition to null. * Made the parts of the full code generator and the hydrogen generation which deal with comparisons a bit more similar regarding their handling of special cases. * Refactored the syntactical detection of special cases for comparisons, hopefully making them a bit more readable and less copy-n-paste-oriented. Things like this should really be a one-liner in any sane programming language... :-P * Cut down the length of the argument lists of a few functions to something less insane, making them more easily understandable locally. This involves minor code duplication, but this was a good tradeoff and can be remedied later if necessary. * Replaced some boolean arguments with more readable enums. * Fixed a TODO: Values which are definitely a Smi or unboxed can never be equal to null or undefined. Review URL: http://codereview.chromium.org/7918012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Sep, 2011 2 commits
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/7887038 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9294 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
The Great Master Plan is to move the recognition of special cases for comparisons further down the compilation pipeline where more information is available. This is a first step into this direction: The special handling of equality comparisons involving null is pushed from the parser to the code generators, removing the need for a special AST node. (There are rumors from usually well-informed sources that this node type is actually a relic of ancient crankshaft days...) The next steps will be the unification of null/undefined handling and pushing the special case handling in crankshaft even further down the pipeline, enabling the recognition of cases like "var foo=null; if (foo === bar) ...", but these will be in separate CLs. Review URL: http://codereview.chromium.org/7887037 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Sep, 2011 1 commit
-
-
mikhail.naganov@gmail.com authored
As pointed out in: http://codereview.chromium.org/7754007/#msg5 "SmartPointer should have been named SmartArrayPointer as it expects an input allocated using new[] and deallocates it using delete[]. Using it as a simple scoped pointer for a single object is incorrect." R=mnaganov@chromium.org Review URL: http://codereview.chromium.org/7860011 Patch from Thiago Farina <tfarina@chromium.org>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9215 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Sep, 2011 1 commit
-
-
kmillikin@chromium.org authored
All the constructs that used it are now properly bracketed in the AST and we handle abrupt exits without try/finally. We can treat normal context exit as occurring implicitly at the end of a body. Review URL: http://codereview.chromium.org/7837025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Sep, 2011 1 commit
-
-
kmillikin@chromium.org authored
R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7824038 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Sep, 2011 1 commit
-
-
fschneider@chromium.org authored
TEST=compiles Review URL: http://codereview.chromium.org/7792097 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Aug, 2011 1 commit
-
-
vitalyr@chromium.org authored
Some AST nodes (Property, Call, etc.) store either a list of receiver types or a monomorphic receiver type. This patch merges the two fields using a small pointer list. GetMonomorphicReceiverType() is now a purely convenience function returning the first and only recorded type. This saves about 500K (of about 39M) on average when compiling V8 benchmark as measured by a simple patch adding a zone allocation counter (https://gist.github.com/1149397). R=kmillikin@chromium.org Review URL: http://codereview.chromium.org/7655017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8993 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Aug, 2011 1 commit
-
-
kmillikin@chromium.org authored
Remove the try/finally used for with and catch. Instead of using try/finally to handle break and continue from with or catch, statically track nesting dept and clean up when compiling break or continue. And instead of using try/finally to handle throw to handler in a frame whose pc is inside a with or catch, store the context that the handler should run in in the handler itself. BUG= TEST= Review URL: http://codereview.chromium.org/7618007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8922 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Jul, 2011 1 commit
-
-
vitalyr@chromium.org authored
R=ager@chromium.org Review URL: http://codereview.chromium.org/7399023 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Jul, 2011 1 commit
-
-
vitalyr@chromium.org authored
R=ager@chromium.org Review URL: http://codereview.chromium.org/7383013 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8664 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Jun, 2011 1 commit
-
-
keuchel@chromium.org authored
Detect the pattern in both, the full compiler and crankshaft and generate direct pointer comparisons. Along the way I cleaned up 'typeof <expression> == <string literal>' comparisons as well by lifting platform independent code and checking the symmetric case. BUG=v8:1440 TEST=cctest/test-api.cc Review URL: http://codereview.chromium.org/7216008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Jun, 2011 1 commit
-
-
jkummerow@chromium.org authored
Review URL: http://codereview.chromium.org/7170012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8325 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Jun, 2011 1 commit
-
-
erik.corry@gmail.com authored
report, but was not general enough to catch all cases. This is a new approach. Includes regression test! Review URL: http://codereview.chromium.org/7193007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8318 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Jun, 2011 1 commit
-
-
karlklose@chromium.org authored
This reverts commit ceb31498b9d69edca3260820fb4047045891ce6d. TBR=kmillikin@chromium.org Review URL: http://codereview.chromium.org/7172030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Jun, 2011 2 commits
-
-
erik.corry@gmail.com authored
http://code.google.com/p/v8/issues/detail?id=1472 Review URL: http://codereview.chromium.org/7170014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8302 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
karlklose@chromium.org authored
Review URL: http://codereview.chromium.org/7167006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Jun, 2011 1 commit
-
-
fschneider@chromium.org authored
This change fixes the deoptimization when a keyed load is used with a symbol key. Before we would wrongly generate a fast elements load. Now we generate a generic keyed load instead. BUG=1471 Review URL: http://codereview.chromium.org/7150010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8281 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Jun, 2011 2 commits
-
-
danno@chromium.org authored
Dispatch on ElementsKind rather than ExternalArrayType when generating ICs and Crankshaft code for many element operations. This is preparation to be able to share more code in the various element accessor implementations. Merge logic to maintain external array and fast element stub caches. BUG=none TEST=none Review URL: http://codereview.chromium.org/7112010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
Introduce separate maps for function and with contexts. Use the function context map for testing whether a context is a function context (global contexts are no longer function contexts). Split the paths for allocating with and catch contexts. Rename some functions. Generally refactor code to make it simpler. R=ager@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7003058 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8231 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Jun, 2011 1 commit
-
-
kmillikin@chromium.org authored
The AST for TryCatch gives us enough structure that we do not need to expand it to explicitly include a with. Try/catch is still handled the same as before at runtime. R=ager@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7134014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 01 Jun, 2011 1 commit
-
-
kmillikin@chromium.org authored
Processing the declarations in an inlining candidate must be performed after constructing the Hydrogen environment of the candidate function. R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7027028 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8144 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 May, 2011 1 commit
-
-
kmillikin@chromium.org authored
Our implementations of arguments without materializing the arguments object (based on inspecting the stack frame) does not work for inlined functions. Guard all attempts by disallowing them if possible or else bailing out of the optimizing compiler. R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/6976022 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8072 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 May, 2011 1 commit
-
-
ager@chromium.org authored
Only IA32 version for now. I'll start porting. Strict mode functions are to get 'undefined' as the receiver when called with an implicit receiver. Modes are bad! It forces us to have checks on all function calls. This change attempts to limit the cost by passing information about whether or not a call is with an implicit or explicit receiver in ecx as part of the calling convention. The cost is setting ecx on all calls and checking ecx on entry to strict mode functions. Implicit/explicit receiver state has to be maintained by ICs. Various stubs have to not clobber ecx or save and restore it. CallFunction stub needs to check if the receiver is implicit when it doesn't know from the context. Review URL: http://codereview.chromium.org/7039036 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Apr, 2011 1 commit
-
-
whesse@chromium.org authored
BUG= TEST= Review URL: http://codereview.chromium.org/6880312 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Apr, 2011 1 commit
-
-
whesse@chromium.org authored
BUG= TEST= Review URL: http://codereview.chromium.org/6902066 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7694 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Apr, 2011 1 commit
-
-
karlklose@chromium.org authored
BUG=1337 TEST=regress-1337 Review URL: http://codereview.chromium.org/6881079 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 13 Apr, 2011 1 commit
-
-
fschneider@chromium.org authored
After Kevin's change to the graph builder to allow aborting graph construction inside arbitrary expressions this just works. BUG=v8:1143 Review URL: http://codereview.chromium.org/6839017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7605 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Apr, 2011 2 commits
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/6813107 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7586 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Before we had a white-list of things that we allow inside inlined functions. This way we can enable new constructs one-by-one. Review URL: http://codereview.chromium.org/6825042 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Apr, 2011 2 commits
-
-
ager@chromium.org authored
- virtual-frame* - register-allocator* - jump-target* - most of codegen* - AstOptimizer and fields on AST There is a lot of additional cleanup that we should do but this gets rid of a lot. R=kmillikin@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/6811012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
danno@chromium.org authored
Fix opmitized external array access for compound assignments and count operations, also implement missing ARM typed array Hydrogen loads and stores. BUG=none TEST=none Review URL: http://codereview.chromium.org/6805005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7536 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 01 Apr, 2011 1 commit
-
-
sgjesse@chromium.org authored
In the cases where a global property cell cannot be used in the optimized code use standard load ic to get the property instead of bailing out. This is re-committing r7212 and r7215 which where reverted in r7239 with the addition of recoring the source position in the hydrogen code for the LoadGlobalCell instruction. To record that position an optional position field has been added to the variable proxy AST node. Review URL: http://codereview.chromium.org/6758007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Mar, 2011 1 commit
-
-
ager@chromium.org authored
R=vitalyr@chromium.org Review URL: http://codereview.chromium.org/6717018 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7327 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Mar, 2011 1 commit
-
-
vitalyr@chromium.org authored
Review URL: http://codereview.chromium.org/6688066 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7282 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Mar, 2011 3 commits
-
-
vitalyr@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7271 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
vitalyr@chromium.org authored
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7269 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
vitalyr@chromium.org authored
Review URL: http://codereview.chromium.org/6685088 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Mar, 2011 1 commit
-
-
ricow@chromium.org authored
This caueses line positions to be off by one in certain cases, causing webkit http/tests/inspector/console-xhr-logging to fail. Review URL: http://codereview.chromium.org/6667077 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7239 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-