| Index: src/arm/macro-assembler-arm.cc
|
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
|
| index b274b2fe42aea26ad74784bab6a50931839ee45c..19b9aa4cdc0dde32c3e0f3c49984e632d1aa22e6 100644
|
| --- a/src/arm/macro-assembler-arm.cc
|
| +++ b/src/arm/macro-assembler-arm.cc
|
| @@ -2030,7 +2030,8 @@ void MacroAssembler::DispatchMap(Register obj,
|
| void MacroAssembler::TryGetFunctionPrototype(Register function,
|
| Register result,
|
| Register scratch,
|
| - Label* miss) {
|
| + Label* miss,
|
| + bool miss_on_bound_function) {
|
| // Check that the receiver isn't a smi.
|
| JumpIfSmi(function, miss);
|
|
|
| @@ -2038,6 +2039,15 @@ void MacroAssembler::TryGetFunctionPrototype(Register function,
|
| CompareObjectType(function, result, scratch, JS_FUNCTION_TYPE);
|
| b(ne, miss);
|
|
|
| + if (miss_on_bound_function) {
|
| + ldr(scratch,
|
| + FieldMemOperand(function, JSFunction::kSharedFunctionInfoOffset));
|
| + ldr(scratch,
|
| + FieldMemOperand(scratch, SharedFunctionInfo::kCompilerHintsOffset));
|
| + tst(scratch, Operand(1 << SharedFunctionInfo::kBoundFunction));
|
| + b(ne, miss);
|
| + }
|
| +
|
| // Make sure that the function has an instance prototype.
|
| Label non_instance;
|
| ldrb(scratch, FieldMemOperand(result, Map::kBitFieldOffset));
|
|
|