comparison src/cpu/x86/vm/macroAssembler_x86.cpp @ 8124:5fc51c1ecdeb

Merge.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Tue, 05 Mar 2013 23:44:54 +0100
parents 91a23b11d8dc
children ded5288f5b96 a5de0cc2f91c
comparison
equal deleted inserted replaced
7943:a413bcd552a4 8124:5fc51c1ecdeb
35 #include "runtime/interfaceSupport.hpp" 35 #include "runtime/interfaceSupport.hpp"
36 #include "runtime/objectMonitor.hpp" 36 #include "runtime/objectMonitor.hpp"
37 #include "runtime/os.hpp" 37 #include "runtime/os.hpp"
38 #include "runtime/sharedRuntime.hpp" 38 #include "runtime/sharedRuntime.hpp"
39 #include "runtime/stubRoutines.hpp" 39 #include "runtime/stubRoutines.hpp"
40 #ifndef SERIALGC 40 #include "utilities/macros.hpp"
41 #if INCLUDE_ALL_GCS
41 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" 42 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
42 #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp" 43 #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
43 #include "gc_implementation/g1/heapRegion.hpp" 44 #include "gc_implementation/g1/heapRegion.hpp"
44 #endif 45 #endif // INCLUDE_ALL_GCS
45 46
46 #ifdef PRODUCT 47 #ifdef PRODUCT
47 #define BLOCK_COMMENT(str) /* nothing */ 48 #define BLOCK_COMMENT(str) /* nothing */
48 #define STOP(error) stop(error) 49 #define STOP(error) stop(error)
49 #else 50 #else
3205 } 3206 }
3206 } 3207 }
3207 3208
3208 3209
3209 ////////////////////////////////////////////////////////////////////////////////// 3210 //////////////////////////////////////////////////////////////////////////////////
3210 #ifndef SERIALGC 3211 #if INCLUDE_ALL_GCS
3211 3212
3212 void MacroAssembler::g1_write_barrier_pre(Register obj, 3213 void MacroAssembler::g1_write_barrier_pre(Register obj,
3213 Register pre_val, 3214 Register pre_val,
3214 Register thread, 3215 Register thread,
3215 Register tmp, 3216 Register tmp,
3415 pop(store_addr); 3416 pop(store_addr);
3416 3417
3417 bind(done); 3418 bind(done);
3418 } 3419 }
3419 3420
3420 #endif // SERIALGC 3421 #endif // INCLUDE_ALL_GCS
3421 ////////////////////////////////////////////////////////////////////////////////// 3422 //////////////////////////////////////////////////////////////////////////////////
3422 3423
3423 3424
3424 void MacroAssembler::store_check(Register obj) { 3425 void MacroAssembler::store_check(Register obj) {
3425 // Does a store check for the oop in register obj. The content of 3426 // Does a store check for the oop in register obj. The content of
5688 jcc(Assembler::equal, LENGTH_DIFF_LABEL); 5689 jcc(Assembler::equal, LENGTH_DIFF_LABEL);
5689 5690
5690 Address::ScaleFactor scale = Address::times_2; 5691 Address::ScaleFactor scale = Address::times_2;
5691 int stride = 8; 5692 int stride = 8;
5692 5693
5693 if (UseAVX >= 2) { 5694 if (UseAVX >= 2 && UseSSE42Intrinsics) {
5694 Label COMPARE_WIDE_VECTORS, VECTOR_NOT_EQUAL, COMPARE_WIDE_TAIL, COMPARE_SMALL_STR; 5695 Label COMPARE_WIDE_VECTORS, VECTOR_NOT_EQUAL, COMPARE_WIDE_TAIL, COMPARE_SMALL_STR;
5695 Label COMPARE_WIDE_VECTORS_LOOP, COMPARE_16_CHARS, COMPARE_INDEX_CHAR; 5696 Label COMPARE_WIDE_VECTORS_LOOP, COMPARE_16_CHARS, COMPARE_INDEX_CHAR;
5696 Label COMPARE_TAIL_LONG; 5697 Label COMPARE_TAIL_LONG;
5697 int pcmpmask = 0x19; 5698 int pcmpmask = 0x19;
5698 5699