Index: src/ia32/full-codegen-ia32.cc |
diff --git a/src/ia32/full-codegen-ia32.cc b/src/ia32/full-codegen-ia32.cc |
index f27dd21d5a13fbb541c472ebf1c5d31f4246570b..1fd2cb90ca0801e4124404f90f5c20a9eb374d93 100644 |
--- a/src/ia32/full-codegen-ia32.cc |
+++ b/src/ia32/full-codegen-ia32.cc |
@@ -2166,7 +2166,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
__ mov(load_receiver, Operand(esp, kPointerSize)); |
__ mov(LoadDescriptor::SlotRegister(), |
Immediate(SmiFromSlot(expr->KeyedLoadFeedbackSlot()))); |
- Handle<Code> ic = CodeFactory::KeyedLoadIC(isolate()).code(); |
+ Handle<Code> ic = CodeFactory::KeyedLoadIC(isolate(), SLOPPY).code(); |
CallIC(ic, TypeFeedbackId::None()); |
__ mov(edi, eax); |
__ mov(Operand(esp, 2 * kPointerSize), edi); |
@@ -2335,7 +2335,7 @@ void FullCodeGenerator::EmitNamedPropertyLoad(Property* prop) { |
__ mov(LoadDescriptor::NameRegister(), Immediate(key->value())); |
__ mov(LoadDescriptor::SlotRegister(), |
Immediate(SmiFromSlot(prop->PropertyFeedbackSlot()))); |
- CallLoadIC(NOT_CONTEXTUAL); |
+ CallLoadIC(NOT_CONTEXTUAL, language_mode()); |
} |
@@ -2347,13 +2347,14 @@ void FullCodeGenerator::EmitNamedSuperPropertyLoad(Property* prop) { |
DCHECK(prop->IsSuperAccess()); |
__ push(Immediate(key->value())); |
- __ CallRuntime(Runtime::kLoadFromSuper, 3); |
+ __ push(Immediate(Smi::FromInt(language_mode()))); |
+ __ CallRuntime(Runtime::kLoadFromSuper, 4); |
} |
void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) { |
SetSourcePosition(prop->position()); |
- Handle<Code> ic = CodeFactory::KeyedLoadIC(isolate()).code(); |
+ Handle<Code> ic = CodeFactory::KeyedLoadIC(isolate(), language_mode()).code(); |
__ mov(LoadDescriptor::SlotRegister(), |
Immediate(SmiFromSlot(prop->PropertyFeedbackSlot()))); |
CallIC(ic); |
@@ -2362,9 +2363,10 @@ void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) { |
void FullCodeGenerator::EmitKeyedSuperPropertyLoad(Property* prop) { |
// Stack: receiver, home_object, key. |
+ __ push(Immediate(Smi::FromInt(language_mode()))); |
SetSourcePosition(prop->position()); |
- __ CallRuntime(Runtime::kLoadKeyedFromSuper, 3); |
+ __ CallRuntime(Runtime::kLoadKeyedFromSuper, 4); |
} |
@@ -2894,13 +2896,15 @@ void FullCodeGenerator::EmitSuperCallWithLoadIC(Call* expr) { |
__ push(eax); |
__ push(Operand(esp, kPointerSize * 2)); |
__ push(Immediate(key->value())); |
+ __ push(Immediate(Smi::FromInt(language_mode()))); |
// Stack here: |
// - home_object |
// - this (receiver) |
// - this (receiver) <-- LoadFromSuper will pop here and below. |
// - home_object |
// - key |
- __ CallRuntime(Runtime::kLoadFromSuper, 3); |
+ // - language_mode |
+ __ CallRuntime(Runtime::kLoadFromSuper, 4); |
// Replace home_object with target function. |
__ mov(Operand(esp, kPointerSize), eax); |
@@ -2950,13 +2954,15 @@ void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { |
__ push(eax); |
__ push(Operand(esp, kPointerSize * 2)); |
VisitForStackValue(prop->key()); |
+ __ push(Immediate(Smi::FromInt(language_mode()))); |
// Stack here: |
// - home_object |
// - this (receiver) |
// - this (receiver) <-- LoadKeyedFromSuper will pop here and below. |
// - home_object |
// - key |
- __ CallRuntime(Runtime::kLoadKeyedFromSuper, 3); |
+ // - language_mode |
+ __ CallRuntime(Runtime::kLoadKeyedFromSuper, 4); |
// Replace home_object with target function. |
__ mov(Operand(esp, kPointerSize), eax); |