Index: src/mips64/full-codegen-mips64.cc |
diff --git a/src/mips64/full-codegen-mips64.cc b/src/mips64/full-codegen-mips64.cc |
index 62991c9eaac39b7041569835f2d3bdbcc9d8aec4..65bda07111e6dc349f6c4a5b92ad133e0979589a 100644 |
--- a/src/mips64/full-codegen-mips64.cc |
+++ b/src/mips64/full-codegen-mips64.cc |
@@ -2236,7 +2236,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
__ ld(load_name, MemOperand(sp, 2 * kPointerSize)); |
__ li(LoadDescriptor::SlotRegister(), |
Operand(SmiFromSlot(expr->KeyedLoadFeedbackSlot()))); |
- Handle<Code> ic = CodeFactory::KeyedLoadIC(isolate()).code(); |
+ Handle<Code> ic = CodeFactory::KeyedLoadIC(isolate(), SLOPPY).code(); |
CallIC(ic, TypeFeedbackId::None()); |
__ mov(a0, v0); |
__ mov(a1, a0); |
@@ -2409,7 +2409,7 @@ void FullCodeGenerator::EmitNamedPropertyLoad(Property* prop) { |
__ li(LoadDescriptor::NameRegister(), Operand(key->value())); |
__ li(LoadDescriptor::SlotRegister(), |
Operand(SmiFromSlot(prop->PropertyFeedbackSlot()))); |
- CallLoadIC(NOT_CONTEXTUAL); |
+ CallLoadIC(NOT_CONTEXTUAL, language_mode()); |
} |
@@ -2421,14 +2421,15 @@ void FullCodeGenerator::EmitNamedSuperPropertyLoad(Property* prop) { |
DCHECK(prop->IsSuperAccess()); |
__ Push(key->value()); |
- __ CallRuntime(Runtime::kLoadFromSuper, 3); |
+ __ Push(Smi::FromInt(language_mode())); |
+ __ CallRuntime(Runtime::kLoadFromSuper, 4); |
} |
void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) { |
SetSourcePosition(prop->position()); |
// Call keyed load IC. It has register arguments receiver and key. |
- Handle<Code> ic = CodeFactory::KeyedLoadIC(isolate()).code(); |
+ Handle<Code> ic = CodeFactory::KeyedLoadIC(isolate(), language_mode()).code(); |
__ li(LoadDescriptor::SlotRegister(), |
Operand(SmiFromSlot(prop->PropertyFeedbackSlot()))); |
CallIC(ic); |
@@ -2437,9 +2438,10 @@ void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) { |
void FullCodeGenerator::EmitKeyedSuperPropertyLoad(Property* prop) { |
// Stack: receiver, home_object, key. |
+ __ Push(Smi::FromInt(language_mode())); |
SetSourcePosition(prop->position()); |
- __ CallRuntime(Runtime::kLoadKeyedFromSuper, 3); |
+ __ CallRuntime(Runtime::kLoadKeyedFromSuper, 4); |
} |
@@ -2981,6 +2983,7 @@ void FullCodeGenerator::EmitSuperCallWithLoadIC(Call* expr) { |
VisitForAccumulatorValue(super_ref->this_var()); |
__ Push(scratch, v0, v0, scratch); |
__ Push(key->value()); |
+ __ Push(Smi::FromInt(language_mode())); |
// Stack here: |
// - home_object |
@@ -2988,7 +2991,8 @@ void FullCodeGenerator::EmitSuperCallWithLoadIC(Call* expr) { |
// - 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. |
__ sd(v0, MemOperand(sp, kPointerSize)); |
@@ -3039,6 +3043,7 @@ void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { |
VisitForAccumulatorValue(super_ref->this_var()); |
__ Push(scratch, v0, v0, scratch); |
VisitForStackValue(prop->key()); |
+ __ Push(Smi::FromInt(language_mode())); |
// Stack here: |
// - home_object |
@@ -3046,7 +3051,8 @@ void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { |
// - 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. |
__ sd(v0, MemOperand(sp, kPointerSize)); |