Mercurial > hg > truffle
comparison src/cpu/sparc/vm/sparc.ad @ 3849:f1c12354c3f7
7074017: Introduce MemBarAcquireLock/MemBarReleaseLock nodes for monitor enter/exit code paths
Summary: replace MemBarAcquire/MemBarRelease nodes on the monitor enter/exit code paths with new MemBarAcquireLock/MemBarReleaseLock nodes
Reviewed-by: kvn, twisti
author | roland |
---|---|
date | Tue, 02 Aug 2011 18:36:40 +0200 |
parents | c7b60b601eb4 |
children | 95134e034042 |
comparison
equal
deleted
inserted
replaced
3848:a19c671188cb | 3849:f1c12354c3f7 |
---|---|
6603 ins_encode( enc_membar_acquire ); | 6603 ins_encode( enc_membar_acquire ); |
6604 ins_pipe(long_memory_op); | 6604 ins_pipe(long_memory_op); |
6605 %} | 6605 %} |
6606 | 6606 |
6607 instruct membar_acquire_lock() %{ | 6607 instruct membar_acquire_lock() %{ |
6608 match(MemBarAcquire); | 6608 match(MemBarAcquireLock); |
6609 predicate(Matcher::prior_fast_lock(n)); | |
6610 ins_cost(0); | 6609 ins_cost(0); |
6611 | 6610 |
6612 size(0); | 6611 size(0); |
6613 format %{ "!MEMBAR-acquire (CAS in prior FastLock so empty encoding)" %} | 6612 format %{ "!MEMBAR-acquire (CAS in prior FastLock so empty encoding)" %} |
6614 ins_encode( ); | 6613 ins_encode( ); |
6624 ins_encode( enc_membar_release ); | 6623 ins_encode( enc_membar_release ); |
6625 ins_pipe(long_memory_op); | 6624 ins_pipe(long_memory_op); |
6626 %} | 6625 %} |
6627 | 6626 |
6628 instruct membar_release_lock() %{ | 6627 instruct membar_release_lock() %{ |
6629 match(MemBarRelease); | 6628 match(MemBarReleaseLock); |
6630 predicate(Matcher::post_fast_unlock(n)); | |
6631 ins_cost(0); | 6629 ins_cost(0); |
6632 | 6630 |
6633 size(0); | 6631 size(0); |
6634 format %{ "!MEMBAR-release (CAS in succeeding FastUnlock so empty encoding)" %} | 6632 format %{ "!MEMBAR-release (CAS in succeeding FastUnlock so empty encoding)" %} |
6635 ins_encode( ); | 6633 ins_encode( ); |