OLD | NEW |
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 1190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 Label* success) { | 1201 Label* success) { |
1202 Label miss; | 1202 Label miss; |
1203 | 1203 |
1204 Register reg = HandlerFrontendHeader(object, object_reg, holder, name, &miss); | 1204 Register reg = HandlerFrontendHeader(object, object_reg, holder, name, &miss); |
1205 | 1205 |
1206 HandlerFrontendFooter(name, success, &miss); | 1206 HandlerFrontendFooter(name, success, &miss); |
1207 return reg; | 1207 return reg; |
1208 } | 1208 } |
1209 | 1209 |
1210 | 1210 |
| 1211 void LoadStubCompiler::NonexistentHandlerFrontend( |
| 1212 Handle<JSObject> object, |
| 1213 Handle<JSObject> last, |
| 1214 Handle<Name> name, |
| 1215 Label* success, |
| 1216 Handle<GlobalObject> global) { |
| 1217 Label miss; |
| 1218 |
| 1219 Register holder = |
| 1220 HandlerFrontendHeader(object, receiver(), last, name, &miss); |
| 1221 |
| 1222 if (!last->HasFastProperties() && |
| 1223 !last->IsJSGlobalObject() && |
| 1224 !last->IsJSGlobalProxy()) { |
| 1225 if (!name->IsUniqueName()) { |
| 1226 ASSERT(name->IsString()); |
| 1227 name = factory()->InternalizeString(Handle<String>::cast(name)); |
| 1228 } |
| 1229 ASSERT(last->property_dictionary()->FindEntry(*name) == |
| 1230 NameDictionary::kNotFound); |
| 1231 GenerateDictionaryNegativeLookup(masm(), &miss, holder, name, |
| 1232 scratch2(), scratch3()); |
| 1233 } |
| 1234 |
| 1235 // If the last object in the prototype chain is a global object, |
| 1236 // check that the global property cell is empty. |
| 1237 if (!global.is_null()) { |
| 1238 GenerateCheckPropertyCell(masm(), global, name, scratch2(), &miss); |
| 1239 } |
| 1240 |
| 1241 HandlerFrontendFooter(name, success, &miss); |
| 1242 } |
| 1243 |
| 1244 |
1211 Handle<Code> LoadStubCompiler::CompileLoadField( | 1245 Handle<Code> LoadStubCompiler::CompileLoadField( |
1212 Handle<JSObject> object, | 1246 Handle<JSObject> object, |
1213 Handle<JSObject> holder, | 1247 Handle<JSObject> holder, |
1214 Handle<Name> name, | 1248 Handle<Name> name, |
1215 PropertyIndex field, | 1249 PropertyIndex field, |
1216 Representation representation) { | 1250 Representation representation) { |
1217 Label miss; | 1251 Label miss; |
1218 | 1252 |
1219 Register reg = HandlerFrontendHeader(object, receiver(), holder, name, &miss); | 1253 Register reg = HandlerFrontendHeader(object, receiver(), holder, name, &miss); |
1220 | 1254 |
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1817 Handle<FunctionTemplateInfo>( | 1851 Handle<FunctionTemplateInfo>( |
1818 FunctionTemplateInfo::cast(signature->receiver())); | 1852 FunctionTemplateInfo::cast(signature->receiver())); |
1819 } | 1853 } |
1820 } | 1854 } |
1821 | 1855 |
1822 is_simple_api_call_ = true; | 1856 is_simple_api_call_ = true; |
1823 } | 1857 } |
1824 | 1858 |
1825 | 1859 |
1826 } } // namespace v8::internal | 1860 } } // namespace v8::internal |
OLD | NEW |