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

Unified Diff: src/ia32/full-codegen-ia32.cc

Issue 458813002: Prototype implementation of GET_OWN_PROPERTY intrinsic. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/ia32/ic-ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/ia32/ic-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698