Index: src/v8globals.h |
diff --git a/src/v8globals.h b/src/v8globals.h |
index 7179454b43cefa9ed45b3ffc473cd40f87202787..b51ad0510b6cf2333945a848ff54e5b9dd65cc6c 100644 |
--- a/src/v8globals.h |
+++ b/src/v8globals.h |
@@ -549,6 +549,43 @@ enum VariableMode { |
}; |
+// ES6 Draft Rev3 10.2 specifies declarative environment records with mutable |
+// and immutable bindings that can be in two states: initialized and |
+// uninitialized. In ES5 only immutable bindings have these two states. When |
+// accessing a binding, it needs to be checked for initialization. However in |
+// the following cases the binding is initialized immediately after creation |
+// so the initialization check can always be skipped: |
+// 1. Var declared local variables. |
+// var foo; |
+// 2. A local variable introduced by a function declaration. |
+// function foo() {} |
+// 3. Parameters |
+// function x(foo) {} |
+// 4. Catch bound variables. |
+// try {} catch (foo) {} |
+// 6. Function variables of named function expressions. |
+// var x = function foo() {} |
+// 7. Implicit binding of 'this'. |
+// 8. Implicit binding of 'arguments' in functions. |
+// |
+// ES5 specified object environment records which are introduced by ES elements |
+// such as Program and WithStatement that associate identifier bindings with the |
+// properties of some object. In the specification only mutable bindings exists |
Jakob Kummerow
2011/10/31 12:44:34
nit: s/exists/exist/
Steven
2011/10/31 14:28:29
Done.
|
+// (which may be non-writable) and have no distinct initialization step. However |
+// V8 allows const declarations in global code with distinct creation and |
+// initialization steps which are represented by non-writable properties in the |
+// global object. As a result also these bindings need to be checked for |
+// initialization. |
+// |
+// The following enum specifies a flag that indicates if the binding needs a |
+// distinct initialization step (NEEDS_INITIALIZATION) or if the binding is |
+// immediately initialized upon creation (CREATED_INITIALIZED). |
+enum InitializationFlag { |
+ NEEDS_INITIALIZATION, |
+ CREATED_INITIALIZED |
+}; |
+ |
+ |
enum ClearExceptionFlag { |
KEEP_EXCEPTION, |
CLEAR_EXCEPTION |