- 16 Apr, 2012 1 commit
-
-
rossberg@chromium.org authored
Constructs the (generally cyclic) graph of module instance objects and populates their exports. Any exports other than nested modules are currently set to 'undefined' (but already present as properties). Details: - Added new type JSModule for instance objects: a JSObject carrying a context. - Statically allocate instance objects for all module literals (in parser 8-}). - Extend interfaces to record and unify concrete instance objects, and to support iteration over members. - Introduce new runtime function for pushing module contexts. - Generate code for allocating, initializing, and setting module contexts, and for populating instance objects from module literals. Currently, all non-module exports are still initialized with 'undefined'. - Module aliases are resolved statically, so no special code is required. - Make sure that code containing module constructs is never optimized (macrofy AST node construction flag setting while we're at it). - Add test case checking linkage. Baseline: http://codereview.chromium.org/9722043/ R=svenpanne@chromium.org,mstarzinger@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9844002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11336 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Mar, 2012 1 commit
-
-
mstarzinger@chromium.org authored
If all property lookups for a polymorphic load actually result in the same field index under all maps, we can actually emit a monomorphic load that is guarded by a map check that verifies that the actual map is in the set of handled maps. This also allows GVN to get rid of redundant such map checks. R=danno@chromium.org Review URL: https://chromiumcodereview.appspot.com/9616014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11132 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Mar, 2012 1 commit
-
-
fschneider@chromium.org authored
We already do this for binary-ops, unary-ops and comparisons. Typefeedback for named loads can now also be in "uninitialized" state which means that the corresponding load IC was never executed. Review URL: https://chromiumcodereview.appspot.com/9722041 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Mar, 2012 1 commit
-
-
svenpanne@chromium.org authored
Ensure that generated code for object literals will call Runtime_DefineOrRedefineAccessorProperty only once per accessor property. To do this, we collect all accessor properties in a first pass and emit code for defining those properties afterwards in a second pass. As a finger exercise, the table used for collecting accessors has a (subset of an) STL-like iterator interface, including STL-like names and operators. Although C++ is quite verbose here (as usual, but partly this is caused by our current slightly clumsy classes/templates), things work out quite nicely and it cleans up some confusion, e.g. a table entry is not an iterator etc. Everything compiles into very efficient code, e.g. the loop condition 'it != accessor_table.end()' compiles into a single 'testl' instruction on ia32. +1 for using standard APIs! Review URL: https://chromiumcodereview.appspot.com/9691040 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 13 Mar, 2012 1 commit
-
-
mstarzinger@chromium.org authored
This uses the type feedback already present for computed value stores into object literals to generate optimized stores in Crankshaft, thus avoiding unnecessary generic stores with side effects. R=svenpanne@chromium.org Review URL: https://chromiumcodereview.appspot.com/9692036 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11023 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Mar, 2012 1 commit
-
-
svenpanne@chromium.org authored
This is a preparatory step for using the HashMap clas with Literal keys in the full code generator. It removes some duplicated code already and removes the need for 2 HashMaps at each use, which was overly complicated. Removed one dead function on the way. Review URL: https://chromiumcodereview.appspot.com/9639011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10973 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Mar, 2012 1 commit
-
-
rossberg@chromium.org authored
All module expressions, and all variables that might refer to modules, are assigned interfaces (module types) that are resolved using unification. This is necessary to deal with the highly recursive nature of ES6 modules, which does not allow any kind of bottom-up strategy for resolving module names and paths. Error messages are rudimental right now. Probably need to track more information to make them nicer. R=svenpanne@chromium.org BUG=v8:1569 TEST= Review URL: https://chromiumcodereview.appspot.com/9615009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10966 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Feb, 2012 1 commit
-
-
rossberg@chromium.org authored
R=jkummerow@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9496003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Feb, 2012 3 commits
-
-
svenpanne@chromium.org authored
This removes roughly 5k invocations of Isolate::Current from the string-tagcloud benchmark. Review URL: https://chromiumcodereview.appspot.com/9490009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
rossberg@chromium.org authored
Define modules as module declarations. Separate function declarations from var declarations. R=jkummerow@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9460064 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10854 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
-
- 20 Feb, 2012 1 commit
-
-
rossberg@chromium.org authored
Module definitions are not compiled or otherwise executed yet. Toplevel module identifiers are bound but never initialized. R=kmillikin@chromium.org,mstarzinger@google.com BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9401008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10759 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
-
- 10 Feb, 2012 1 commit
-
-
kmillikin@chromium.org authored
Somehow the definition of DECLARE_NODE_TYPE was duplicated and never undef'd. R=jkummerow@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9372056 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Feb, 2012 4 commits
-
-
rossberg@chromium.org authored
R=jkummerow@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9368026 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
rossberg@chromium.org authored
R=jkummerow@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9373023 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
rossberg@chromium.org authored
Turns Declaration into an abstract class, and introduces VariableDeclaration as a concrete subclass. R=kmillikin@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9348057 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10662 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
jkummerow@chromium.org authored
Review URL: https://chromiumcodereview.appspot.com/9361026 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10657 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Feb, 2012 1 commit
-
-
jkummerow@chromium.org authored
Review URL: https://chromiumcodereview.appspot.com/9221011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Jan, 2012 1 commit
-
-
kmillikin@chromium.org authored
R=fschneider@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9288011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Dec, 2011 1 commit
-
-
keuchel@chromium.org authored
The ES.next draft rev 4 in section 11.13 reads: It is a Syntax Error if the AssignmentExpression is contained in extended code and the LeftHandSideExpression is an Identifier that does not statically resolve to a declarative environment record binding or if the resolved binding is an immutable binding. This CL adds corresponding static checks for the immutable binding case. TEST=mjsunit/harmony/block-const-assign Review URL: http://codereview.chromium.org/8688007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10156 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Nov, 2011 1 commit
-
-
keuchel@chromium.org authored
This reapplies a fixed version of r10076 that also works on arm. Patch set one is r10076 reapplied and patch set 2 contains the new fix. Review URL: http://codereview.chromium.org/8725001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10080 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Nov, 2011 2 commits
-
-
keuchel@chromium.org authored
Review URL: http://codereview.chromium.org/8716005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10077 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
keuchel@chromium.org authored
source code positions it gets from the program counter to recreate the scope chain by reparsing the function or program. This CL includes the following changes * Adds source code positions for the assignment added by the rewriter. * Run the preparser over global code first. * Use the ScopeType from the ScopeInfo to determine if the code being debugged is eval, function or global code instead of looking up the '.result' symbol. TEST=mjsunit/debug-stepout-scope.js Review URL: http://codereview.chromium.org/8590027 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10076 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Nov, 2011 1 commit
-
-
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
-
- 18 Nov, 2011 1 commit
-
-
yangguo@chromium.org authored
Note that some cctests and d8 still contain statical members with exit time destructors. BUG=v8:1828 Review URL: http://codereview.chromium.org/8586025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10025 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
-
- 11 Nov, 2011 3 commits
-
-
kmillikin@chromium.org authored
Original commit message: Add a level of indirection to exception handler addresses. To support deoptimization of exception handlers, the handler address in the stack is converted to a pair of code object and an index into a separate table of code offsets. The index part is invariant under deoptimization. The index is packed into the handler state field so that handler size does not change. R=vegorov@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8538011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9977 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
This reverts r9975. This change broke (at least) snapshots on x64. TBR=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8540005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9976 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
To support deoptimization of exception handlers, the handler address in the stack is converted to a pair of code object and an index into a separate table of code offsets. The index part is invariant under deoptimization. The index is packed into the handler state field so that handler size does not change. R=vegorov@chromium.org,fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8462010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9975 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Nov, 2011 2 commits
-
-
kmillikin@chromium.org authored
* Remove a couple of unused fields from the FunctionLiteral, ensure that all the bools are packed. * Rename SaveScope and LexicalScope in the parser. * Use an enum to generate the numbers 0..N and the dependent count, rather than static const ints. This is simpler to extend (coming in a future change). R=danno@chromium.org,keuchel@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8505012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9933 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
R=svenpanne@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8509005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9924 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Nov, 2011 2 commits
-
-
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
-
- 02 Nov, 2011 1 commit
-
-
kmillikin@chromium.org authored
This was pretty heavyweight. It was kept in just for a few corner cases that assumed it was there. We can work around them by making sure that the expression in a reified test context is always really the expression that was visited in that context; and by inspecting the context manually and consing up a pair of extra AST IDs for the unusual case of unary not in a value AST context. R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8386037 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9863 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 31 Oct, 2011 1 commit
-
-
fschneider@chromium.org authored
1. Remove unused dead functions. 2. Replace the virtual As-* type cast functions with non-virtual version that uses node_type(). Result is around 13K reduction in binary size. Review URL: http://codereview.chromium.org/8335006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9841 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Oct, 2011 1 commit
-
-
keuchel@chromium.org authored
This implements block scoped 'const' declared variables in harmony mode. They have a temporal dead zone semantics similar to 'let' bindings, i.e. accessing uninitialized 'const' bindings in throws a ReferenceError. As for 'let' bindings, the semantics of 'const' bindings in global scope is not correctly implemented yet. Furthermore assignments to 'const's are silently ignored. Another CL will introduce treatment of those assignments as early errors. Review URL: http://codereview.chromium.org/7992005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9764 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
-
- 21 Oct, 2011 1 commit
-
-
keuchel@chromium.org authored
This also includes the two fixes from r9674 and r9675. Here's the diff to the previous CL. --- a/src/runtime.cc +++ b/src/runtime.cc @@ -11133,17 +11133,26 @@ class ScopeIterator { context_(Context::cast(frame->context())), nested_scope_chain_(4) { + // Catch the case when the debugger stops in an internal function. + Handle<SharedFunctionInfo> shared_info(function_->shared()); + if (shared_info->script() == isolate->heap()->undefined_value()) { + if (shared_info->scope_info()->HasContext()) Next(); + return; + } + // Check whether we are in global code or function code. If there is a stack // slot for .result then this function has been created for evaluating // global code and it is not a real function. // Checking for the existence of .result seems fragile, but the scope info // saved with the code object does not otherwise have that information. - int index = function_->shared()->scope_info()-> + int index = shared_info->scope_info()-> StackSlotIndex(isolate_->heap()->result_symbol()); // Reparse the code and analyze the scopes. ZoneScope zone_scope(isolate, DELETE_ON_EXIT); - Handle<SharedFunctionInfo> shared_info(function_->shared()); Handle<Script> script(Script::cast(shared_info->script())); Scope* scope; if (index >= 0) { Review URL: http://codereview.chromium.org/8344046 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-