Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: src/v8globals.h

Issue 8423005: Remove some unnecessary binding initialization checks. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 // variable 542 // variable
543 543
544 INTERNAL, // like VAR, but not user-visible (may or may not 544 INTERNAL, // like VAR, but not user-visible (may or may not
545 // be in a context) 545 // be in a context)
546 546
547 TEMPORARY // temporary variables (not user-visible), never 547 TEMPORARY // temporary variables (not user-visible), never
548 // in a context 548 // in a context
549 }; 549 };
550 550
551 551
552 // ES6 Draft Rev3 10.2 specifies declarative environment records with mutable
553 // and immutable bindings that can be in two states: initialized and
554 // uninitialized. In ES5 only immutable bindings have these two states. When
555 // accessing a binding, it needs to be checked for initialization. However in
556 // the following cases the binding is initialized immediately after creation
557 // so the initialization check can always be skipped:
558 // 1. Var declared local variables.
559 // var foo;
560 // 2. A local variable introduced by a function declaration.
561 // function foo() {}
562 // 3. Parameters
563 // function x(foo) {}
564 // 4. Catch bound variables.
565 // try {} catch (foo) {}
566 // 6. Function variables of named function expressions.
567 // var x = function foo() {}
568 // 7. Implicit binding of 'this'.
569 // 8. Implicit binding of 'arguments' in functions.
570 //
571 // ES5 specified object environment records which are introduced by ES elements
572 // such as Program and WithStatement that associate identifier bindings with the
573 // 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.
574 // (which may be non-writable) and have no distinct initialization step. However
575 // V8 allows const declarations in global code with distinct creation and
576 // initialization steps which are represented by non-writable properties in the
577 // global object. As a result also these bindings need to be checked for
578 // initialization.
579 //
580 // The following enum specifies a flag that indicates if the binding needs a
581 // distinct initialization step (NEEDS_INITIALIZATION) or if the binding is
582 // immediately initialized upon creation (CREATED_INITIALIZED).
583 enum InitializationFlag {
584 NEEDS_INITIALIZATION,
585 CREATED_INITIALIZED
586 };
587
588
552 enum ClearExceptionFlag { 589 enum ClearExceptionFlag {
553 KEEP_EXCEPTION, 590 KEEP_EXCEPTION,
554 CLEAR_EXCEPTION 591 CLEAR_EXCEPTION
555 }; 592 };
556 593
557 594
558 } } // namespace v8::internal 595 } } // namespace v8::internal
559 596
560 #endif // V8_V8GLOBALS_H_ 597 #endif // V8_V8GLOBALS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698