- 04 Oct, 2013 2 commits
-
-
bmeurer@chromium.org authored
This adds a new Byte representation and support for zero-extended loads in HLoadNamedField and truncated stores in HStoreNamedField. R=mvstanton@chromium.org Committed: https://code.google.com/p/v8/source/detail?r=17079 Review URL: https://codereview.chromium.org/25696004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17100 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
bmeurer@chromium.org authored
This reverts commit r17079 and r17085. Will reland after fix. TBR=jkummerow@chromium.org Review URL: https://codereview.chromium.org/25679008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Oct, 2013 1 commit
-
-
bmeurer@chromium.org authored
This adds a new Byte representation and support for zero-extended loads in HLoadNamedField and truncated stores in HStoreNamedField. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/25696004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17079 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Aug, 2013 1 commit
-
-
jkummerow@chromium.org authored
Same idea for HDiv when the right oeprand is 1 BUG= R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/23176002 Patch from Weiliang Lin <weiliang.lin2@gmail.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16364 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Jul, 2013 1 commit
-
-
verwaest@chromium.org authored
R=yangguo@chromium.org Review URL: https://chromiumcodereview.appspot.com/19485008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15858 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Jul, 2013 1 commit
-
-
olivf@chromium.org authored
BUG= R=danno@chromium.org Review URL: https://codereview.chromium.org/18712002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 03 Jul, 2013 2 commits
-
-
olivf@chromium.org authored
The problem is the HCallConstantFunction which is not context sensitive, so we leak the builtin. We first need a Hydrogen version of __ IvokeBuiltin. BUG= R=danno@chromium.org, machenbach@chromium.org Review URL: https://codereview.chromium.org/18650003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
olivf@chromium.org authored
BUG= R=danno@chromium.org Review URL: https://codereview.chromium.org/17229005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Jun, 2013 1 commit
-
-
verwaest@chromium.org authored
R=jkummerow@chromium.org Review URL: https://chromiumcodereview.appspot.com/16975006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15158 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Jun, 2013 1 commit
-
-
verwaest@chromium.org authored
R=danno@chromium.org Review URL: https://chromiumcodereview.appspot.com/14721009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14982 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 31 May, 2013 1 commit
-
-
verwaest@chromium.org authored
BUG= R=jkummerow@chromium.org Review URL: https://chromiumcodereview.appspot.com/15941016 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 May, 2013 1 commit
-
-
verwaest@chromium.org authored
BUG= R=jkummerow@chromium.org Review URL: https://chromiumcodereview.appspot.com/15861009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14814 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 May, 2013 2 commits
-
-
verwaest@chromium.org authored
BUG= R=verwaest@chromium.org Review URL: https://chromiumcodereview.appspot.com/15303004 Patch from Daniel Clifford <danno@chromium.org>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14765 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
verwaest@chromium.org authored
This patch both speeds up the freeze operation itself, but also allows properties to remain in fast mode. Objects with non-empty elements backing stores still end up with slow elements. Relanding r14758 and r14759 with fix for Test262: only mark properties and elements READ_ONLY if they are not JS setter/getters. Tightened up tests to assert frozen-ness, and added targeted tests for the new code (covering accessors). BUG=v8:1858, 115960 R=verwaest@chromium.org Review URL: https://chromiumcodereview.appspot.com/15691007 Patch from Adam Klein <adamk@chromium.org>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14762 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 May, 2013 2 commits
-
-
adamk@chromium.org authored
and "Fix Object.freeze on dictionary-backed arrays to properly freeze elements" This reverts r14758 and r14759 due to introducing failures in Test262 TBR=verwaest@chromium.org Review URL: https://codereview.chromium.org/15681004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14760 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
adamk@chromium.org authored
This patch both speeds up the freeze operation itself, but also allows properties to remain in fast mode. Objects with non-empty elements backing stores still end up with slow elements. BUG=v8:1858, 115960 R=verwaest@chromium.org Review URL: https://codereview.chromium.org/14888005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 May, 2013 1 commit
-
-
verwaest@chromium.org authored
R=danno@chromium.org Review URL: https://chromiumcodereview.appspot.com/14996004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 May, 2013 2 commits
-
-
verwaest@chromium.org authored
Revert polymorphic stores suspect of crashes. Revert "Turn on tracking of fields." Revert "Turn polymorphic stores monomorphic if store sequence matches." Revert "Fix polymorphic store." R=danno@chromium.org Review URL: https://chromiumcodereview.appspot.com/14812010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
verwaest@chromium.org authored
Review URL: https://chromiumcodereview.appspot.com/14796012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 May, 2013 2 commits
-
-
verwaest@chromium.org authored
The descriptors are nowadays ordered in order of addition, so that info was duplicated. Review URL: https://chromiumcodereview.appspot.com/14622005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14571 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
verwaest@chromium.org authored
Review URL: https://chromiumcodereview.appspot.com/14966005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 May, 2013 1 commit
-
-
verwaest@chromium.org authored
Review URL: https://chromiumcodereview.appspot.com/14629005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14523 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Apr, 2013 1 commit
-
-
verwaest@chromium.org authored
Review URL: https://chromiumcodereview.appspot.com/14146005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Mar, 2013 1 commit
-
-
rossberg@chromium.org authored
R=verwaest@chromium.org BUG=v8:2158 Review URL: https://codereview.chromium.org/12455002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13838 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Nov, 2012 1 commit
-
-
rossberg@chromium.org authored
Modules now have their own local scope, represented by their own context. Module instance objects have an accessor for every export that forwards access to the respective slot from the module's context. (Exports that are modules themselves, however, are simple data properties.) All modules have a _hosting_ scope/context, which (currently) is the (innermost) enclosing global scope. To deal with recursion, nested modules are hosted by the same scope as global ones. For every (global or nested) module literal, the hosting context has an internal slot that points directly to the respective module context. This enables quick access to (statically resolved) module members by 2-dimensional access through the hosting context. For example, module A { let x; module B { let y; } } module C { let z; } allocates contexts as follows: [header| .A | .B | .C | A | C ] (global) | | | | | +-- [header| z ] (module) | | | +------- [header| y ] (module) | +------------ [header| x | B ] (module) Here, .A, .B, .C are the internal slots pointing to the hosted module contexts, whereas A, B, C hold the actual instance objects (note that every module context also points to the respective instance object through its extension slot in the header). To deal with arbitrary recursion and aliases between modules, they are created and initialized in several stages. Each stage applies to all modules in the hosting global scope, including nested ones. 1. Allocate: for each module _literal_, allocate the module contexts and respective instance object and wire them up. This happens in the PushModuleContext runtime function, as generated by AllocateModules (invoked by VisitDeclarations in the hosting scope). 2. Bind: for each module _declaration_ (i.e. literals as well as aliases), assign the respective instance object to respective local variables. This happens in VisitModuleDeclaration, and uses the instance objects created in the previous stage. For each module _literal_, this phase also constructs a module descriptor for the next stage. This happens in VisitModuleLiteral. 3. Populate: invoke the DeclareModules runtime function to populate each _instance_ object with accessors for it exports. This is generated by DeclareModules (invoked by VisitDeclarations in the hosting scope again), and uses the descriptors generated in the previous stage. 4. Initialize: execute the module bodies (and other code) in sequence. This happens by the separate statements generated for module bodies. To reenter the module scopes properly, the parser inserted ModuleStatements. R=mstarzinger@chromium.org,svenpanne@chromium.org BUG= Review URL: https://codereview.chromium.org/11093074 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Oct, 2012 1 commit
-
-
svenpanne@chromium.org authored
We iteratively remove all dead Hydrogen instruction until we reach a fixed point. We consider an instruction dead if it is unused, has no observable side effects and is deletable. The last part of the condition is currently not very nice: We basically have to whitelist "safe" instructions, because we are missing more detailed dependencies and/or more detailed tracking of side effects. We disable dead code elimination for now in our test runners, because we have tons of poorly written tests which wouldn't test anymore what they are supposed to test with this phase enabled. To get test coverage for dead code elimination itself, we should enable it on a few build bots. This is not really a perfect state, but the best we can do for now. This patch includes a few const-correctness fixes, most of them were necessary for this CL. Review URL: https://codereview.chromium.org/11088027 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Aug, 2012 1 commit
-
-
verwaest@chromium.org authored
The order by name is maintained as secondary order by using unused bits in the property details. This is preliminary work towards sharing descriptors arrays. The change allows us - to get rid of the LastAdded bits in the map, binding it to the number of valid descriptors for the given map - to avoid resorting by enumeration index to create the cache - (maybe in the future, depending on performance) to get rid of the enumeration cache altogether. Although generally the number_of_descriptors equals the NumberOfOwnDescriptors in the current version, this is preliminary work towards sharing descriptors, where maps may have more descriptors than are valid for the map. Review URL: https://chromiumcodereview.appspot.com/10879013 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Jul, 2012 1 commit
-
-
verwaest@chromium.org authored
In this design maps contain descriptor arrays, which in turn can contain transition arrays. If transitions are needed when no descriptor array is present, a descriptor array without real descriptors is inserted just so it can point at the transition array. The transition array does not contain details about the field it transitions to. In order to weed out transitions to FIELDs from CONSTANT_FUNCTION (what used to be MAP_TRANSITION vs CONSTANT_TRANSITION), the transition needs to be followed and the details need to be looked up in the target map. CALLBACKS transitions are still easy to recognize since the transition targets are stored as an AccessorPair containing the maps, rather than the maps directly. Currently AccessorPairs containing a transition and an accessor are shared between the descriptor array and the transition array. This simplifies lookup since we only have to look in one of both arrays. This will change in subsequent revisions, when descriptor arrays will become shared between multiple maps, since transitions cannot be shared. Review URL: https://chromiumcodereview.appspot.com/10697015 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11994 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Jun, 2012 2 commits
-
-
verwaest@chromium.org authored
Instead of overwriting non-live transitions with NULL_DESCRIPTORs, we remove them from the array by compacting the array (shifting live values to the left) and in-place trimming the array. If the final descriptor array contains no live values (only contained transitions which are now all cleared), we move bit_field3 back from the descriptor array to the map. The descriptor array itself will be collected in the next GC. BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10575032 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11922 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
verwaest@chromium.org authored
Review URL: https://chromiumcodereview.appspot.com/10656018 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11920 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Jun, 2012 1 commit
-
-
verwaest@chromium.org authored
This is a first step towards separating all transitions from the property descriptions. If we link the property descriptions from the transition object, this will in allow the descriptor array (property descriptions) to become immutable. Review URL: https://chromiumcodereview.appspot.com/10444055 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11750 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Mar, 2012 1 commit
-
-
svenpanne@chromium.org authored
Main change from the original CL: Call::ComputeTarget does not use IsProperty anymore, because this would potentially need a holder, which we don't have here. Using Map::LookupInDescriptors with a NULL holder is a bit fishy in general, because one has to be *extremely* careful when using its LookupResult. The original CL made Chrome's NetInternalsTest.netInternalsTourTabs browser test fail, but it's a mystery how this could happen: We should never reach Call::ComputeTarget via Call::RecordTypeFeedback with a CALLBACKS property, because we never consider calls to them monomorphic, which is in turn because of the stub cache leaving them in the pre-monomorphic state. Therefore, I don't have a clue how to write a regression test for this... As an additional tiny bonus, the --trace-opt output for deoptimizations has been improved. Review URL: https://chromiumcodereview.appspot.com/9584003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10906 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Feb, 2012 1 commit
-
-
jkummerow@chromium.org authored
This reverts r10847. Review URL: https://chromiumcodereview.appspot.com/9536010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10868 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Feb, 2012 1 commit
-
-
svenpanne@chromium.org authored
With transitions in AccessorPairs, it is not enough to look at the PropertyType alone to decide whether we look at a property or not: For objects with JavaScript accessors, we have to look into the AccessorPair itself and see if one of its 2 parts is actually a JavaScript accessor. Therefore, a predicate with a PropertyType argument alone doesn't make sense anymore, we might need the associated value, too. Things are complicated by the fact that the holder in a LookupResult can be NULL, so we must be careful to retrieve its value only when it is really needed. To achieve the needed call-by-name semantics, a new Entry is introduced, which is basically a closure over a DescriptorArray and an index into this array (C++0x to the rescue!). GCC is clever enough to inline this class, so we pay no runtime penalty for this abstraction. It's all a bit ugly, but this is caused by the current structure of Descriptor, DescriptorArray and LookupResult: Things would be much easier if DescriptorArray were, well, an array of Descriptors, and LookupResult were a 'Maybe Descriptor' (in Haskell-terms). Review URL: https://chromiumcodereview.appspot.com/9466047 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10847 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Feb, 2012 1 commit
-
-
svenpanne@chromium.org authored
This is just an intermediate step to remove IsRealProperty. Review URL: https://chromiumcodereview.appspot.com/9325060 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 03 Feb, 2012 1 commit
-
-
svenpanne@chromium.org authored
With the upcoming changes to CALLBACKS properties, a predicate on the transition type alone doesn't make sense anymore: For CALLBACKS one has to look into the property's value to decide, and there is even the possibility of having a an accessor function *and* a transition in the same property. I am not completely happy with some parts of this CL, because they contain redundant code, but given the various representations we currently have for property type/value pairs, I can see no easy way around that. Perhaps one can improve this a bit in a different CL, the current diversity really, really hurts productivity... As a bonus, this CL includes a few minor things: * CaseClause::RecordTypeFeedback has been cleaned up and it handles the NULL_DESCRIPTOR case correctly now. Under some (very unlikely) circumstances, we previously missed some opportunities for monomorphic calls. In general, it is rather unfortunate that NULL_DESCRIPTOR "shines through", it is just a hack for the inability to remove a descriptor entry during GC, something callers shouldn't have to be aware of. * DescriptorArray::CopyInsert has been cleaned up a bit, preparing it for later CALLBACKS-related changes. * LookupResult::Print is now more informative for CONSTANT_TRANSITION. Review URL: https://chromiumcodereview.appspot.com/9320066 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10600 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Nov, 2011 1 commit
-
-
svenpanne@chromium.org authored
Replaced FIRST_PHANTOM_PROPERTY_TYPE by a predicate. Removed the (hopefully) last default cases for switches on PropertyType. Benchmarks show that both changes are performace-neutral. Now every value of PropertyType should either be handled by an explicit case in a switch or by an equality operator. Therefore, the C++ compiler should finally be able to tell us which places to touch when changing PropertyType. Review URL: http://codereview.chromium.org/8506004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9930 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Nov, 2011 1 commit
-
-
svenpanne@chromium.org authored
This moves PropertyType and its related predicate out of v8globals.h, where it didn't belong. Review URL: http://codereview.chromium.org/8501006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9907 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-