Lines Matching defs:lookup

228         // If there is a getter, return; otherwise loop to perform the lookup.
612 // Named lookup in the object.
859 void LoadIC::UpdateCaches(LookupIterator* lookup) {
864 TRACE_IC("LoadIC", lookup->name());
869 if (lookup->state() == LookupIterator::JSPROXY ||
870 lookup->state() == LookupIterator::ACCESS_CHECK) {
872 } else if (!lookup->IsFound()) {
874 code = NamedLoadHandlerCompiler::ComputeLoadNonexistent(lookup->name(),
882 code = ComputeHandler(lookup);
885 PatchCache(lookup->name(), code);
886 TRACE_IC("LoadIC", lookup->name());
897 Handle<Code> IC::ComputeHandler(LookupIterator* lookup, Handle<Object> value) {
899 lookup->GetReceiver().is_identical_to(lookup->GetHolder<JSObject>());
905 lookup->name(), stub_holder_map, kind(), flag,
906 lookup->is_dictionary_holder() ? Code::NORMAL : Code::FAST);
918 if (state() == MEGAMORPHIC && lookup->GetReceiver()->IsHeapObject()) {
919 Map* map = Handle<HeapObject>::cast(lookup->GetReceiver())->map();
921 isolate()->stub_cache()->Get(*lookup->name(), map, code->flags());
929 code = CompileHandler(lookup, value, flag);
940 Map::UpdateCodeCache(stub_holder_map, lookup->name(), code);
947 Handle<Code> LoadIC::CompileHandler(LookupIterator* lookup,
950 Handle<Object> receiver = lookup->GetReceiver();
952 Name::Equals(isolate()->factory()->length_string(), lookup->name())) {
958 Name::Equals(isolate()->factory()->length_string(), lookup->name())) {
965 Name::Equals(isolate()->factory()->prototype_string(), lookup->name()) &&
976 Handle<JSObject> holder = lookup->GetHolder<JSObject>();
978 switch (lookup->state()) {
983 // Perform a lookup behind the interceptor. Copy the LookupIterator since
985 LookupIterator it = *lookup;
997 if (Accessors::IsJSObjectFieldAccessor<HeapType>(type, lookup->name(),
1005 Handle<Object> accessors = lookup->GetAccessors();
1017 return compiler.CompileLoadCallback(lookup->name(), info);
1036 return compiler.CompileLoadCallback(lookup->name(),
1039 return compiler.CompileLoadViaGetter(lookup->name(), function);
1047 if (lookup->is_dictionary_holder()) {
1052 Handle<PropertyCell> cell = lookup->GetPropertyCell();
1054 cell, lookup->name(), lookup->IsConfigurable());
1059 Map::UpdateCodeCache(stub_holder_map, lookup->name(), code);
1071 if (lookup->property_details().type() == FIELD) {
1072 FieldIndex field = lookup->GetFieldIndex();
1078 return compiler.CompileLoadField(lookup->name(), field);
1082 DCHECK(lookup->property_details().type() == CONSTANT);
1084 LoadConstantStub stub(isolate(), lookup->GetConstantIndex());
1089 return compiler.CompileLoadConstant(lookup->name(),
1090 lookup->GetConstantIndex());
1402 void StoreIC::UpdateCaches(LookupIterator* lookup, Handle<Object> value,
1408 TRACE_IC("StoreIC", lookup->name());
1412 bool use_ic = LookupForWrite(lookup, value, store_mode);
1416 Handle<Code> code = use_ic ? ComputeHandler(lookup, value) : slow_stub();
1418 PatchCache(lookup->name(), code);
1419 TRACE_IC("StoreIC", lookup->name());
1423 Handle<Code> StoreIC::CompileHandler(LookupIterator* lookup,
1426 DCHECK_NE(LookupIterator::JSPROXY, lookup->state());
1429 Handle<JSObject> receiver = Handle<JSObject>::cast(lookup->GetReceiver());
1430 Handle<JSObject> holder = lookup->GetHolder<JSObject>();
1433 switch (lookup->state()) {
1435 Handle<Map> transition = lookup->transition_map();
1442 DCHECK(lookup->IsCacheableTransition());
1444 return compiler.CompileStoreTransition(transition, lookup->name());
1450 return compiler.CompileStoreInterceptor(lookup->name());
1458 Handle<Object> accessors = lookup->GetAccessors();
1472 return compiler.CompileStoreCallback(receiver, lookup->name(), info);
1485 return compiler.CompileStoreCallback(receiver, lookup->name(),
1488 return compiler.CompileStoreViaSetter(receiver, lookup->name(),
1498 if (lookup->is_dictionary_holder()) {
1500 Handle<PropertyCell> cell = lookup->GetPropertyCell();
1507 HeapObject::UpdateMapCodeCache(receiver, lookup->name(), code);
1515 if (lookup->property_details().type() == FIELD) {
1517 if (lookup->representation().IsHeapObject()) {
1519 Handle<HeapType> field_type = lookup->GetFieldType();
1524 StoreFieldStub stub(isolate(), lookup->GetFieldIndex(),
1525 lookup->representation());
1529 return compiler.CompileStoreField(lookup);
1533 DCHECK(lookup->property_details().type() == CONSTANT);
2603 * lookup if interceptor failed.