OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 #include <stdlib.h> | 5 #include <stdlib.h> |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #include "src/scopeinfo.h" | 9 #include "src/scopeinfo.h" |
10 #include "src/scopes.h" | 10 #include "src/scopes.h" |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 } | 272 } |
273 | 273 |
274 | 274 |
275 bool ScopeInfo::LocalIsSynthetic(int var) { | 275 bool ScopeInfo::LocalIsSynthetic(int var) { |
276 DCHECK(0 <= var && var < LocalCount()); | 276 DCHECK(0 <= var && var < LocalCount()); |
277 // There's currently no flag stored on the ScopeInfo to indicate that a | 277 // There's currently no flag stored on the ScopeInfo to indicate that a |
278 // variable is a compiler-introduced temporary. However, to avoid conflict | 278 // variable is a compiler-introduced temporary. However, to avoid conflict |
279 // with user declarations, the current temporaries like .generator_object and | 279 // with user declarations, the current temporaries like .generator_object and |
280 // .result start with a dot, so we can use that as a flag. It's a hack! | 280 // .result start with a dot, so we can use that as a flag. It's a hack! |
281 Handle<String> name(LocalName(var)); | 281 Handle<String> name(LocalName(var)); |
282 return name->length() > 0 && name->Get(0) == '.'; | 282 return (name->length() > 0 && name->Get(0) == '.') || |
| 283 (name->length() == 4 && name->Get(0) == 't' && name->Get(1) == 'h' && |
| 284 name->Get(2) == 'i' && name->Get(3) == 's'); |
283 } | 285 } |
284 | 286 |
285 | 287 |
286 int ScopeInfo::StackSlotIndex(String* name) { | 288 int ScopeInfo::StackSlotIndex(String* name) { |
287 DCHECK(name->IsInternalizedString()); | 289 DCHECK(name->IsInternalizedString()); |
288 if (length() > 0) { | 290 if (length() > 0) { |
289 int start = StackLocalEntriesIndex(); | 291 int start = StackLocalEntriesIndex(); |
290 int end = StackLocalEntriesIndex() + StackLocalCount(); | 292 int end = StackLocalEntriesIndex() + StackLocalCount(); |
291 for (int i = start; i < end; ++i) { | 293 for (int i = start; i < end; ++i) { |
292 if (name == get(i)) { | 294 if (name == get(i)) { |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
564 info->set_name(i, *(it.export_name()->string())); | 566 info->set_name(i, *(it.export_name()->string())); |
565 info->set_mode(i, var->mode()); | 567 info->set_mode(i, var->mode()); |
566 DCHECK(var->index() >= 0); | 568 DCHECK(var->index() >= 0); |
567 info->set_index(i, var->index()); | 569 info->set_index(i, var->index()); |
568 } | 570 } |
569 DCHECK(i == info->length()); | 571 DCHECK(i == info->length()); |
570 return info; | 572 return info; |
571 } | 573 } |
572 | 574 |
573 } } // namespace v8::internal | 575 } } // namespace v8::internal |
OLD | NEW |