OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 // function contexts, and non-NULL for 'with' contexts. | 183 // function contexts, and non-NULL for 'with' contexts. |
184 // Used to implement the 'with' statement. | 184 // Used to implement the 'with' statement. |
185 // | 185 // |
186 // [ extension ] A pointer to an extension JSObject, or NULL. Used to | 186 // [ extension ] A pointer to an extension JSObject, or NULL. Used to |
187 // implement 'with' statements and dynamic declarations | 187 // implement 'with' statements and dynamic declarations |
188 // (through 'eval'). The object in a 'with' statement is | 188 // (through 'eval'). The object in a 'with' statement is |
189 // stored in the extension slot of a 'with' context. | 189 // stored in the extension slot of a 'with' context. |
190 // Dynamically declared variables/functions are also added | 190 // Dynamically declared variables/functions are also added |
191 // to lazily allocated extension object. Context::Lookup | 191 // to lazily allocated extension object. Context::Lookup |
192 // searches the extension object for properties. | 192 // searches the extension object for properties. |
193 // For block contexts, contains the respective ScopeInfo. | 193 // For global and block contexts, contains the respective |
| 194 // ScopeInfo. |
194 // For module contexts, points back to the respective JSModule. | 195 // For module contexts, points back to the respective JSModule. |
195 // | 196 // |
196 // [ global_object ] A pointer to the global object. Provided for quick | 197 // [ global_object ] A pointer to the global object. Provided for quick |
197 // access to the global object from inside the code (since | 198 // access to the global object from inside the code (since |
198 // we always have a context pointer). | 199 // we always have a context pointer). |
199 // | 200 // |
200 // In addition, function contexts may have statically allocated context slots | 201 // In addition, function contexts may have statically allocated context slots |
201 // to store local variables/functions that are accessed from inner functions | 202 // to store local variables/functions that are accessed from inner functions |
202 // (via static context addresses) or through 'eval' (dynamic context lookups). | 203 // (via static context addresses) or through 'eval' (dynamic context lookups). |
203 // Finally, the native context contains additional slots for fast access to | 204 // Finally, the native context contains additional slots for fast access to |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 return map == map->GetHeap()->with_context_map(); | 357 return map == map->GetHeap()->with_context_map(); |
357 } | 358 } |
358 bool IsBlockContext() { | 359 bool IsBlockContext() { |
359 Map* map = this->map(); | 360 Map* map = this->map(); |
360 return map == map->GetHeap()->block_context_map(); | 361 return map == map->GetHeap()->block_context_map(); |
361 } | 362 } |
362 bool IsModuleContext() { | 363 bool IsModuleContext() { |
363 Map* map = this->map(); | 364 Map* map = this->map(); |
364 return map == map->GetHeap()->module_context_map(); | 365 return map == map->GetHeap()->module_context_map(); |
365 } | 366 } |
| 367 bool IsGlobalContext() { |
| 368 Map* map = this->map(); |
| 369 return map == map->GetHeap()->global_context_map(); |
| 370 } |
366 | 371 |
367 // Tells whether the native context is marked with out of memory. | 372 // Tells whether the native context is marked with out of memory. |
368 inline bool has_out_of_memory(); | 373 inline bool has_out_of_memory(); |
369 | 374 |
370 // Mark the native context with out of memory. | 375 // Mark the native context with out of memory. |
371 inline void mark_out_of_memory(); | 376 inline void mark_out_of_memory(); |
372 | 377 |
373 // A native context hold a list of all functions which have been optimized. | 378 // A native context hold a list of all functions which have been optimized. |
374 void AddOptimizedFunction(JSFunction* function); | 379 void AddOptimizedFunction(JSFunction* function); |
375 void RemoveOptimizedFunction(JSFunction* function); | 380 void RemoveOptimizedFunction(JSFunction* function); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 #ifdef DEBUG | 439 #ifdef DEBUG |
435 // Bootstrapping-aware type checks. | 440 // Bootstrapping-aware type checks. |
436 static bool IsBootstrappingOrValidParentContext(Object* object, Context* kid); | 441 static bool IsBootstrappingOrValidParentContext(Object* object, Context* kid); |
437 static bool IsBootstrappingOrGlobalObject(Object* object); | 442 static bool IsBootstrappingOrGlobalObject(Object* object); |
438 #endif | 443 #endif |
439 }; | 444 }; |
440 | 445 |
441 } } // namespace v8::internal | 446 } } // namespace v8::internal |
442 | 447 |
443 #endif // V8_CONTEXTS_H_ | 448 #endif // V8_CONTEXTS_H_ |
OLD | NEW |