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

Side by Side Diff: src/contexts.h

Issue 1292753007: [es6] Parameter scopes for sloppy eval (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Comments Created 5 years, 4 months 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
« no previous file with comments | « src/compiler/ast-graph-builder.cc ('k') | src/contexts.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_CONTEXTS_H_ 5 #ifndef V8_CONTEXTS_H_
6 #define V8_CONTEXTS_H_ 6 #define V8_CONTEXTS_H_
7 7
8 #include "src/heap/heap.h" 8 #include "src/heap/heap.h"
9 #include "src/objects.h" 9 #include "src/objects.h"
10 10
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 // function contexts, and non-NULL for 'with' contexts. 292 // function contexts, and non-NULL for 'with' contexts.
293 // Used to implement the 'with' statement. 293 // Used to implement the 'with' statement.
294 // 294 //
295 // [ extension ] A pointer to an extension JSObject, or NULL. Used to 295 // [ extension ] A pointer to an extension JSObject, or NULL. Used to
296 // implement 'with' statements and dynamic declarations 296 // implement 'with' statements and dynamic declarations
297 // (through 'eval'). The object in a 'with' statement is 297 // (through 'eval'). The object in a 'with' statement is
298 // stored in the extension slot of a 'with' context. 298 // stored in the extension slot of a 'with' context.
299 // Dynamically declared variables/functions are also added 299 // Dynamically declared variables/functions are also added
300 // to lazily allocated extension object. Context::Lookup 300 // to lazily allocated extension object. Context::Lookup
301 // searches the extension object for properties. 301 // searches the extension object for properties.
302 // For global and block contexts, contains the respective 302 // For script and block contexts, contains the respective
303 // ScopeInfo. 303 // ScopeInfo. For block contexts representing sloppy declaration
304 // block scopes, it may also be a struct being a
305 // SloppyBlockWithEvalContextExtension, pairing the ScopeInfo
306 // with an extension object.
304 // For module contexts, points back to the respective JSModule. 307 // For module contexts, points back to the respective JSModule.
305 // 308 //
306 // [ global_object ] A pointer to the global object. Provided for quick 309 // [ global_object ] A pointer to the global object. Provided for quick
307 // access to the global object from inside the code (since 310 // access to the global object from inside the code (since
308 // we always have a context pointer). 311 // we always have a context pointer).
309 // 312 //
310 // In addition, function contexts may have statically allocated context slots 313 // In addition, function contexts may have statically allocated context slots
311 // to store local variables/functions that are accessed from inner functions 314 // to store local variables/functions that are accessed from inner functions
312 // (via static context addresses) or through 'eval' (dynamic context lookups). 315 // (via static context addresses) or through 'eval' (dynamic context lookups).
313 // The native context contains additional slots for fast access to native 316 // The native context contains additional slots for fast access to native
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 JSFunction* closure() { return JSFunction::cast(get(CLOSURE_INDEX)); } 366 JSFunction* closure() { return JSFunction::cast(get(CLOSURE_INDEX)); }
364 void set_closure(JSFunction* closure) { set(CLOSURE_INDEX, closure); } 367 void set_closure(JSFunction* closure) { set(CLOSURE_INDEX, closure); }
365 368
366 Context* previous() { 369 Context* previous() {
367 Object* result = unchecked_previous(); 370 Object* result = unchecked_previous();
368 DCHECK(IsBootstrappingOrValidParentContext(result, this)); 371 DCHECK(IsBootstrappingOrValidParentContext(result, this));
369 return reinterpret_cast<Context*>(result); 372 return reinterpret_cast<Context*>(result);
370 } 373 }
371 void set_previous(Context* context) { set(PREVIOUS_INDEX, context); } 374 void set_previous(Context* context) { set(PREVIOUS_INDEX, context); }
372 375
373 bool has_extension() { return extension() != NULL; } 376 bool has_extension() { return extension() != nullptr; }
374 Object* extension() { return get(EXTENSION_INDEX); } 377 Object* extension() { return get(EXTENSION_INDEX); }
375 void set_extension(Object* object) { set(EXTENSION_INDEX, object); } 378 void set_extension(Object* object) { set(EXTENSION_INDEX, object); }
379 JSObject* extension_object();
380 JSReceiver* extension_receiver();
381 ScopeInfo* scope_info();
382 String* catch_name();
376 383
377 JSModule* module() { return JSModule::cast(get(EXTENSION_INDEX)); } 384 JSModule* module() { return JSModule::cast(get(EXTENSION_INDEX)); }
378 void set_module(JSModule* module) { set(EXTENSION_INDEX, module); } 385 void set_module(JSModule* module) { set(EXTENSION_INDEX, module); }
379 386
380 // Get the context where var declarations will be hoisted to, which 387 // Get the context where var declarations will be hoisted to, which
381 // may be the context itself. 388 // may be the context itself.
382 Context* declaration_context(); 389 Context* declaration_context();
390 bool is_declaration_context();
383 391
384 GlobalObject* global_object() { 392 GlobalObject* global_object() {
385 Object* result = get(GLOBAL_OBJECT_INDEX); 393 Object* result = get(GLOBAL_OBJECT_INDEX);
386 DCHECK(IsBootstrappingOrGlobalObject(this->GetIsolate(), result)); 394 DCHECK(IsBootstrappingOrGlobalObject(this->GetIsolate(), result));
387 return reinterpret_cast<GlobalObject*>(result); 395 return reinterpret_cast<GlobalObject*>(result);
388 } 396 }
389 void set_global_object(GlobalObject* object) { 397 void set_global_object(GlobalObject* object) {
390 set(GLOBAL_OBJECT_INDEX, object); 398 set(GLOBAL_OBJECT_INDEX, object);
391 } 399 }
392 400
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 static bool IsBootstrappingOrGlobalObject(Isolate* isolate, Object* object); 557 static bool IsBootstrappingOrGlobalObject(Isolate* isolate, Object* object);
550 #endif 558 #endif
551 559
552 STATIC_ASSERT(kHeaderSize == Internals::kContextHeaderSize); 560 STATIC_ASSERT(kHeaderSize == Internals::kContextHeaderSize);
553 STATIC_ASSERT(EMBEDDER_DATA_INDEX == Internals::kContextEmbedderDataIndex); 561 STATIC_ASSERT(EMBEDDER_DATA_INDEX == Internals::kContextEmbedderDataIndex);
554 }; 562 };
555 563
556 } } // namespace v8::internal 564 } } // namespace v8::internal
557 565
558 #endif // V8_CONTEXTS_H_ 566 #endif // V8_CONTEXTS_H_
OLDNEW
« no previous file with comments | « src/compiler/ast-graph-builder.cc ('k') | src/contexts.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698