1.1 --- a/src/cpu/sparc/vm/assembler_sparc.cpp Thu Dec 02 17:21:12 2010 -0800 1.2 +++ b/src/cpu/sparc/vm/assembler_sparc.cpp Fri Dec 03 01:34:31 2010 -0800 1.3 @@ -1443,6 +1443,45 @@ 1.4 } 1.5 } 1.6 1.7 +int MacroAssembler::size_of_set64(jlong value) { 1.8 + v9_dep(); 1.9 + 1.10 + int hi = (int)(value >> 32); 1.11 + int lo = (int)(value & ~0); 1.12 + int count = 0; 1.13 + 1.14 + // (Matcher::isSimpleConstant64 knows about the following optimizations.) 1.15 + if (Assembler::is_simm13(lo) && value == lo) { 1.16 + count++; 1.17 + } else if (hi == 0) { 1.18 + count++; 1.19 + if (low10(lo) != 0) 1.20 + count++; 1.21 + } 1.22 + else if (hi == -1) { 1.23 + count += 2; 1.24 + } 1.25 + else if (lo == 0) { 1.26 + if (Assembler::is_simm13(hi)) { 1.27 + count++; 1.28 + } else { 1.29 + count++; 1.30 + if (low10(hi) != 0) 1.31 + count++; 1.32 + } 1.33 + count++; 1.34 + } 1.35 + else { 1.36 + count += 2; 1.37 + if (low10(hi) != 0) 1.38 + count++; 1.39 + if (low10(lo) != 0) 1.40 + count++; 1.41 + count += 2; 1.42 + } 1.43 + return count; 1.44 +} 1.45 + 1.46 // compute size in bytes of sparc frame, given 1.47 // number of extraWords 1.48 int MacroAssembler::total_frame_size_in_bytes(int extraWords) {