< prev index next >
src/share/vm/classfile/symbolTable.cpp
Print this page
rev 11935 : 8165439: Convert Test_TempNewSymbol to GTest
Reviewed-by: duke
*** 708,762 ****
return dcmd->_dcmdparser.num_arguments();
} else {
return 0;
}
}
-
- #ifndef PRODUCT
- // Internal test of TempNewSymbol
- void Test_TempNewSymbol() {
- // Assert messages assume these symbols are unique, and the refcounts start at
- // one, but code does not rely on this.
- Thread* THREAD = Thread::current();
- Symbol* abc = SymbolTable::new_symbol("abc", CATCH);
- int abccount = abc->refcount();
- TempNewSymbol ss = abc;
- assert(ss->refcount() == abccount, "only one abc");
- assert(ss->refcount() == abc->refcount(), "should match TempNewSymbol");
-
- Symbol* efg = SymbolTable::new_symbol("efg", CATCH);
- Symbol* hij = SymbolTable::new_symbol("hij", CATCH);
- int efgcount = efg->refcount();
- int hijcount = hij->refcount();
-
- TempNewSymbol s1 = efg;
- TempNewSymbol s2 = hij;
- assert(s1->refcount() == efgcount, "one efg");
- assert(s2->refcount() == hijcount, "one hij");
-
- // Assignment operator
- s1 = s2;
- assert(hij->refcount() == hijcount + 1, "should be two hij");
- assert(efg->refcount() == efgcount - 1, "should be no efg");
-
- s1 = ss; // s1 is abc
- assert(s1->refcount() == abccount + 1, "should be two abc (s1 and ss)");
- assert(hij->refcount() == hijcount, "should only have one hij now (s2)");
-
- s1 = s1; // self assignment
- assert(s1->refcount() == abccount + 1, "should still be two abc (s1 and ss)");
-
- TempNewSymbol s3;
- Symbol* klm = SymbolTable::new_symbol("klm", CATCH);
- int klmcount = klm->refcount();
- s3 = klm; // assignment
- assert(s3->refcount() == klmcount, "only one klm now");
-
- Symbol* xyz = SymbolTable::new_symbol("xyz", CATCH);
- int xyzcount = xyz->refcount();
- { // inner scope
- TempNewSymbol s_inner = xyz;
- }
- assert(xyz->refcount() == (xyzcount - 1),
- "Should have been decremented by dtor in inner scope");
- }
- #endif // PRODUCT
--- 708,712 ----
< prev index next >