Index: src/mips64/builtins-mips64.cc |
diff --git a/src/mips64/builtins-mips64.cc b/src/mips64/builtins-mips64.cc |
index 5c8879704fac07640b610e3af1f8b40b9dc1c1f8..a20e868d154ab1ec09ad228bf243e88a1e01855c 100644 |
--- a/src/mips64/builtins-mips64.cc |
+++ b/src/mips64/builtins-mips64.cc |
@@ -1751,6 +1751,21 @@ void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) { |
{ // Too few parameters: Actual < expected. |
__ bind(&too_few); |
+ |
+ // If the function is strong we need to throw an error. |
+ Label weak_function; |
+ __ ld(t1, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); |
+ __ lbu(t1, FieldMemOperand(t1, SharedFunctionInfo::kCompilerHintsOffset)); |
+ __ And(t2, t1, Operand(1 << SharedFunctionInfo::kStrongModeBitWithinByte)); |
+ __ Branch(&weak_function, eq, t2, Operand(zero_reg)); |
+ |
+ { |
+ FrameScope frame(masm, StackFrame::MANUAL); |
+ EnterArgumentsAdaptorFrame(masm); |
+ __ CallRuntime(Runtime::kThrowStrongModeTooFewArguments, 0); |
+ } |
+ |
+ __ bind(&weak_function); |
EnterArgumentsAdaptorFrame(masm); |
// Calculate copy start address into a0 and copy end address is fp. |