< prev index next >

src/share/vm/utilities/globalDefinitions.cpp

Print this page




 340     size_t cur, div, next;
 341 
 342     cur = MAX2(a, b);
 343     div = MIN2(a, b);
 344 
 345     assert(div != 0, "lcm requires positive arguments");
 346 
 347 
 348     while ((next = cur % div) != 0) {
 349         cur = div; div = next;
 350     }
 351 
 352 
 353     julong result = julong(a) * b / div;
 354     assert(result <= (size_t)max_uintx, "Integer overflow in lcm");
 355 
 356     return size_t(result);
 357 }
 358 
 359 #ifndef PRODUCT
























 360 
 361 void GlobalDefinitions::test_globals() {
 362   intptr_t page_sizes[] = { os::vm_page_size(), 4096, 8192, 65536, 2*1024*1024 };
 363   const int num_page_sizes = sizeof(page_sizes) / sizeof(page_sizes[0]);
 364 
 365   for (int i = 0; i < num_page_sizes; i++) {
 366     intptr_t page_size = page_sizes[i];
 367 
 368     address a_page = (address)(10*page_size);
 369 
 370     // Check that address within page is returned as is
 371     assert(clamp_address_in_page(a_page, a_page, page_size) == a_page, "incorrect");
 372     assert(clamp_address_in_page(a_page + 128, a_page, page_size) == a_page + 128, "incorrect");
 373     assert(clamp_address_in_page(a_page + page_size - 1, a_page, page_size) == a_page + page_size - 1, "incorrect");
 374 
 375     // Check that address above page returns start of next page
 376     assert(clamp_address_in_page(a_page + page_size, a_page, page_size) == a_page + page_size, "incorrect");
 377     assert(clamp_address_in_page(a_page + page_size + 1, a_page, page_size) == a_page + page_size, "incorrect");
 378     assert(clamp_address_in_page(a_page + page_size*5 + 1, a_page, page_size) == a_page + page_size, "incorrect");
 379 
 380     // Check that address below page returns start of page
 381     assert(clamp_address_in_page(a_page - 1, a_page, page_size) == a_page, "incorrect");
 382     assert(clamp_address_in_page(a_page - 2*page_size - 1, a_page, page_size) == a_page, "incorrect");
 383     assert(clamp_address_in_page(a_page - 5*page_size - 1, a_page, page_size) == a_page, "incorrect");
 384   }


 385 }
 386 
 387 #define EXPECT_EQ(expected, actual) \
 388         assert(expected == actual, "Test failed");
 389 #define EXPECT_STREQ(expected, actual) \
 390         assert(strcmp(expected, actual) == 0, "Test failed");
 391 
 392 void GlobalDefinitions::test_proper_unit() {
 393   EXPECT_EQ(0u,     byte_size_in_proper_unit(0u));
 394   EXPECT_STREQ("B", proper_unit_for_byte_size(0u));
 395 
 396   EXPECT_EQ(1u,     byte_size_in_proper_unit(1u));
 397   EXPECT_STREQ("B", proper_unit_for_byte_size(1u));
 398 
 399   EXPECT_EQ(1023u,  byte_size_in_proper_unit(K - 1));
 400   EXPECT_STREQ("B", proper_unit_for_byte_size(K - 1));
 401 
 402   EXPECT_EQ(1024u,  byte_size_in_proper_unit(K));
 403   EXPECT_STREQ("B", proper_unit_for_byte_size(K));
 404 




 340     size_t cur, div, next;
 341 
 342     cur = MAX2(a, b);
 343     div = MIN2(a, b);
 344 
 345     assert(div != 0, "lcm requires positive arguments");
 346 
 347 
 348     while ((next = cur % div) != 0) {
 349         cur = div; div = next;
 350     }
 351 
 352 
 353     julong result = julong(a) * b / div;
 354     assert(result <= (size_t)max_uintx, "Integer overflow in lcm");
 355 
 356     return size_t(result);
 357 }
 358 
 359 #ifndef PRODUCT
 360 struct T {
 361     int val;
 362     T(int a): val(a){}
 363 };
 364 
 365 int test_swap(){
 366     T a(1), b(2);
 367     int ia, ib;
 368 
 369     swap(a, b);
 370     assert(a.val == 2 && b.val == 1, "wrong result!");
 371 
 372     T * pa = &a;
 373     T * pb = &b;
 374     swap(pa, pb);
 375     assert(pa->val == 1 && pa == &b, "wrong result for pointer!");
 376     assert(pb->val == 2 && pb == &a, "wrong result for pointer!");
 377     assert(a.val == 2 && b.val == 1, "objects are corrupted");
 378 
 379     ia = 1;
 380     ib = 2;
 381     swap(ia, ib);
 382     assert(ia == 2 && ib == 1, "wrong result!");
 383 }
 384 
 385 void GlobalDefinitions::test_globals() {
 386   intptr_t page_sizes[] = { os::vm_page_size(), 4096, 8192, 65536, 2*1024*1024 };
 387   const int num_page_sizes = sizeof(page_sizes) / sizeof(page_sizes[0]);
 388 
 389   for (int i = 0; i < num_page_sizes; i++) {
 390     intptr_t page_size = page_sizes[i];
 391 
 392     address a_page = (address)(10*page_size);
 393 
 394     // Check that address within page is returned as is
 395     assert(clamp_address_in_page(a_page, a_page, page_size) == a_page, "incorrect");
 396     assert(clamp_address_in_page(a_page + 128, a_page, page_size) == a_page + 128, "incorrect");
 397     assert(clamp_address_in_page(a_page + page_size - 1, a_page, page_size) == a_page + page_size - 1, "incorrect");
 398 
 399     // Check that address above page returns start of next page
 400     assert(clamp_address_in_page(a_page + page_size, a_page, page_size) == a_page + page_size, "incorrect");
 401     assert(clamp_address_in_page(a_page + page_size + 1, a_page, page_size) == a_page + page_size, "incorrect");
 402     assert(clamp_address_in_page(a_page + page_size*5 + 1, a_page, page_size) == a_page + page_size, "incorrect");
 403 
 404     // Check that address below page returns start of page
 405     assert(clamp_address_in_page(a_page - 1, a_page, page_size) == a_page, "incorrect");
 406     assert(clamp_address_in_page(a_page - 2*page_size - 1, a_page, page_size) == a_page, "incorrect");
 407     assert(clamp_address_in_page(a_page - 5*page_size - 1, a_page, page_size) == a_page, "incorrect");
 408   }
 409 
 410   test_swap();
 411 }
 412 
 413 #define EXPECT_EQ(expected, actual) \
 414         assert(expected == actual, "Test failed");
 415 #define EXPECT_STREQ(expected, actual) \
 416         assert(strcmp(expected, actual) == 0, "Test failed");
 417 
 418 void GlobalDefinitions::test_proper_unit() {
 419   EXPECT_EQ(0u,     byte_size_in_proper_unit(0u));
 420   EXPECT_STREQ("B", proper_unit_for_byte_size(0u));
 421 
 422   EXPECT_EQ(1u,     byte_size_in_proper_unit(1u));
 423   EXPECT_STREQ("B", proper_unit_for_byte_size(1u));
 424 
 425   EXPECT_EQ(1023u,  byte_size_in_proper_unit(K - 1));
 426   EXPECT_STREQ("B", proper_unit_for_byte_size(K - 1));
 427 
 428   EXPECT_EQ(1024u,  byte_size_in_proper_unit(K));
 429   EXPECT_STREQ("B", proper_unit_for_byte_size(K));
 430 


< prev index next >