From cb6e8b334d1715d9b497adcbea21422d51a3b651 Mon Sep 17 00:00:00 2001 From: "dslomov@chromium.org" Date: Mon, 18 Nov 2013 15:05:05 +0000 Subject: [PATCH] Revert "Fix data view accessors to throw execptions on offsets bigger than size_t." This reverts commit r17838 for breaking arm build. TBR=jkummerow@chromium.org Review URL: https://codereview.chromium.org/75213005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/runtime.cc | 10 ++------- src/v8conversions.h | 35 ++++++++++-------------------- test/mjsunit/harmony/dataview-accessors.js | 12 ---------- 3 files changed, 13 insertions(+), 44 deletions(-) diff --git a/src/runtime.cc b/src/runtime.cc index 449d8a3..28506dd 100644 --- a/src/runtime.cc +++ b/src/runtime.cc @@ -1212,10 +1212,7 @@ inline static bool DataViewGetValue( Handle byte_offset_obj, bool is_little_endian, T* result) { - size_t byte_offset = 0; - if (!TryNumberToSize(isolate, *byte_offset_obj, &byte_offset)) { - return false; - } + size_t byte_offset = NumberToSize(isolate, *byte_offset_obj); Handle buffer(JSArrayBuffer::cast(data_view->buffer())); size_t data_view_byte_offset = @@ -1256,10 +1253,7 @@ static bool DataViewSetValue( Handle byte_offset_obj, bool is_little_endian, T data) { - size_t byte_offset = 0; - if (!TryNumberToSize(isolate, *byte_offset_obj, &byte_offset)) { - return false; - } + size_t byte_offset = NumberToSize(isolate, *byte_offset_obj); Handle buffer(JSArrayBuffer::cast(data_view->buffer())); size_t data_view_byte_offset = diff --git a/src/v8conversions.h b/src/v8conversions.h index 17c0506..d3da9f8 100644 --- a/src/v8conversions.h +++ b/src/v8conversions.h @@ -55,39 +55,26 @@ double StringToDouble(UnicodeCache* unicode_cache, // Converts a string into an integer. double StringToInt(UnicodeCache* unicode_cache, String* str, int radix); -inline bool TryNumberToSize(Isolate* isolate, - Object* number, size_t* result) { +// Converts a number into size_t. +inline size_t NumberToSize(Isolate* isolate, + Object* number) { SealHandleScope shs(isolate); if (number->IsSmi()) { int value = Smi::cast(number)->value(); - ASSERT(Smi::kMaxValue <= std::numeric_limits::max()); - if (value >= 0) { - *result = static_cast(value); - return true; - } - return false; + CHECK_GE(value, 0); + ASSERT( + static_cast(Smi::kMaxValue) + <= std::numeric_limits::max()); + return static_cast(value); } else { ASSERT(number->IsHeapNumber()); double value = HeapNumber::cast(number)->value(); - if (value >= 0 && - value <= std::numeric_limits::max()) { - *result = static_cast(value); - return true; - } else { - return false; - } + CHECK(value >= 0 && + value <= std::numeric_limits::max()); + return static_cast(value); } } -// Converts a number into size_t. -inline size_t NumberToSize(Isolate* isolate, - Object* number) { - size_t result; - bool is_valid = TryNumberToSize(isolate, number, &result); - CHECK(is_valid); - return result; -} - } } // namespace v8::internal #endif // V8_V8CONVERSIONS_H_ diff --git a/test/mjsunit/harmony/dataview-accessors.js b/test/mjsunit/harmony/dataview-accessors.js index c54f8cc..7b03da7 100644 --- a/test/mjsunit/harmony/dataview-accessors.js +++ b/test/mjsunit/harmony/dataview-accessors.js @@ -114,13 +114,11 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Int8", undefined, 0); test(isTestingGet, "Int8", 8, -128); test(isTestingGet, "Int8", 15, -1); - test(isTestingGet, "Int8", 1e12, undefined); test(isTestingGet, "Uint8", 0, 0); test(isTestingGet, "Uint8", undefined, 0); test(isTestingGet, "Uint8", 8, 128); test(isTestingGet, "Uint8", 15, 255); - test(isTestingGet, "Uint8", 1e12, undefined); // Little endian. test(isTestingGet, "Int16", 0, 256, true); @@ -128,7 +126,6 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Int16", 5, 26213, true); test(isTestingGet, "Int16", 9, -32127, true); test(isTestingGet, "Int16", 14, -2, true); - test(isTestingGet, "Int16", 1e12, undefined, true); // Big endian. test(isTestingGet, "Int16", 0, 1); @@ -136,7 +133,6 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Int16", 5, 25958); test(isTestingGet, "Int16", 9, -32382); test(isTestingGet, "Int16", 14, -257); - test(isTestingGet, "Int16", 1e12, undefined); // Little endian. test(isTestingGet, "Uint16", 0, 256, true); @@ -144,7 +140,6 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Uint16", 5, 26213, true); test(isTestingGet, "Uint16", 9, 33409, true); test(isTestingGet, "Uint16", 14, 65534, true); - test(isTestingGet, "Uint16", 1e12, undefined, true); // Big endian. test(isTestingGet, "Uint16", 0, 1); @@ -152,7 +147,6 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Uint16", 5, 25958); test(isTestingGet, "Uint16", 9, 33154); test(isTestingGet, "Uint16", 14, 65279); - test(isTestingGet, "Uint16", 1e12, undefined); // Little endian. test(isTestingGet, "Int32", 0, 50462976, true); @@ -161,7 +155,6 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Int32", 6, -2122291354, true); test(isTestingGet, "Int32", 9, -58490239, true); test(isTestingGet, "Int32", 12,-66052, true); - test(isTestingGet, "Int32", 1e12, undefined, true); // Big endian. test(isTestingGet, "Int32", 0, 66051); @@ -170,7 +163,6 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Int32", 6, 1718059137); test(isTestingGet, "Int32", 9, -2122152964); test(isTestingGet, "Int32", 12, -50462977); - test(isTestingGet, "Int32", 1e12, undefined); // Little endian. test(isTestingGet, "Uint32", 0, 50462976, true); @@ -179,7 +171,6 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Uint32", 6, 2172675942, true); test(isTestingGet, "Uint32", 9, 4236477057, true); test(isTestingGet, "Uint32", 12,4294901244, true); - test(isTestingGet, "Uint32", 1e12, undefined, true); // Big endian. test(isTestingGet, "Uint32", 0, 66051); @@ -188,7 +179,6 @@ function runIntegerTestCases(isTestingGet, array, start, length) { test(isTestingGet, "Uint32", 6, 1718059137); test(isTestingGet, "Uint32", 9, 2172814332); test(isTestingGet, "Uint32", 12, 4244504319); - test(isTestingGet, "Uint32", 1e12, undefined); } function testFloat(isTestingGet, func, array, start, expected) { @@ -202,7 +192,6 @@ function testFloat(isTestingGet, func, array, start, expected) { test(isTestingGet, func, 7, expected, true); createDataView(array, 10, true, start); test(isTestingGet, func, 10, expected, true); - test(isTestingGet, func, 1e12, undefined, true); // Big endian. createDataView(array, 0, false); @@ -214,7 +203,6 @@ function testFloat(isTestingGet, func, array, start, expected) { test(isTestingGet, func, 7, expected, false); createDataView(array, 10, false); test(isTestingGet, func, 10, expected, false); - test(isTestingGet, func, 1e12, undefined, false); } function runFloatTestCases(isTestingGet, start) { -- 2.7.4