Index: src/arm/builtins-arm.cc |
diff --git a/src/arm/builtins-arm.cc b/src/arm/builtins-arm.cc |
index 3dd61b00a4b7e0f57f94e4f5afb58345a0fd1649..7070ce7e27c50cf074fc209b76bb1ac26420ced2 100644 |
--- a/src/arm/builtins-arm.cc |
+++ b/src/arm/builtins-arm.cc |
@@ -1722,6 +1722,22 @@ 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; |
+ __ ldr(r4, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); |
+ __ ldr(r4, FieldMemOperand(r4, SharedFunctionInfo::kCompilerHintsOffset)); |
+ __ tst(r4, Operand(1 << (SharedFunctionInfo::kStrongModeFunction + |
+ kSmiTagSize))); |
+ __ b(eq, &weak_function); |
+ |
+ { |
+ FrameScope frame(masm, StackFrame::MANUAL); |
+ EnterArgumentsAdaptorFrame(masm); |
+ __ CallRuntime(Runtime::kThrowStrongModeTooFewArguments, 0); |
+ } |
+ |
+ __ bind(&weak_function); |
EnterArgumentsAdaptorFrame(masm); |
// Calculate copy start address into r0 and copy end address is fp. |