Index: src/builtins/mips64/builtins-mips64.cc |
diff --git a/src/builtins/mips64/builtins-mips64.cc b/src/builtins/mips64/builtins-mips64.cc |
index 07f3c71354814d8375f2267b27b1ed45a0337a6d..2af9aa4b7bfc3cf69d1d7734434167df195d86b7 100644 |
--- a/src/builtins/mips64/builtins-mips64.cc |
+++ b/src/builtins/mips64/builtins-mips64.cc |
@@ -576,8 +576,12 @@ void Generate_JSConstructStubHelper(MacroAssembler* masm, bool is_api_function, |
// Check that the result is not a Smi, indicating that the constructor result |
// from a derived class is neither undefined nor an Object. |
if (check_derived_construct) { |
- Label dont_throw; |
- __ JumpIfNotSmi(v0, &dont_throw); |
+ Label do_throw, dont_throw; |
+ __ JumpIfNotSmi(v0, &do_throw); |
+ __ GetObjectType(v0, a1, a3); |
+ STATIC_ASSERT(LAST_JS_RECEIVER_TYPE == LAST_TYPE); |
+ __ Branch(&dont_throw, greater_equal, a3, Operand(FIRST_JS_RECEIVER_TYPE)); |
+ __ bind(&do_throw); |
{ |
FrameScope scope(masm, StackFrame::INTERNAL); |
__ CallRuntime(Runtime::kThrowDerivedConstructorReturnedNonObject); |