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

Side by Side Diff: src/heap.cc

Issue 11597007: Rename LookupSymbol calls to use Utf8 or OneByte in names. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years 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 | Annotate | Revision Log
« no previous file with comments | « src/heap.h ('k') | src/isolate.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 // 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 2758 matching lines...) Expand 10 before | Expand all | Expand 10 after
2769 set_termination_exception(obj); 2769 set_termination_exception(obj);
2770 2770
2771 // Allocate the empty string. 2771 // Allocate the empty string.
2772 { MaybeObject* maybe_obj = AllocateRawOneByteString(0, TENURED); 2772 { MaybeObject* maybe_obj = AllocateRawOneByteString(0, TENURED);
2773 if (!maybe_obj->ToObject(&obj)) return false; 2773 if (!maybe_obj->ToObject(&obj)) return false;
2774 } 2774 }
2775 set_empty_string(String::cast(obj)); 2775 set_empty_string(String::cast(obj));
2776 2776
2777 for (unsigned i = 0; i < ARRAY_SIZE(constant_symbol_table); i++) { 2777 for (unsigned i = 0; i < ARRAY_SIZE(constant_symbol_table); i++) {
2778 { MaybeObject* maybe_obj = 2778 { MaybeObject* maybe_obj =
2779 LookupAsciiSymbol(constant_symbol_table[i].contents); 2779 LookupUtf8Symbol(constant_symbol_table[i].contents);
2780 if (!maybe_obj->ToObject(&obj)) return false; 2780 if (!maybe_obj->ToObject(&obj)) return false;
2781 } 2781 }
2782 roots_[constant_symbol_table[i].index] = String::cast(obj); 2782 roots_[constant_symbol_table[i].index] = String::cast(obj);
2783 } 2783 }
2784 2784
2785 // Allocate the hidden symbol which is used to identify the hidden properties 2785 // Allocate the hidden symbol which is used to identify the hidden properties
2786 // in JSObjects. The hash code has a special value so that it will not match 2786 // in JSObjects. The hash code has a special value so that it will not match
2787 // the empty string when searching for the property. It cannot be part of the 2787 // the empty string when searching for the property. It cannot be part of the
2788 // loop above because it needs to be allocated manually with the special 2788 // loop above because it needs to be allocated manually with the special
2789 // hash code in place. The hash code for the hidden_symbol is zero to ensure 2789 // hash code in place. The hash code for the hidden_symbol is zero to ensure
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
3603 3603
3604 3604
3605 MaybeObject* Heap::LookupSingleCharacterStringFromCode(uint16_t code) { 3605 MaybeObject* Heap::LookupSingleCharacterStringFromCode(uint16_t code) {
3606 if (code <= String::kMaxAsciiCharCode) { 3606 if (code <= String::kMaxAsciiCharCode) {
3607 Object* value = single_character_string_cache()->get(code); 3607 Object* value = single_character_string_cache()->get(code);
3608 if (value != undefined_value()) return value; 3608 if (value != undefined_value()) return value;
3609 3609
3610 char buffer[1]; 3610 char buffer[1];
3611 buffer[0] = static_cast<char>(code); 3611 buffer[0] = static_cast<char>(code);
3612 Object* result; 3612 Object* result;
3613 MaybeObject* maybe_result = LookupSymbol(Vector<const char>(buffer, 1)); 3613 MaybeObject* maybe_result =
3614 LookupOneByteSymbol(Vector<const char>(buffer, 1));
3614 3615
3615 if (!maybe_result->ToObject(&result)) return maybe_result; 3616 if (!maybe_result->ToObject(&result)) return maybe_result;
3616 single_character_string_cache()->set(code, result); 3617 single_character_string_cache()->set(code, result);
3617 return result; 3618 return result;
3618 } 3619 }
3619 3620
3620 Object* result; 3621 Object* result;
3621 { MaybeObject* maybe_result = AllocateRawTwoByteString(1); 3622 { MaybeObject* maybe_result = AllocateRawTwoByteString(1);
3622 if (!maybe_result->ToObject(&result)) return maybe_result; 3623 if (!maybe_result->ToObject(&result)) return maybe_result;
3623 } 3624 }
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after
4454 // Allocate the backing storage for the properties. 4455 // Allocate the backing storage for the properties.
4455 int prop_size = map->unused_property_fields() - map->inobject_properties(); 4456 int prop_size = map->unused_property_fields() - map->inobject_properties();
4456 Object* properties; 4457 Object* properties;
4457 maybe = AllocateFixedArray(prop_size, TENURED); 4458 maybe = AllocateFixedArray(prop_size, TENURED);
4458 if (!maybe->ToObject(&properties)) return maybe; 4459 if (!maybe->ToObject(&properties)) return maybe;
4459 4460
4460 // Functions require some allocation, which might fail here. 4461 // Functions require some allocation, which might fail here.
4461 SharedFunctionInfo* shared = NULL; 4462 SharedFunctionInfo* shared = NULL;
4462 if (type == JS_FUNCTION_TYPE) { 4463 if (type == JS_FUNCTION_TYPE) {
4463 String* name; 4464 String* name;
4464 maybe = LookupAsciiSymbol("<freezing call trap>"); 4465 maybe = LookupOneByteSymbol(STATIC_ASCII_VECTOR("<freezing call trap>"));
4465 if (!maybe->To<String>(&name)) return maybe; 4466 if (!maybe->To<String>(&name)) return maybe;
4466 maybe = AllocateSharedFunctionInfo(name); 4467 maybe = AllocateSharedFunctionInfo(name);
4467 if (!maybe->To<SharedFunctionInfo>(&shared)) return maybe; 4468 if (!maybe->To<SharedFunctionInfo>(&shared)) return maybe;
4468 } 4469 }
4469 4470
4470 // Because of possible retries of this function after failure, 4471 // Because of possible retries of this function after failure,
4471 // we must NOT fail after this point, where we have changed the type! 4472 // we must NOT fail after this point, where we have changed the type!
4472 4473
4473 // Reset the map for the object. 4474 // Reset the map for the object.
4474 object->set_map(map); 4475 object->set_map(map);
(...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after
5547 VerifyPointersVisitor no_dirty_regions_visitor; 5548 VerifyPointersVisitor no_dirty_regions_visitor;
5548 old_data_space_->Verify(&no_dirty_regions_visitor); 5549 old_data_space_->Verify(&no_dirty_regions_visitor);
5549 code_space_->Verify(&no_dirty_regions_visitor); 5550 code_space_->Verify(&no_dirty_regions_visitor);
5550 cell_space_->Verify(&no_dirty_regions_visitor); 5551 cell_space_->Verify(&no_dirty_regions_visitor);
5551 5552
5552 lo_space_->Verify(); 5553 lo_space_->Verify();
5553 } 5554 }
5554 #endif 5555 #endif
5555 5556
5556 5557
5557 MaybeObject* Heap::LookupSymbol(Vector<const char> string) { 5558 MaybeObject* Heap::LookupUtf8Symbol(Vector<const char> string) {
5558 Object* symbol = NULL; 5559 Object* symbol = NULL;
5559 Object* new_table; 5560 Object* new_table;
5560 { MaybeObject* maybe_new_table = 5561 { MaybeObject* maybe_new_table =
5561 symbol_table()->LookupSymbol(string, &symbol); 5562 symbol_table()->LookupUtf8Symbol(string, &symbol);
5562 if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table; 5563 if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table;
5563 } 5564 }
5564 // Can't use set_symbol_table because SymbolTable::cast knows that 5565 // Can't use set_symbol_table because SymbolTable::cast knows that
5565 // SymbolTable is a singleton and checks for identity. 5566 // SymbolTable is a singleton and checks for identity.
5566 roots_[kSymbolTableRootIndex] = new_table; 5567 roots_[kSymbolTableRootIndex] = new_table;
5567 ASSERT(symbol != NULL); 5568 ASSERT(symbol != NULL);
5568 return symbol; 5569 return symbol;
5569 } 5570 }
5570 5571
5571 5572
5572 MaybeObject* Heap::LookupAsciiSymbol(Vector<const char> string) { 5573 MaybeObject* Heap::LookupOneByteSymbol(Vector<const char> string) {
5573 Object* symbol = NULL; 5574 Object* symbol = NULL;
5574 Object* new_table; 5575 Object* new_table;
5575 { MaybeObject* maybe_new_table = 5576 { MaybeObject* maybe_new_table =
5576 symbol_table()->LookupAsciiSymbol(string, &symbol); 5577 symbol_table()->LookupOneByteSymbol(string, &symbol);
5577 if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table; 5578 if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table;
5578 } 5579 }
5579 // Can't use set_symbol_table because SymbolTable::cast knows that 5580 // Can't use set_symbol_table because SymbolTable::cast knows that
5580 // SymbolTable is a singleton and checks for identity. 5581 // SymbolTable is a singleton and checks for identity.
5581 roots_[kSymbolTableRootIndex] = new_table; 5582 roots_[kSymbolTableRootIndex] = new_table;
5582 ASSERT(symbol != NULL); 5583 ASSERT(symbol != NULL);
5583 return symbol; 5584 return symbol;
5584 } 5585 }
5585 5586
5586 5587
5587 MaybeObject* Heap::LookupAsciiSymbol(Handle<SeqOneByteString> string, 5588 MaybeObject* Heap::LookupOneByteSymbol(Handle<SeqOneByteString> string,
5588 int from, 5589 int from,
5589 int length) { 5590 int length) {
5590 Object* symbol = NULL; 5591 Object* symbol = NULL;
5591 Object* new_table; 5592 Object* new_table;
5592 { MaybeObject* maybe_new_table = 5593 { MaybeObject* maybe_new_table =
5593 symbol_table()->LookupSubStringAsciiSymbol(string, 5594 symbol_table()->LookupSubStringOneByteSymbol(string,
5594 from, 5595 from,
5595 length, 5596 length,
5596 &symbol); 5597 &symbol);
5597 if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table; 5598 if (!maybe_new_table->ToObject(&new_table)) return maybe_new_table;
5598 } 5599 }
5599 // Can't use set_symbol_table because SymbolTable::cast knows that 5600 // Can't use set_symbol_table because SymbolTable::cast knows that
5600 // SymbolTable is a singleton and checks for identity. 5601 // SymbolTable is a singleton and checks for identity.
5601 roots_[kSymbolTableRootIndex] = new_table; 5602 roots_[kSymbolTableRootIndex] = new_table;
5602 ASSERT(symbol != NULL); 5603 ASSERT(symbol != NULL);
5603 return symbol; 5604 return symbol;
(...skipping 1802 matching lines...) Expand 10 before | Expand all | Expand 10 after
7406 static_cast<int>(object_sizes_last_time_[index])); 7407 static_cast<int>(object_sizes_last_time_[index]));
7407 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT) 7408 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT)
7408 #undef ADJUST_LAST_TIME_OBJECT_COUNT 7409 #undef ADJUST_LAST_TIME_OBJECT_COUNT
7409 7410
7410 memcpy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); 7411 memcpy(object_counts_last_time_, object_counts_, sizeof(object_counts_));
7411 memcpy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); 7412 memcpy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_));
7412 ClearObjectStats(); 7413 ClearObjectStats();
7413 } 7414 }
7414 7415
7415 } } // namespace v8::internal 7416 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/heap.h ('k') | src/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698