| Index: src/arm64/macro-assembler-arm64.cc | 
| diff --git a/src/arm64/macro-assembler-arm64.cc b/src/arm64/macro-assembler-arm64.cc | 
| index ff5efd531bdd90a3dda059d39fa9139a4a1bc23d..083f7747e8426bdd0db2c10e97fbe2c18d04b9ca 100644 | 
| --- a/src/arm64/macro-assembler-arm64.cc | 
| +++ b/src/arm64/macro-assembler-arm64.cc | 
| @@ -3816,13 +3816,14 @@ void MacroAssembler::TryGetFunctionPrototype(Register function, | 
| BoundFunctionAction action) { | 
| ASSERT(!AreAliased(function, result, scratch)); | 
|  | 
| -  // Check that the receiver isn't a smi. | 
| -  JumpIfSmi(function, miss); | 
| +  Label non_instance; | 
| +  if (action == kMissOnBoundFunction) { | 
| +    // Check that the receiver isn't a smi. | 
| +    JumpIfSmi(function, miss); | 
|  | 
| -  // Check that the function really is a function. Load map into result reg. | 
| -  JumpIfNotObjectType(function, result, scratch, JS_FUNCTION_TYPE, miss); | 
| +    // Check that the function really is a function. Load map into result reg. | 
| +    JumpIfNotObjectType(function, result, scratch, JS_FUNCTION_TYPE, miss); | 
|  | 
| -  if (action == kMissOnBoundFunction) { | 
| Register scratch_w = scratch.W(); | 
| Ldr(scratch, | 
| FieldMemOperand(function, JSFunction::kSharedFunctionInfoOffset)); | 
| @@ -3831,12 +3832,11 @@ void MacroAssembler::TryGetFunctionPrototype(Register function, | 
| Ldr(scratch_w, | 
| FieldMemOperand(scratch, SharedFunctionInfo::kCompilerHintsOffset)); | 
| Tbnz(scratch, SharedFunctionInfo::kBoundFunction, miss); | 
| -  } | 
|  | 
| -  // Make sure that the function has an instance prototype. | 
| -  Label non_instance; | 
| -  Ldrb(scratch, FieldMemOperand(result, Map::kBitFieldOffset)); | 
| -  Tbnz(scratch, Map::kHasNonInstancePrototype, &non_instance); | 
| +    // Make sure that the function has an instance prototype. | 
| +    Ldrb(scratch, FieldMemOperand(result, Map::kBitFieldOffset)); | 
| +    Tbnz(scratch, Map::kHasNonInstancePrototype, &non_instance); | 
| +  } | 
|  | 
| // Get the prototype or initial map from the function. | 
| Ldr(result, | 
| @@ -3853,12 +3853,15 @@ void MacroAssembler::TryGetFunctionPrototype(Register function, | 
|  | 
| // Get the prototype from the initial map. | 
| Ldr(result, FieldMemOperand(result, Map::kPrototypeOffset)); | 
| -  B(&done); | 
|  | 
| -  // Non-instance prototype: fetch prototype from constructor field in initial | 
| -  // map. | 
| -  Bind(&non_instance); | 
| -  Ldr(result, FieldMemOperand(result, Map::kConstructorOffset)); | 
| +  if (action == kMissOnBoundFunction) { | 
| +    B(&done); | 
| + | 
| +    // Non-instance prototype: fetch prototype from constructor field in initial | 
| +    // map. | 
| +    Bind(&non_instance); | 
| +    Ldr(result, FieldMemOperand(result, Map::kConstructorOffset)); | 
| +  } | 
|  | 
| // All done. | 
| Bind(&done); | 
|  |