| 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 "v8.h" | 7 #include "v8.h" |
| 8 | 8 |
| 9 #include "scopeinfo.h" | 9 #include "scopeinfo.h" |
| 10 #include "scopes.h" | 10 #include "scopes.h" |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 } | 429 } |
| 430 return kNotFound; | 430 return kNotFound; |
| 431 } | 431 } |
| 432 | 432 |
| 433 | 433 |
| 434 void ContextSlotCache::Update(Handle<Object> data, | 434 void ContextSlotCache::Update(Handle<Object> data, |
| 435 Handle<String> name, | 435 Handle<String> name, |
| 436 VariableMode mode, | 436 VariableMode mode, |
| 437 InitializationFlag init_flag, | 437 InitializationFlag init_flag, |
| 438 int slot_index) { | 438 int slot_index) { |
| 439 String* internalized_name; | 439 Handle<String> internalized_name; |
| 440 ASSERT(slot_index > kNotFound); | 440 ASSERT(slot_index > kNotFound); |
| 441 if (name->GetIsolate()->heap()->InternalizeStringIfExists( | 441 if (StringTable::InternalizeStringIfExists(name->GetIsolate(), name). |
| 442 *name, &internalized_name)) { | 442 ToHandle(&internalized_name)) { |
| 443 int index = Hash(*data, internalized_name); | 443 int index = Hash(*data, *internalized_name); |
| 444 Key& key = keys_[index]; | 444 Key& key = keys_[index]; |
| 445 key.data = *data; | 445 key.data = *data; |
| 446 key.name = internalized_name; | 446 key.name = *internalized_name; |
| 447 // Please note value only takes a uint as index. | 447 // Please note value only takes a uint as index. |
| 448 values_[index] = Value(mode, init_flag, slot_index - kNotFound).raw(); | 448 values_[index] = Value(mode, init_flag, slot_index - kNotFound).raw(); |
| 449 #ifdef DEBUG | 449 #ifdef DEBUG |
| 450 ValidateEntry(data, name, mode, init_flag, slot_index); | 450 ValidateEntry(data, name, mode, init_flag, slot_index); |
| 451 #endif | 451 #endif |
| 452 } | 452 } |
| 453 } | 453 } |
| 454 | 454 |
| 455 | 455 |
| 456 void ContextSlotCache::Clear() { | 456 void ContextSlotCache::Clear() { |
| 457 for (int index = 0; index < kLength; index++) keys_[index].data = NULL; | 457 for (int index = 0; index < kLength; index++) keys_[index].data = NULL; |
| 458 } | 458 } |
| 459 | 459 |
| 460 | 460 |
| 461 #ifdef DEBUG | 461 #ifdef DEBUG |
| 462 | 462 |
| 463 void ContextSlotCache::ValidateEntry(Handle<Object> data, | 463 void ContextSlotCache::ValidateEntry(Handle<Object> data, |
| 464 Handle<String> name, | 464 Handle<String> name, |
| 465 VariableMode mode, | 465 VariableMode mode, |
| 466 InitializationFlag init_flag, | 466 InitializationFlag init_flag, |
| 467 int slot_index) { | 467 int slot_index) { |
| 468 String* internalized_name; | 468 Handle<String> internalized_name; |
| 469 if (name->GetIsolate()->heap()->InternalizeStringIfExists( | 469 if (StringTable::InternalizeStringIfExists(name->GetIsolate(), name). |
| 470 *name, &internalized_name)) { | 470 ToHandle(&internalized_name)) { |
| 471 int index = Hash(*data, *name); | 471 int index = Hash(*data, *name); |
| 472 Key& key = keys_[index]; | 472 Key& key = keys_[index]; |
| 473 ASSERT(key.data == *data); | 473 ASSERT(key.data == *data); |
| 474 ASSERT(key.name->Equals(*name)); | 474 ASSERT(key.name->Equals(*name)); |
| 475 Value result(values_[index]); | 475 Value result(values_[index]); |
| 476 ASSERT(result.mode() == mode); | 476 ASSERT(result.mode() == mode); |
| 477 ASSERT(result.initialization_flag() == init_flag); | 477 ASSERT(result.initialization_flag() == init_flag); |
| 478 ASSERT(result.index() + kNotFound == slot_index); | 478 ASSERT(result.index() + kNotFound == slot_index); |
| 479 } | 479 } |
| 480 } | 480 } |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 } else { | 548 } else { |
| 549 ASSERT(var->index() >= 0); | 549 ASSERT(var->index() >= 0); |
| 550 info->set_index(i, var->index()); | 550 info->set_index(i, var->index()); |
| 551 } | 551 } |
| 552 } | 552 } |
| 553 ASSERT(i == info->length()); | 553 ASSERT(i == info->length()); |
| 554 return info; | 554 return info; |
| 555 } | 555 } |
| 556 | 556 |
| 557 } } // namespace v8::internal | 557 } } // namespace v8::internal |
| OLD | NEW |