Index: test/cctest/test-conversions.cc |
diff --git a/test/cctest/test-conversions.cc b/test/cctest/test-conversions.cc |
index 463a4abe3fa96bfbcec52a3b78378968e8575724..84bbc59d8a1627a9616f6f5c0eb320b8c7120264 100644 |
--- a/test/cctest/test-conversions.cc |
+++ b/test/cctest/test-conversions.cc |
@@ -406,3 +406,30 @@ TEST(SpecialIndexParsing) { |
CheckNonArrayIndex(false, "-9999999999999999"); |
CheckNonArrayIndex(false, "42949672964294967296429496729694966"); |
} |
+ |
+TEST(NoHandlesForTryNumberToSize) { |
+ i::Isolate* isolate = CcTest::i_isolate(); |
+ size_t result = 0; |
+ { |
+ SealHandleScope no_handles(isolate); |
+ Smi* smi = Smi::FromInt(1); |
+ CHECK(TryNumberToSize(isolate, smi, &result)); |
+ CHECK_EQ(result, 1); |
+ } |
+ result = 0; |
+ { |
+ HandleScope scope(isolate); |
+ Handle<HeapNumber> heap_number1 = isolate->factory()->NewHeapNumber(2.0); |
+ { |
+ SealHandleScope no_handles(isolate); |
+ CHECK(TryNumberToSize(isolate, *heap_number1, &result)); |
+ CHECK_EQ(result, 2); |
+ } |
+ Handle<HeapNumber> heap_number2 = isolate->factory()->NewHeapNumber( |
+ static_cast<double>(std::numeric_limits<size_t>::max()) + 10000.0); |
+ { |
+ SealHandleScope no_handles(isolate); |
+ CHECK(!TryNumberToSize(isolate, *heap_number2, &result)); |
+ } |
+ } |
+} |