OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef RUNTIME_VM_SCOPES_H_ | 5 #ifndef RUNTIME_VM_SCOPES_H_ |
6 #define RUNTIME_VM_SCOPES_H_ | 6 #define RUNTIME_VM_SCOPES_H_ |
7 | 7 |
8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
9 #include "platform/globals.h" | 9 #include "platform/globals.h" |
10 #include "vm/allocation.h" | 10 #include "vm/allocation.h" |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 // Two locals in different sibling scopes may share the same frame slot. | 313 // Two locals in different sibling scopes may share the same frame slot. |
314 // Return the index of the next available frame slot. | 314 // Return the index of the next available frame slot. |
315 int AllocateVariables(int first_parameter_index, | 315 int AllocateVariables(int first_parameter_index, |
316 int num_parameters, | 316 int num_parameters, |
317 int first_frame_index, | 317 int first_frame_index, |
318 LocalScope* context_owner, | 318 LocalScope* context_owner, |
319 bool* found_captured_variables); | 319 bool* found_captured_variables); |
320 | 320 |
321 // Creates variable info for the scope and all its nested scopes. | 321 // Creates variable info for the scope and all its nested scopes. |
322 // Must be called after AllocateVariables() has been called. | 322 // Must be called after AllocateVariables() has been called. |
323 RawLocalVarDescriptors* GetVarDescriptors(const Function& func); | 323 RawLocalVarDescriptors* GetVarDescriptors( |
| 324 const Function& func, |
| 325 ZoneGrowableArray<intptr_t>* context_level_array); |
324 | 326 |
325 // Create a ContextScope object describing all captured variables referenced | 327 // Create a ContextScope object describing all captured variables referenced |
326 // from this scope and belonging to outer scopes. | 328 // from this scope and belonging to outer scopes. |
327 RawContextScope* PreserveOuterScope(int current_context_level) const; | 329 RawContextScope* PreserveOuterScope(int current_context_level) const; |
328 | 330 |
329 // Mark all local variables that are accessible from this scope up to | 331 // Mark all local variables that are accessible from this scope up to |
330 // top_scope (included) as captured unless they are marked as forced to stack. | 332 // top_scope (included) as captured unless they are marked as forced to stack. |
331 void CaptureLocalVariables(LocalScope* top_scope); | 333 void CaptureLocalVariables(LocalScope* top_scope); |
332 | 334 |
333 // Creates a LocalScope representing the outer scope of a local function to be | 335 // Creates a LocalScope representing the outer scope of a local function to be |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
374 // List of names referenced in this scope and its children that | 376 // List of names referenced in this scope and its children that |
375 // are not resolved to local variables. | 377 // are not resolved to local variables. |
376 GrowableArray<NameReference*> referenced_; | 378 GrowableArray<NameReference*> referenced_; |
377 | 379 |
378 DISALLOW_COPY_AND_ASSIGN(LocalScope); | 380 DISALLOW_COPY_AND_ASSIGN(LocalScope); |
379 }; | 381 }; |
380 | 382 |
381 } // namespace dart | 383 } // namespace dart |
382 | 384 |
383 #endif // RUNTIME_VM_SCOPES_H_ | 385 #endif // RUNTIME_VM_SCOPES_H_ |
OLD | NEW |