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

Side by Side Diff: src/interface.cc

Issue 345513003: Revert "Parser: Delay internalizing strings and values." (r21841) (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 months 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/interface.h ('k') | src/objects.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 // 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 "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/interface.h" 7 #include "src/interface.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
11 11
12 static bool Match(void* key1, void* key2) {
13 String* name1 = *static_cast<String**>(key1);
14 String* name2 = *static_cast<String**>(key2);
15 ASSERT(name1->IsInternalizedString());
16 ASSERT(name2->IsInternalizedString());
17 return name1 == name2;
18 }
19
20
12 Interface* Interface::Lookup(Handle<String> name, Zone* zone) { 21 Interface* Interface::Lookup(Handle<String> name, Zone* zone) {
13 ASSERT(IsModule()); 22 ASSERT(IsModule());
14 ZoneHashMap* map = Chase()->exports_; 23 ZoneHashMap* map = Chase()->exports_;
15 if (map == NULL) return NULL; 24 if (map == NULL) return NULL;
16 ZoneAllocationPolicy allocator(zone); 25 ZoneAllocationPolicy allocator(zone);
17 ZoneHashMap::Entry* p = map->Lookup(name.location(), name->Hash(), false, 26 ZoneHashMap::Entry* p = map->Lookup(name.location(), name->Hash(), false,
18 allocator); 27 allocator);
19 if (p == NULL) return NULL; 28 if (p == NULL) return NULL;
20 ASSERT(*static_cast<String**>(p->key) == *name); 29 ASSERT(*static_cast<String**>(p->key) == *name);
21 ASSERT(p->value != NULL); 30 ASSERT(p->value != NULL);
22 return static_cast<Interface*>(p->value); 31 return static_cast<Interface*>(p->value);
23 } 32 }
24 33
25 34
26 #ifdef DEBUG 35 #ifdef DEBUG
27 // Current nesting depth for debug output. 36 // Current nesting depth for debug output.
28 class Nesting { 37 class Nesting {
29 public: 38 public:
30 Nesting() { current_ += 2; } 39 Nesting() { current_ += 2; }
31 ~Nesting() { current_ -= 2; } 40 ~Nesting() { current_ -= 2; }
32 static int current() { return current_; } 41 static int current() { return current_; }
33 private: 42 private:
34 static int current_; 43 static int current_;
35 }; 44 };
36 45
37 int Nesting::current_ = 0; 46 int Nesting::current_ = 0;
38 #endif 47 #endif
39 48
40 49
41 void Interface::DoAdd(const void* name, uint32_t hash, Interface* interface, 50 void Interface::DoAdd(
42 Zone* zone, bool* ok) { 51 void* name, uint32_t hash, Interface* interface, Zone* zone, bool* ok) {
43 MakeModule(ok); 52 MakeModule(ok);
44 if (!*ok) return; 53 if (!*ok) return;
45 54
46 #ifdef DEBUG 55 #ifdef DEBUG
47 if (FLAG_print_interface_details) { 56 if (FLAG_print_interface_details) {
48 PrintF("%*s# Adding...\n", Nesting::current(), ""); 57 PrintF("%*s# Adding...\n", Nesting::current(), "");
49 PrintF("%*sthis = ", Nesting::current(), ""); 58 PrintF("%*sthis = ", Nesting::current(), "");
50 this->Print(Nesting::current()); 59 this->Print(Nesting::current());
51 const AstString* symbol = static_cast<const AstString*>(name); 60 PrintF("%*s%s : ", Nesting::current(), "",
52 PrintF("%*s%.*s : ", Nesting::current(), "", symbol->length(), 61 (*static_cast<String**>(name))->ToAsciiArray());
53 symbol->raw_data());
54 interface->Print(Nesting::current()); 62 interface->Print(Nesting::current());
55 } 63 }
56 #endif 64 #endif
57 65
58 ZoneHashMap** map = &Chase()->exports_; 66 ZoneHashMap** map = &Chase()->exports_;
59 ZoneAllocationPolicy allocator(zone); 67 ZoneAllocationPolicy allocator(zone);
60 68
61 if (*map == NULL) { 69 if (*map == NULL) {
62 *map = new(zone->New(sizeof(ZoneHashMap))) 70 *map = new(zone->New(sizeof(ZoneHashMap)))
63 ZoneHashMap(ZoneHashMap::PointersMatch, 71 ZoneHashMap(Match, ZoneHashMap::kDefaultHashMapCapacity, allocator);
64 ZoneHashMap::kDefaultHashMapCapacity, allocator);
65 } 72 }
66 73
67 ZoneHashMap::Entry* p = 74 ZoneHashMap::Entry* p = (*map)->Lookup(name, hash, !IsFrozen(), allocator);
68 (*map)->Lookup(const_cast<void*>(name), hash, !IsFrozen(), allocator);
69 if (p == NULL) { 75 if (p == NULL) {
70 // This didn't have name but was frozen already, that's an error. 76 // This didn't have name but was frozen already, that's an error.
71 *ok = false; 77 *ok = false;
72 } else if (p->value == NULL) { 78 } else if (p->value == NULL) {
73 p->value = interface; 79 p->value = interface;
74 } else { 80 } else {
75 #ifdef DEBUG 81 #ifdef DEBUG
76 Nesting nested; 82 Nesting nested;
77 #endif 83 #endif
78 static_cast<Interface*>(p->value)->Unify(interface, zone, ok); 84 static_cast<Interface*>(p->value)->Unify(interface, zone, ok);
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 PrintF("%*s%s : ", n0 + 2, "", name->ToAsciiArray()); 213 PrintF("%*s%s : ", n0 + 2, "", name->ToAsciiArray());
208 interface->Print(n0 + 2); 214 interface->Print(n0 + 2);
209 } 215 }
210 PrintF("%*s}\n", n0, ""); 216 PrintF("%*s}\n", n0, "");
211 } 217 }
212 } 218 }
213 } 219 }
214 #endif 220 #endif
215 221
216 } } // namespace v8::internal 222 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/interface.h ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698