Allocate block-scoped global bindings to global context.
authorrossberg@chromium.org <rossberg@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 28 Aug 2012 11:25:08 +0000 (11:25 +0000)
committerrossberg@chromium.org <rossberg@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 28 Aug 2012 11:25:08 +0000 (11:25 +0000)
commitccc827a6f8a745deb74dc78c00b6b6d8fb4db8ea
treedd23117192a20c806dd9baab1bf63ddfa5370a47
parent1dbf6707133d4a82cba7895fb6610065b272691b
Allocate block-scoped global bindings to global context.

- The global object has a reference to the current global scope chain.
  Running a script adds to the chain if it contains global lexical declarations.
- Scripts are executed relative to a global, not a native context.
- Harmony let and const bindings are allocated to the innermost global context;
  var and function still live on the global object.
  (Lexical bindings are not reflected on the global object at all,
  but that will probably change later using accessors, as for modules.)
- Compilation of scripts now needs a (global) context (previously only eval did).
- The global scope chain represents one logical scope, so collision tests take
  the chain into account.

R=svenpanne@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/10872084

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
19 files changed:
src/api.cc
src/bootstrapper.cc
src/bootstrapper.h
src/compiler.cc
src/compiler.h
src/heap.cc
src/isolate.cc
src/isolate.h
src/objects-inl.h
src/objects.cc
src/objects.h
src/parser.cc
src/rewriter.cc
src/runtime.cc
src/scopes.cc
src/variables.cc
src/variables.h
test/cctest/test-decls.cc
test/mjsunit/harmony/block-conflicts.js