Mercurial > hg > graal-compiler
diff src/os_cpu/solaris_sparc/vm/solaris_sparc.il @ 2140:85c73c0edb06
7012965: Fix failed on sparc for 7009756: volatile variables could be broken throw reflection API
Summary: Use LDX/STX on v9 and LDD/STD on v8 sparc for volatile long moves.
Reviewed-by: never
author | kvn |
---|---|
date | Tue, 18 Jan 2011 17:10:03 -0800 |
parents | c18cbe5936b8 |
children | 46c544b8fbfc |
line wrap: on
line diff
--- a/src/os_cpu/solaris_sparc/vm/solaris_sparc.il Thu Oct 07 13:49:40 2010 -0700 +++ b/src/os_cpu/solaris_sparc/vm/solaris_sparc.il Tue Jan 18 17:10:03 2011 -0800 @@ -1,5 +1,5 @@ // -// Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. // // This code is free software; you can redistribute it and/or modify it @@ -152,6 +152,39 @@ .nonvolatile .end + // Support for jlong Atomic::load and Atomic::store on v8. + // + // void _Atomic_move_long_v8(volatile jlong* src, volatile jlong* dst) + // + // Arguments: + // src: O0 + // dest: O1 + // + // Overwrites O2 and O3 + + .inline _Atomic_move_long_v8,2 + .volatile + ldd [%o0], %o2 + std %o2, [%o1] + .nonvolatile + .end + + // Support for jlong Atomic::load and Atomic::store on v9. + // + // void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst) + // + // Arguments: + // src: O0 + // dest: O1 + // + // Overwrites O2 + + .inline _Atomic_move_long_v9,2 + .volatile + ldx [%o0], %o2 + stx %o2, [%o1] + .nonvolatile + .end // Support for jint Atomic::add(jint add_value, volatile jint* dest). //