Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 2964fbc86c6effb1c67ebf500f1f37288ea07922..386e9a4a754c771028aa3d0424e0cfd62fca42d4 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -3674,7 +3674,8 @@ void MacroAssembler::IsObjectJSStringType(Register object, |
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); |
@@ -3682,6 +3683,16 @@ void MacroAssembler::TryGetFunctionPrototype(Register function, |
GetObjectType(function, result, scratch); |
Branch(miss, ne, scratch, Operand(JS_FUNCTION_TYPE)); |
+ if (miss_on_bound_function) { |
+ lw(scratch, |
+ FieldMemOperand(function, JSFunction::kSharedFunctionInfoOffset)); |
+ lw(scratch, |
+ FieldMemOperand(scratch, SharedFunctionInfo::kCompilerHintsOffset)); |
+ And(scratch, scratch, |
+ Operand(Smi::FromInt(1 << SharedFunctionInfo::kBoundFunction))); |
+ Branch(miss, ne, scratch, Operand(zero_reg)); |
+ } |
+ |
// Make sure that the function has an instance prototype. |
Label non_instance; |
lbu(scratch, FieldMemOperand(result, Map::kBitFieldOffset)); |