- 07 Dec, 2012 1 commit
-
-
rossberg@chromium.org authored
For strict-mode eval, this requires _disabling_ lazy parsing of inner functions, because we need to collect their free variables to do allocation for the eval scope properly. R=mstarzinger@chromium.org BUG=v8:2315 Review URL: https://codereview.chromium.org/11438042 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13161 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
-
- 13 Nov, 2012 1 commit
-
-
svenpanne@chromium.org authored
Review URL: https://codereview.chromium.org/11365224 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12945 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Nov, 2012 1 commit
-
-
svenpanne@chromium.org authored
Fixed visibility attribute for GetPointerFromInternalField Heavy cleanup of the external pointer API. Review URL: https://codereview.chromium.org/11359125 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Nov, 2012 1 commit
-
-
rossberg@chromium.org authored
This CL has two parts: the first is the logic itself, whereby each observer callback is assigned a "priority" number the first time it's passed as an observer to Object.observe(), and that priority is used to determine the order of delivery. The second part invokes the above logic as part of the API, when the JS stack winds down to zero. Added several tests via the API, as the delivery logic isn't testable from a JS test (it runs after such a test would exit). Review URL: https://codereview.chromium.org/11266011 Patch from Adam Klein <adamk@chromium.org>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12902 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Nov, 2012 1 commit
-
-
rossberg@chromium.org authored
In more detail: - Set observation bit for observed objects (and make NormalizedMapCache respect it). - Mutation of observed objects is always delegated from ICs to runtime. - Introduce JS runtime function for notifying generated changes. - Invoke this function in the appropriate places (including some local refactoring). - Inclusion of oldValue field is not yet implemented, nor element properties. Also, shortened flag to --harmony-observation. R=verwaest@chromium.org BUG= Review URL: https://codereview.chromium.org/11347037 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12867 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Nov, 2012 1 commit
-
-
svenpanne@chromium.org authored
Added highly efficient Object::SetAlignedPointerInInternalField and Object::GetAlignedPointerFromInternalField functions for 2-byte-aligned pointers. Their non-aligned counterparts Object::GetPointerFromInternalField and Object::SetPointerInInternalField are now deprecated utility functions. External is now a true Value again, with New/Value/Cast using a JSObject with an internal field containing a Foreign. External::Wrap, and External::Unwrap are now deprecated utility functions. Added Context::GetEmbedderData and Context::SetEmbedderData. Deprecated Context::GetData and Context::SetData, these are now only wrappers to access internal field 0. Added highly efficient Context::SetAlignedPointerInEmbedderData and Context::GetAlignedPointerFromEmbedderData functions for 2-byte-aligned pointers. Review URL: https://codereview.chromium.org/11190050 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12849 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Sep, 2012 1 commit
-
-
ulan@chromium.org authored
BUG=140191 R=svenpanne@chromium.org,mkwst@chromium.org Review URL: https://chromiumcodereview.appspot.com/10837358 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12525 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Aug, 2012 1 commit
-
-
rossberg@chromium.org authored
They are yet unused; actual allocation of global lexical bindings in these contexts is implemented in a separate follow-up CL. R=svenpanne@chromium.org BUG= Review URL: https://chromiumcodereview.appspot.com/10876067 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Aug, 2012 2 commits
-
-
rossberg@chromium.org authored
in preparation for global lexical scope. R=mstarzinger@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10832365 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
rossberg@chromium.org authored
in anticipation of the upcoming lexical global scope. Mostly automatised as: for FILE in `egrep -ril "global[ _]?context" src test/cctest` do echo $FILE sed "s/Global context/Native context/g" <$FILE >$FILE.0 sed "s/global context/native context/g" <$FILE.0 >$FILE.1 sed "s/global_context/native_context/g" <$FILE.1 >$FILE.2 sed "s/GLOBAL_CONTEXT/NATIVE_CONTEXT/g" <$FILE.2 >$FILE.3 sed "s/GlobalContext/NativeContext/g" <$FILE.3 >$FILE rm $FILE.[0-9] done R=mstarzinger@chromium.org BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10832342 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12325 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Jul, 2012 1 commit
-
-
rossberg@chromium.org authored
Specifically: - In parser, check that all exports are defined. - Move JSModule allocation from parser to scope resolution. - Move JSModule linking from full codegen to scope resolution. - Implement module accessors for exported value members. - Allocate module contexts statically along with JSModules (to allow static linking), but chain them when module literal is evaluated. - Make module contexts' extension slot refer to resp. JSModule (makes modules' ScopeInfo accessible from context). - Some other tweaks to context handling in general. - Make any code containing module literals (and thus embedding static references to JSModules) non-cacheable. This enables accessing module instance objects as expected. Import declarations are a separate feature and do not work yet. R=mstarzinger@chromium.org BUG=v8:1569 TEST= Review URL: https://chromiumcodereview.appspot.com/10690043 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 May, 2012 1 commit
-
-
danno@chromium.org authored
R=jkummerow@chromium.org TEST=jkummerow@chromium.org Review URL: https://chromiumcodereview.appspot.com/10170030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Apr, 2012 1 commit
-
-
rossberg@chromium.org authored
I also discovered that our treatment of const declarations is inconsistent when inside a global eval under 'with' (i.e., when created by DeclareContextSlots). That is, var x; eval("const x = 9") and var x; eval("with({}) const x = 9") differ (the former assigns 9, the latter throws). This appears to be an oversight from earlier changes to our const semantics (the latter shouldn't throw either). Fixing this is a separate issue, though (and one that doesn't seem quite worthwhile). R=mstarzinger@chromium.org BUG=v8:1991,80591 TEST= Review URL: https://chromiumcodereview.appspot.com/10067010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11333 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
-
- 02 Feb, 2012 1 commit
-
-
danno@chromium.org authored
BUG=none TEST=3d-cube faster Review URL: https://chromiumcodereview.appspot.com/9235007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Jan, 2012 1 commit
-
-
danno@chromium.org authored
BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9073007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10523 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 Dec, 2011 1 commit
-
-
danno@chromium.org authored
R=whesse@chromium.org BUG=v8:1878 TEST=test/mjsunit/regress/regress-1878.js Review URL: http://codereview.chromium.org/9016041 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Nov, 2011 1 commit
-
-
keuchel@chromium.org authored
So far free variables references in eval code are not statically resolved. For example in function foo() { var x = 1; eval("y = x"); } the variable x will get mode DYNAMIC and y will get mode DYNAMIC_GLOBAL, i.e. free variable references trigger dynamic lookups with a fast case handling for global variables. The CL introduces static resolution of free variables references in eval code. If possible variable references are resolved to bindings belonging to outer scopes of the eval call site. This is achieved by deserializing the outer scope chain using Scope::DeserializeScopeChain prior to parsing the eval code similar to lazy parsing of functions. The existing code for variable resolution is used, however resolution starts at the first outer unresolved scope instead of always starting at the root of the scope tree. This is a prerequisite for statically checking validity of assignments in the extended code as specified by the current ES.next draft which will be introduced by a subsequent CL. More specifically section 11.13 of revision 4 of the ES.next draft 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. TEST=existing tests in mjsunit Review URL: http://codereview.chromium.org/8508052 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9999 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 2 commits
-
-
rossberg@chromium.org authored
Fix related corner case for Object.keys. Remove obsolete GET_KEYS builtin. R=ricow@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/8256015 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9760 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
lrn@chromium.org authored
Change Random to take global context, not isolate. BUG=v8:864 Review URL: http://codereview.chromium.org/8162014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9753 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
-
- 19 Oct, 2011 1 commit
-
-
keuchel@chromium.org authored
This reverts commits r9673: "Scope tree serialization and ScopeIterator cleanup." r9674: "Use OS::SNPrintF instead of snprintf." r9675: "Use int instead of size_t, StrLength instead of strlen." Review URL: http://codereview.chromium.org/8353003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Oct, 2011 1 commit
-
-
keuchel@chromium.org authored
The intention is to store enough scope information for the debugger to handle stack allocation of block scoped variables introduced by http://codereview.chromium.org/7860045/ . This CL is based on http://codereview.chromium.org/7904008/ . Review URL: http://codereview.chromium.org/7979001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Oct, 2011 1 commit
-
-
keuchel@chromium.org authored
Review URL: http://codereview.chromium.org/7904008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9650 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Sep, 2011 2 commits
-
-
rossberg@chromium.org authored
R=kmillikin@chromium.org BUG=v8:1543 TEST= Review URL: http://codereview.chromium.org/7828080 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9364 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
The threading test failures seem to be due to a GC-unsafe place, that mixed handles and raw pointers, in the runtime code for context lookup. R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7890002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 13 Sep, 2011 1 commit
-
-
kmillikin@chromium.org authored
This reverts commit 9241. This change shows failures on Mac and Win for the threading tests. Reverting while I investigate. R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7886002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Sep, 2011 3 commits
-
-
kmillikin@chromium.org authored
With a fix for a context lookup bug in the original change. R=fschneider@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7862032 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
This reverts commit 9223, due to test failures. R=ricow@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7865023 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
Refactor Context::Lookup so it is more obvious. Change the comment in contexts.h so it no longer indicates that it can return an arguments object (it can't) and clean up the call sites that had leftover dead code. BUG= TEST= Review URL: http://codereview.chromium.org/7782030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9223 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Aug, 2011 1 commit
-
-
keuchel@chromium.org authored
BUG= TEST=mjsunit/harmony/block-let-semantics.js Review URL: http://codereview.chromium.org/7671042 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9070 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Aug, 2011 1 commit
-
-
keuchel@chromium.org authored
BUG= TEST= Review URL: http://codereview.chromium.org/7549008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Jul, 2011 1 commit
-
-
rossberg@chromium.org authored
R=ager@chromium.org BUG=v8:1543 TEST= Review URL: http://codereview.chromium.org/7390028 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8681 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 01 Jul, 2011 1 commit
-
-
vitalyr@chromium.org authored
Made "map_cache" a weak field of global context and added a pass over all caches late in the marking phase. R=vegorov@chromium.org BUG=v8:1516 TEST=cctest/test-api/Regress1516 Review URL: http://codereview.chromium.org/7285031 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Jun, 2011 1 commit
-
-
kmillikin@chromium.org authored
Before: every context cached the nearest enclosing function context. This assumed that for nested contexts (i.e., with and catch contexts) the enclosing function had a materialized link in the context chain. Now: when necessary, we loop up the context chain to find such a context. This enables catch contexts without forcing the enclosing function to allocate its own context. R=ager@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7230047 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8452 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Jun, 2011 2 commits
-
-
karlklose@chromium.org authored
Review URL: http://codereview.chromium.org/7187007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8315 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
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 1 commit
-
-
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
-