Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1729)

Unified Diff: test/cctest/test-api.cc

Issue 16365008: ReturnValue::Set(uint32_t) is wrong (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: addressed comments Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/v8.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index d514b1ecdade7b5ecd5a2072a5befe76ad9c2573..22b93784bc0ef30910d091bbb19e8238eaa299e8 100755
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -1025,8 +1025,8 @@ template<typename T>
void FastReturnValueCallback(const v8::FunctionCallbackInfo<v8::Value>& info);
// constant return values
-static const int32_t kFastReturnValueInt32 = 471;
-static const uint32_t kFastReturnValueUint32 = 571;
+static int32_t fast_return_value_int32 = 471;
+static uint32_t fast_return_value_uint32 = 571;
static const double kFastReturnValueDouble = 2.7;
// variable return values
static bool fast_return_value_bool = false;
@@ -1037,14 +1037,14 @@ template<>
void FastReturnValueCallback<int32_t>(
const v8::FunctionCallbackInfo<v8::Value>& info) {
CheckReturnValue(info);
- info.GetReturnValue().Set(kFastReturnValueInt32);
+ info.GetReturnValue().Set(fast_return_value_int32);
}
template<>
void FastReturnValueCallback<uint32_t>(
const v8::FunctionCallbackInfo<v8::Value>& info) {
CheckReturnValue(info);
- info.GetReturnValue().Set(kFastReturnValueUint32);
+ info.GetReturnValue().Set(fast_return_value_uint32);
}
template<>
@@ -1093,16 +1093,29 @@ Handle<Value> TestFastReturnValues() {
}
THREADED_TEST(FastReturnValues) {
+ LocalContext env;
v8::HandleScope scope(v8::Isolate::GetCurrent());
v8::Handle<v8::Value> value;
- // check int_32
- value = TestFastReturnValues<int32_t>();
- CHECK(value->IsInt32());
- CHECK_EQ(kFastReturnValueInt32, value->Int32Value());
- // check uint32_t
- value = TestFastReturnValues<uint32_t>();
- CHECK(value->IsInt32());
- CHECK_EQ(kFastReturnValueUint32, value->Int32Value());
+ // check int32_t and uint32_t
+ int32_t int_values[] = {
+ 0, 234, -723,
+ i::Smi::kMinValue, i::Smi::kMaxValue, INT32_MAX, INT32_MIN
+ };
+ for (size_t i = 0; i < ARRAY_SIZE(int_values); i++) {
+ for (int modifier = -1; modifier <= 1; modifier++) {
+ int int_value = int_values[i] + modifier;
+ // check int32_t
+ fast_return_value_int32 = int_value;
+ value = TestFastReturnValues<int32_t>();
+ CHECK(value->IsInt32());
+ CHECK(fast_return_value_int32 == value->Int32Value());
+ // check uint32_t
+ fast_return_value_uint32 = static_cast<uint32_t>(int_value);
+ value = TestFastReturnValues<uint32_t>();
+ CHECK(value->IsUint32());
+ CHECK(fast_return_value_uint32 == value->Uint32Value());
+ }
+ }
// check double
value = TestFastReturnValues<double>();
CHECK(value->IsNumber());
« no previous file with comments | « include/v8.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698