Mercurial > hg > graal-jvmci-8
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 |