Index: src/mips/full-codegen-mips.cc |
diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc |
index da3be4c23e62c0165bfe6b79f97f19d6486361ac..201742efec74a2c7e98d50c030645f794155be42 100644 |
--- a/src/mips/full-codegen-mips.cc |
+++ b/src/mips/full-codegen-mips.cc |
@@ -2403,9 +2403,22 @@ void FullCodeGenerator::VisitCallNew(CallNew* expr) { |
__ li(a0, Operand(arg_count)); |
__ lw(a1, MemOperand(sp, arg_count * kPointerSize)); |
- Handle<Code> construct_builtin = |
- isolate()->builtins()->JSConstructCall(); |
- __ Call(construct_builtin, RelocInfo::CONSTRUCT_CALL); |
+ // Record call targets in unoptimized code, but not in the snapshot. |
+ CallFunctionFlags flags; |
+ if (!Serializer::enabled()) { |
+ flags = RECORD_CALL_TARGET; |
+ Handle<Object> uninitialized = |
+ TypeFeedbackCells::UninitializedSentinel(isolate()); |
+ Handle<JSGlobalPropertyCell> cell = |
+ isolate()->factory()->NewJSGlobalPropertyCell(uninitialized); |
+ RecordTypeFeedbackCell(expr->id(), cell); |
+ __ li(a2, Operand(cell)); |
+ } else { |
+ flags = NO_CALL_FUNCTION_FLAGS; |
+ } |
+ |
+ CallConstructStub stub(flags); |
+ __ Call(stub.GetCode(), RelocInfo::CONSTRUCT_CALL); |
context()->Plug(v0); |
} |