| Index: src/ia32/full-codegen-ia32.cc
|
| diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc
|
| index aacaeeb6a6becee2adfab0f392d048d05fc9cb3f..c5f02555771d40be6fab33d71eb148fa82c4b501 100644
|
| --- a/src/ia32/full-codegen-ia32.cc
|
| +++ b/src/ia32/full-codegen-ia32.cc
|
| @@ -2221,25 +2221,42 @@ void FullCodeGenerator::EmitNamedPropertyLoad(Property* prop) {
|
| Literal* key = prop->key()->AsLiteral();
|
| DCHECK(!key->value()->IsSmi());
|
| __ mov(LoadIC::NameRegister(), Immediate(key->value()));
|
| + LoadIC::PropertyLookupMode property_lookup_mode =
|
| + prop->IsOwnProperty()
|
| + ? LoadIC::OWN_PROPERTY_LOOKUP
|
| + : LoadIC::NORMAL_LOOKUP;
|
| +
|
| + if (key->IsPropertyName() && (strcmp("xBase", key->AsPropertyName()->ToCString().get()) == 0)) {
|
| + printf("EmitNamedPropertyLoad:");
|
| + key->AsPropertyName()->Print();
|
| + printf(" property_lookup_mode = %d\n", property_lookup_mode);
|
| + }
|
| if (FLAG_vector_ics) {
|
| __ mov(LoadIC::SlotRegister(),
|
| Immediate(Smi::FromInt(prop->PropertyFeedbackSlot())));
|
| - CallLoadIC(NOT_CONTEXTUAL);
|
| + CallLoadIC(NOT_CONTEXTUAL, property_lookup_mode);
|
| } else {
|
| - CallLoadIC(NOT_CONTEXTUAL, prop->PropertyFeedbackId());
|
| + CallLoadIC(NOT_CONTEXTUAL,
|
| + property_lookup_mode,
|
| + prop->PropertyFeedbackId());
|
| }
|
| }
|
|
|
|
|
| void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) {
|
| SetSourcePosition(prop->position());
|
| - Handle<Code> ic = isolate()->builtins()->KeyedLoadIC_Initialize();
|
| +
|
| + LoadIC::PropertyLookupMode property_lookup_mode =
|
| + prop->IsOwnProperty()
|
| + ? LoadIC::OWN_PROPERTY_LOOKUP
|
| + : LoadIC::NORMAL_LOOKUP;
|
| +
|
| if (FLAG_vector_ics) {
|
| __ mov(LoadIC::SlotRegister(),
|
| Immediate(Smi::FromInt(prop->PropertyFeedbackSlot())));
|
| - CallIC(ic);
|
| + CallKeyedLoadIC(property_lookup_mode);
|
| } else {
|
| - CallIC(ic, prop->PropertyFeedbackId());
|
| + CallKeyedLoadIC(property_lookup_mode, prop->PropertyFeedbackId());
|
| }
|
| }
|
|
|
| @@ -4050,9 +4067,9 @@ void FullCodeGenerator::VisitCallRuntime(CallRuntime* expr) {
|
| if (FLAG_vector_ics) {
|
| __ mov(LoadIC::SlotRegister(),
|
| Immediate(Smi::FromInt(expr->CallRuntimeFeedbackSlot())));
|
| - CallLoadIC(NOT_CONTEXTUAL);
|
| + CallLoadIC(NOT_CONTEXTUAL, LoadIC::NORMAL_LOOKUP);
|
| } else {
|
| - CallLoadIC(NOT_CONTEXTUAL, expr->CallRuntimeFeedbackId());
|
| + CallLoadIC(NOT_CONTEXTUAL, LoadIC::NORMAL_LOOKUP, expr->CallRuntimeFeedbackId());
|
| }
|
|
|
| // Push the target function under the receiver.
|
|
|