Index: test/cctest/test-heap.cc |
diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc |
index 55bb466416fa352a6785cd79c757f272be04d0d1..c1f20f1f06eb185ab91fd521589832304e0b9d57 100644 |
--- a/test/cctest/test-heap.cc |
+++ b/test/cctest/test-heap.cc |
@@ -3889,4 +3889,27 @@ TEST(AddInstructionChangesNewSpacePromotion) { |
g->Call(global, 1, args1); |
heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); |
} |
-#endif |
+ |
+ |
+void OnFatalErrorExpectOOM(const char* location, const char* message) { |
+ // Exit with 0 if the location matches our expectation. |
+ exit(strcmp(location, "CALL_AND_RETRY_LAST")); |
+} |
+ |
+ |
+TEST(CEntryStubOOM) { |
+ i::FLAG_allow_natives_syntax = true; |
+ CcTest::InitializeVM(); |
+ v8::HandleScope scope(CcTest::isolate()); |
+ v8::V8::SetFatalErrorHandler(OnFatalErrorExpectOOM); |
+ |
+ v8::Handle<v8::Value> result = CompileRun( |
+ "%SetFlags('--gc-interval=1');" |
+ "var a = [];" |
+ "a.__proto__ = [];" |
+ "a.unshift(1)"); |
+ |
+ CHECK(result->IsNumber()); |
+} |
+ |
+#endif // DEBUG |