- 22 Mar, 2012 1 commit
-
-
vegorov@chromium.org authored
R=fschneider@chromium.org TEST=test/mjsunit/compiler/inline-arguments.js Review URL: https://chromiumcodereview.appspot.com/9837002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Mar, 2012 1 commit
-
-
vegorov@chromium.org authored
Support arguments materialization after deoptimization in all frames (not only in topmost one). R=fschneider@chromium.org Review URL: https://chromiumcodereview.appspot.com/9643001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11008 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Mar, 2012 2 commits
-
-
ulan@chromium.org authored
Developed together with Andreas Rossberg based on: https://chromiumcodereview.appspot.com/9117034/ https://chromiumcodereview.appspot.com/9307083/ R=rossberg@chromium.org Review URL: https://chromiumcodereview.appspot.com/9572008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10983 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
rossberg@chromium.org authored
First step, cache slots not used yet. R=ulan@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9117034 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10981 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 01 Mar, 2012 1 commit
-
-
mstarzinger@chromium.org authored
Generates inlined code for object allocation specific to the initial map of the given constructor function. Also forces completion of inobject slack tracking while crankshafting to finalize instance size of these objects. R=vegorov@chromium.org TEST=mjsunit/compiler/alloc-object Review URL: https://chromiumcodereview.appspot.com/9370019 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10881 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Feb, 2012 2 commits
-
-
fschneider@chromium.org authored
This is a very mechanical change to reduce the number of calls to Isolate::Current that come with every plain new-allocation. BUG=v8:1802 Review URL: https://chromiumcodereview.appspot.com/9491004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
mstarzinger@chromium.org authored
R=vegorov@chromium.org,kmillikin@chromium.org Review URL: https://chromiumcodereview.appspot.com/9304001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10849 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Feb, 2012 1 commit
-
-
vegorov@chromium.org authored
Only JSObject enumerables with enum cache (fast case properties, no interceptors, no enumerable properties on the prototype) are supported. HLoadKeyedGeneric with keys produced by for-in enumeration are recognized and rewritten into direct property load by index. For this enum-cache was extended to store property indices in a separate array (see handles.cc). New hydrogen instructions: - HForInPrepareMap: checks for-in fast case preconditions and returns map that contains enum-cache; - HForInCacheArray: extracts enum-cache array from the map; - HCheckMapValue: map check with HValue map instead of immediate; - HLoadFieldByIndex: load fast property by it's index, positive indexes denote in-object properties, negative - out of object properties; Changed hydrogen instructions: - HLoadKeyedFastElement: added hole check suppression for loads from internal FixedArrays that are knows to have no holes inside. R=fschneider@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9425045 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10794 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Feb, 2012 1 commit
-
-
mstarzinger@chromium.org authored
This extends the current support for nested object literals we already have in Crankshaft, to also support nested array literals and mixed nested literals containing arrays and objects. All three types are generated by the unified HFastLiteral instruction. All previous upper bounds on nested literal graphs remain unchanged, keeping the size of generated code in check. The main intention is to boost performance of two-dimensional array literals containing constant elements (aka. matrices). R=danno@chromium.org TEST=mjsunit/compiler/literals-optimized Review URL: https://chromiumcodereview.appspot.com/9403018 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Feb, 2012 1 commit
-
-
fschneider@chromium.org authored
This change enables optimization of top-level and eval-code. For this to work, it adds support for declaring global variables in optimized code. At the same time it disables the eager generation of deoptimization support data in the full code generator (originally introduced in r10040). This speeds up initial compilation and saves memory for functions that won't be optimized. It requires recompiling the function with deoptimization support when we decide to optimize it. Review URL: https://chromiumcodereview.appspot.com/9187005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 31 Jan, 2012 1 commit
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/9301040 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10571 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jan, 2012 1 commit
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/9297059 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Jan, 2012 1 commit
-
-
ager@chromium.org authored
R=jkummerow@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/9167011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Dec, 2011 1 commit
-
-
kmillikin@chromium.org authored
Tell the register allocator the value is not overwritten. Never use temporary registers on ia32, avoid them on x64 and ARM. Restore the original copyright date on assembler.cc. R=fschneider@chromium.org BUG=v8:1870 TEST= Review URL: http://codereview.chromium.org/8965038 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10280 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Dec, 2011 1 commit
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/8111006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Nov, 2011 2 commits
-
-
keuchel@chromium.org authored
This CL introduces a third mode next to the non-strict (henceforth called 'classic mode') and 'strict mode' which is called 'extended mode' as in the current ES.next specification drafts. The extended mode is based on the 'strict mode' and adds new functionality to it. This means that most of the semantics of these two modes coincide. The 'extended mode' is entered instead of the 'strict mode' during parsing when using the 'strict mode' directive "use strict" and when the the harmony-scoping flag is active. This should be changed once it is fully specified how the 'extended mode' is entered. This change introduces a new 3 valued enum LanguageMode (see globals.h) corresponding to the modes which is mostly used by the frontend code. This includes the following components: * (Pre)Parser * Compiler * SharedFunctionInfo, Scope and ScopeInfo * runtime functions: StoreContextSlot, ResolvePossiblyDirectEval, InitializeVarGlobal, DeclareGlobals The old enum StrictModeFlag is still used in the backend when the distinction between the 'strict mode' and the 'extended mode' does not matter. This includes: * SetProperty runtime function, Delete builtin * StoreIC and KeyedStoreIC * StubCache Review URL: http://codereview.chromium.org/8417035 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10062 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
mstarzinger@chromium.org authored
This generates optimized code for deep-copying of nested object literal boilerplates which are statically known. Most of the boilerplates have already been generated at crankshaft time, so this optimization should kick in for virtually every object literal. Only nested object literal graphs up to a certain depth and containing up to a certain total number of properties are considered for this optimization. This will prevent explosion of code size due to large object literals (e.g. eval on JSON). Improves splay performance because object literals are created often. R=fschneider@chromium.org Review URL: http://codereview.chromium.org/8640001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Nov, 2011 1 commit
-
-
fschneider@chromium.org authored
Landing: [hydrogen] optimize switch with string clauses. Patch by Fedor Indutny <fedor.indutny@gmail.com>. Original code review: http://codereview.chromium.org/8373029/ Review URL: http://codereview.chromium.org/8589019 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10019 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Nov, 2011 3 commits
-
-
rossberg@chromium.org authored
Change calling convention for CallFunction stub. Some fixes regarding strict mode call traps. R=kmillikin@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8318014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9916 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
There was a test failure on x64 mozilla tests. TBR=ricow@chromium.org Review URL: http://codereview.chromium.org/8495011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Hydrogen should optimize not only SMI clauses, but clauses with string literals too. Patch from fedor.indutny <fedor.indutny@gmail.com>. R=vegorov@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8373029 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9901 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 31 Oct, 2011 1 commit
-
-
fschneider@chromium.org authored
Since we already have only one LIR class, it does not make much sense to separate them at the HIR level. Review URL: http://codereview.chromium.org/8426005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9846 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Oct, 2011 1 commit
-
-
keuchel@chromium.org authored
Review URL: http://codereview.chromium.org/8344082 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Oct, 2011 2 commits
-
-
jkummerow@chromium.org authored
TEST=mjsunit/elements-kind Review URL: http://codereview.chromium.org/8305001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9702 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
fschneider@chromium.org authored
Named function expression have an implicit local variable that refers to the current function (ThisFunction). Before we only could inline anonymous function expressions like: A.prototype.foo = function() {} as opposed to A.prototype.foo = function foo() {} This change enables inlining function of expressions like this. Review URL: http://codereview.chromium.org/8346032 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9699 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Oct, 2011 1 commit
-
-
fschneider@chromium.org authored
Omit smi check inside write barriers if the value is known to be a heap object. Refine inferred types of some instructions. Review URL: http://codereview.chromium.org/8256016 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9618 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Sep, 2011 1 commit
-
-
rossberg@chromium.org authored
of the range of proper JS objects. Unfortunately, callable types no longer form a range now. However, there are only two anyway. We put them at either end of the range of JS object types so that certain compares can be combined. R=erik.corry@gmail.com,kmillikin@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7737036 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Sep, 2011 1 commit
-
-
kmillikin@chromium.org authored
We reset the count of outgoing arguments, used for the index in the frame's outgoing arguments, for each level of inlining. This could result in the arguments overlapping, rather than stacking on top of each other. R=whesse@chromium.org,fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7932022 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9331 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Sep, 2011 2 commits
-
-
vegorov@chromium.org authored
Review URL: http://codereview.chromium.org/7945009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
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
-
- 09 Sep, 2011 1 commit
-
-
danno@chromium.org authored
R=svenpanne@chromium.org BUG=none TEST=all Review URL: http://codereview.chromium.org/7849017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9208 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Aug, 2011 1 commit
-
-
jkummerow@chromium.org authored
Review URL: http://codereview.chromium.org/7608020 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Aug, 2011 1 commit
-
-
danno@chromium.org authored
Also unify Crankshaft code to load array length. BUG=v8:1493 TEST=external-arrays.js Review URL: http://codereview.chromium.org/7600025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8901 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Jul, 2011 1 commit
-
-
danno@chromium.org authored
BUG=none TEST=unboxed-double-arrays.js Review URL: http://codereview.chromium.org/7350021 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8682 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jun, 2011 1 commit
-
-
fschneider@chromium.org authored
Instead of generating two instructions and combining them at lithium translation using the EmitAtUses predicate, we generate the correct branch instruction right from the start. Review URL: http://codereview.chromium.org/7237024 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Jun, 2011 1 commit
-
-
sgjesse@chromium.org authored
The hydrogen stack check instruction is now added to each loop and the stack check handling on the back edge has been removed. This change causes regression on small tight loops as the stack check is now at the top of the loop instead of at the bottom, and that requires one additional unconditional jump per loop iteration. However the reason for this change is to avoid worse regressions for upcoming changes to correctly support debugger break in optimized code. R=fschneider@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7216009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Jun, 2011 1 commit
-
-
fschneider@chromium.org authored
We had two instructions HCompareJsObjectEq and HCompareSymbolEq that behave exactly the same. I removed one and renamed the remaining instruction into HCompareObjectEq. Review URL: http://codereview.chromium.org/7206040 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8349 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
-
- 10 Jun, 2011 1 commit
-
-
fschneider@chromium.org authored
This change makes the number of successors of a control instruction configurable with a template parameter and changes the existing instructions to use it. To iterate over all successors I added an iterator instead of always calling First- and SecondSuccessor. Review URL: http://codereview.chromium.org/7114004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8262 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Jun, 2011 1 commit
-
-
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
-