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

Side by Side Diff: src/accessors.cc

Issue 461603002: Replace Strings with Names in load and store ICs. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: removing spurious formatting changes Created 6 years, 4 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/accessors.h ('k') | src/ic.h » ('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/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/compiler.h" 9 #include "src/compiler.h"
10 #include "src/contexts.h" 10 #include "src/contexts.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 static C* FindInstanceOf(Isolate* isolate, Object* obj) { 60 static C* FindInstanceOf(Isolate* isolate, Object* obj) {
61 for (PrototypeIterator iter(isolate, obj, 61 for (PrototypeIterator iter(isolate, obj,
62 PrototypeIterator::START_AT_RECEIVER); 62 PrototypeIterator::START_AT_RECEIVER);
63 !iter.IsAtEnd(); iter.Advance()) { 63 !iter.IsAtEnd(); iter.Advance()) {
64 if (Is<C>(iter.GetCurrent())) return C::cast(iter.GetCurrent()); 64 if (Is<C>(iter.GetCurrent())) return C::cast(iter.GetCurrent());
65 } 65 }
66 return NULL; 66 return NULL;
67 } 67 }
68 68
69 69
70 static V8_INLINE bool CheckForName(Handle<String> name, 70 static V8_INLINE bool CheckForName(Handle<Name> name,
71 Handle<String> property_name, 71 Handle<String> property_name,
72 int offset, 72 int offset,
73 int* object_offset) { 73 int* object_offset) {
74 if (String::Equals(name, property_name)) { 74 if (Name::Equals(name, property_name)) {
75 *object_offset = offset; 75 *object_offset = offset;
76 return true; 76 return true;
77 } 77 }
78 return false; 78 return false;
79 } 79 }
80 80
81 81
82 // Returns true for properties that are accessors to object fields. 82 // Returns true for properties that are accessors to object fields.
83 // If true, *object_offset contains offset of object field. 83 // If true, *object_offset contains offset of object field.
84 template <class T> 84 template <class T>
85 bool Accessors::IsJSObjectFieldAccessor(typename T::TypeHandle type, 85 bool Accessors::IsJSObjectFieldAccessor(typename T::TypeHandle type,
86 Handle<String> name, 86 Handle<Name> name,
87 int* object_offset) { 87 int* object_offset) {
88 Isolate* isolate = name->GetIsolate(); 88 Isolate* isolate = name->GetIsolate();
89 89
90 if (type->Is(T::String())) { 90 if (type->Is(T::String())) {
91 return CheckForName(name, isolate->factory()->length_string(), 91 return CheckForName(name, isolate->factory()->length_string(),
92 String::kLengthOffset, object_offset); 92 String::kLengthOffset, object_offset);
93 } 93 }
94 94
95 if (!type->IsClass()) return false; 95 if (!type->IsClass()) return false;
96 Handle<Map> map = type->AsClass()->Map(); 96 Handle<Map> map = type->AsClass()->Map();
(...skipping 22 matching lines...) Expand all
119 CheckForName(name, isolate->factory()->byte_offset_string(), 119 CheckForName(name, isolate->factory()->byte_offset_string(),
120 JSDataView::kByteOffsetOffset, object_offset); 120 JSDataView::kByteOffsetOffset, object_offset);
121 default: 121 default:
122 return false; 122 return false;
123 } 123 }
124 } 124 }
125 125
126 126
127 template 127 template
128 bool Accessors::IsJSObjectFieldAccessor<Type>(Type* type, 128 bool Accessors::IsJSObjectFieldAccessor<Type>(Type* type,
129 Handle<String> name, 129 Handle<Name> name,
130 int* object_offset); 130 int* object_offset);
131 131
132 132
133 template 133 template
134 bool Accessors::IsJSObjectFieldAccessor<HeapType>(Handle<HeapType> type, 134 bool Accessors::IsJSObjectFieldAccessor<HeapType>(Handle<HeapType> type,
135 Handle<String> name, 135 Handle<Name> name,
136 int* object_offset); 136 int* object_offset);
137 137
138 138
139 bool SetPropertyOnInstanceIfInherited( 139 bool SetPropertyOnInstanceIfInherited(
140 Isolate* isolate, const v8::PropertyCallbackInfo<void>& info, 140 Isolate* isolate, const v8::PropertyCallbackInfo<void>& info,
141 v8::Local<v8::String> name, Handle<Object> value) { 141 v8::Local<v8::String> name, Handle<Object> value) {
142 Handle<Object> holder = Utils::OpenHandle(*info.Holder()); 142 Handle<Object> holder = Utils::OpenHandle(*info.Holder());
143 Handle<Object> receiver = Utils::OpenHandle(*info.This()); 143 Handle<Object> receiver = Utils::OpenHandle(*info.This());
144 if (*holder == *receiver) return false; 144 if (*holder == *receiver) return false;
145 if (receiver->IsJSObject()) { 145 if (receiver->IsJSObject()) {
(...skipping 1208 matching lines...) Expand 10 before | Expand all | Expand 10 after
1354 info->set_data(Smi::FromInt(index)); 1354 info->set_data(Smi::FromInt(index));
1355 Handle<Object> getter = v8::FromCData(isolate, &ModuleGetExport); 1355 Handle<Object> getter = v8::FromCData(isolate, &ModuleGetExport);
1356 Handle<Object> setter = v8::FromCData(isolate, &ModuleSetExport); 1356 Handle<Object> setter = v8::FromCData(isolate, &ModuleSetExport);
1357 info->set_getter(*getter); 1357 info->set_getter(*getter);
1358 if (!(attributes & ReadOnly)) info->set_setter(*setter); 1358 if (!(attributes & ReadOnly)) info->set_setter(*setter);
1359 return info; 1359 return info;
1360 } 1360 }
1361 1361
1362 1362
1363 } } // namespace v8::internal 1363 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/accessors.h ('k') | src/ic.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698