Ignore:
Timestamp:
Feb 13, 2012, 10:07:12 PM (14 years ago)
Author:
dmik
Message:

trunk: Merged in openjdk6 b24 from branches/vendor/oracle.

Location:
trunk/openjdk
Files:
95 edited

Legend:

Unmodified
Added
Removed
  • trunk/openjdk

  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_assembler_linux_sparc.cpp.incl"
     25#include "precompiled.hpp"
     26#include "asm/assembler.hpp"
     27#include "assembler_sparc.inline.hpp"
     28#include "runtime/os.hpp"
     29#include "runtime/threadLocalStorage.hpp"
    2730
    2831#include <asm-sparc/traps.h>
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP
     26#define OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP
     27
     28#include "orderAccess_linux_sparc.inline.hpp"
     29#include "runtime/atomic.hpp"
     30#include "runtime/os.hpp"
     31#include "vm_version_sparc.hpp"
    2432
    2533// Implementation of class atomic
     
    4654inline void Atomic::dec_ptr(volatile intptr_t* dest) { (void)add_ptr(-1, dest); }
    4755inline void Atomic::dec_ptr(volatile void*     dest) { (void)add_ptr(-1, dest); }
     56
     57inline jlong Atomic::load(volatile jlong* src) { return *src; }
    4858
    4959inline jint     Atomic::add    (jint     add_value, volatile jint*     dest) {
     
    205215  return (void*)cmpxchg_ptr((intptr_t)exchange_value, (volatile intptr_t*)dest, (intptr_t)compare_value);
    206216}
     217
     218#endif // OS_CPU_LINUX_SPARC_VM_ATOMIC_LINUX_SPARC_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP
     26#define OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP
     27
    2528//
    2629// Sets the default values for platform dependent flags used by the
     
    3538// Only used on 64 bit Windows platforms
    3639define_pd_global(bool, UseVectoredExceptions, false);
     40
     41#endif // OS_CPU_LINUX_SPARC_VM_GLOBALS_LINUX_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp

    r278 r309  
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP
     26#define OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP
     27
     28#include "runtime/orderAccess.hpp"
     29#include "vm_version_sparc.hpp"
    2430
    2531// Implementation of class OrderAccess.
     
    101107inline void     OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); }
    102108inline void     OrderAccess::release_store_ptr_fence(volatile void*     p, void*    v) { *(void* volatile *)p = v; fence(); }
     109
     110#endif // OS_CPU_LINUX_SPARC_VM_ORDERACCESS_LINUX_SPARC_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 // do not include  precompiled  header file
    26 
    27 #include "incls/_os_linux_sparc.cpp.incl"
     25// no precompiled headers
     26#include "assembler_sparc.inline.hpp"
     27#include "classfile/classLoader.hpp"
     28#include "classfile/systemDictionary.hpp"
     29#include "classfile/vmSymbols.hpp"
     30#include "code/icBuffer.hpp"
     31#include "code/vtableStubs.hpp"
     32#include "interpreter/interpreter.hpp"
     33#include "jvm_linux.h"
     34#include "memory/allocation.inline.hpp"
     35#include "mutex_linux.inline.hpp"
     36#include "nativeInst_sparc.hpp"
     37#include "os_share_linux.hpp"
     38#include "prims/jniFastGetField.hpp"
     39#include "prims/jvm.h"
     40#include "prims/jvm_misc.hpp"
     41#include "runtime/arguments.hpp"
     42#include "runtime/extendedPC.hpp"
     43#include "runtime/frame.inline.hpp"
     44#include "runtime/interfaceSupport.hpp"
     45#include "runtime/java.hpp"
     46#include "runtime/javaCalls.hpp"
     47#include "runtime/mutexLocker.hpp"
     48#include "runtime/osThread.hpp"
     49#include "runtime/sharedRuntime.hpp"
     50#include "runtime/stubRoutines.hpp"
     51#include "runtime/timer.hpp"
     52#include "thread_linux.inline.hpp"
     53#include "utilities/events.hpp"
     54#include "utilities/vmError.hpp"
     55#ifdef COMPILER1
     56#include "c1/c1_Runtime1.hpp"
     57#endif
     58#ifdef COMPILER2
     59#include "opto/runtime.hpp"
     60#endif
     61
    2862
    2963// Linux/Sparc has rather obscure naming of registers in sigcontext
     
    201235  st->print_cr("Registers:");
    202236
     237  st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT
     238               " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT,
     239               SIG_REGS(sc).u_regs[CON_G1],
     240               SIG_REGS(sc).u_regs[CON_G2],
     241               SIG_REGS(sc).u_regs[CON_G3],
     242               SIG_REGS(sc).u_regs[CON_G4]);
     243  st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT
     244               " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT,
     245               SIG_REGS(sc).u_regs[CON_G5],
     246               SIG_REGS(sc).u_regs[CON_G6],
     247               SIG_REGS(sc).u_regs[CON_G7],
     248               SIG_REGS(sc).y);
    203249  st->print_cr(" O0=" INTPTR_FORMAT " O1=" INTPTR_FORMAT
    204250               " O2=" INTPTR_FORMAT " O3=" INTPTR_FORMAT,
     
    214260               SIG_REGS(sc).u_regs[CON_O7]);
    215261
    216   st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT
    217                " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT,
    218                SIG_REGS(sc).u_regs[CON_G1],
    219                SIG_REGS(sc).u_regs[CON_G2],
    220                SIG_REGS(sc).u_regs[CON_G3],
    221                SIG_REGS(sc).u_regs[CON_G4]);
    222   st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT
    223                " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT,
    224                SIG_REGS(sc).u_regs[CON_G5],
    225                SIG_REGS(sc).u_regs[CON_G6],
    226                SIG_REGS(sc).u_regs[CON_G7],
    227                SIG_REGS(sc).y);
     262
     263  intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
     264  st->print_cr(" L0=" INTPTR_FORMAT " L1=" INTPTR_FORMAT
     265               " L2=" INTPTR_FORMAT " L3=" INTPTR_FORMAT,
     266               sp[L0->sp_offset_in_saved_window()],
     267               sp[L1->sp_offset_in_saved_window()],
     268               sp[L2->sp_offset_in_saved_window()],
     269               sp[L3->sp_offset_in_saved_window()]);
     270  st->print_cr(" L4=" INTPTR_FORMAT " L5=" INTPTR_FORMAT
     271               " L6=" INTPTR_FORMAT " L7=" INTPTR_FORMAT,
     272               sp[L4->sp_offset_in_saved_window()],
     273               sp[L5->sp_offset_in_saved_window()],
     274               sp[L6->sp_offset_in_saved_window()],
     275               sp[L7->sp_offset_in_saved_window()]);
     276  st->print_cr(" I0=" INTPTR_FORMAT " I1=" INTPTR_FORMAT
     277               " I2=" INTPTR_FORMAT " I3=" INTPTR_FORMAT,
     278               sp[I0->sp_offset_in_saved_window()],
     279               sp[I1->sp_offset_in_saved_window()],
     280               sp[I2->sp_offset_in_saved_window()],
     281               sp[I3->sp_offset_in_saved_window()]);
     282  st->print_cr(" I4=" INTPTR_FORMAT " I5=" INTPTR_FORMAT
     283               " I6=" INTPTR_FORMAT " I7=" INTPTR_FORMAT,
     284               sp[I4->sp_offset_in_saved_window()],
     285               sp[I5->sp_offset_in_saved_window()],
     286               sp[I6->sp_offset_in_saved_window()],
     287               sp[I7->sp_offset_in_saved_window()]);
    228288
    229289  st->print_cr(" PC=" INTPTR_FORMAT " nPC=" INTPTR_FORMAT,
     
    233293  st->cr();
    234294
    235   intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
    236295  st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", sp);
    237296  print_hex_dump(st, (address)sp, (address)(sp + 32), sizeof(intptr_t));
     
    243302  address pc = os::Linux::ucontext_get_pc(uc);
    244303  st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
    245   print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
     304  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
     305}
     306
     307
     308void os::print_register_info(outputStream *st, void *context) {
     309  if (context == NULL) return;
     310
     311  ucontext_t *uc = (ucontext_t*)context;
     312  intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
     313
     314  st->print_cr("Register to memory mapping:");
     315  st->cr();
     316
     317  // this is only for the "general purpose" registers
     318  st->print("G1="); print_location(st, SIG_REGS(sc).u_regs[CON__G1]);
     319  st->print("G2="); print_location(st, SIG_REGS(sc).u_regs[CON__G2]);
     320  st->print("G3="); print_location(st, SIG_REGS(sc).u_regs[CON__G3]);
     321  st->print("G4="); print_location(st, SIG_REGS(sc).u_regs[CON__G4]);
     322  st->print("G5="); print_location(st, SIG_REGS(sc).u_regs[CON__G5]);
     323  st->print("G6="); print_location(st, SIG_REGS(sc).u_regs[CON__G6]);
     324  st->print("G7="); print_location(st, SIG_REGS(sc).u_regs[CON__G7]);
     325  st->cr();
     326
     327  st->print("O0="); print_location(st, SIG_REGS(sc).u_regs[CON__O0]);
     328  st->print("O1="); print_location(st, SIG_REGS(sc).u_regs[CON__O1]);
     329  st->print("O2="); print_location(st, SIG_REGS(sc).u_regs[CON__O2]);
     330  st->print("O3="); print_location(st, SIG_REGS(sc).u_regs[CON__O3]);
     331  st->print("O4="); print_location(st, SIG_REGS(sc).u_regs[CON__O4]);
     332  st->print("O5="); print_location(st, SIG_REGS(sc).u_regs[CON__O5]);
     333  st->print("O6="); print_location(st, SIG_REGS(sc).u_regs[CON__O6]);
     334  st->print("O7="); print_location(st, SIG_REGS(sc).u_regs[CON__O7]);
     335  st->cr();
     336
     337  st->print("L0="); print_location(st, sp[L0->sp_offset_in_saved_window()]);
     338  st->print("L1="); print_location(st, sp[L1->sp_offset_in_saved_window()]);
     339  st->print("L2="); print_location(st, sp[L2->sp_offset_in_saved_window()]);
     340  st->print("L3="); print_location(st, sp[L3->sp_offset_in_saved_window()]);
     341  st->print("L4="); print_location(st, sp[L4->sp_offset_in_saved_window()]);
     342  st->print("L5="); print_location(st, sp[L5->sp_offset_in_saved_window()]);
     343  st->print("L6="); print_location(st, sp[L6->sp_offset_in_saved_window()]);
     344  st->print("L7="); print_location(st, sp[L7->sp_offset_in_saved_window()]);
     345  st->cr();
     346
     347  st->print("I0="); print_location(st, sp[I0->sp_offset_in_saved_window()]);
     348  st->print("I1="); print_location(st, sp[I1->sp_offset_in_saved_window()]);
     349  st->print("I2="); print_location(st, sp[I2->sp_offset_in_saved_window()]);
     350  st->print("I3="); print_location(st, sp[I3->sp_offset_in_saved_window()]);
     351  st->print("I4="); print_location(st, sp[I4->sp_offset_in_saved_window()]);
     352  st->print("I5="); print_location(st, sp[I5->sp_offset_in_saved_window()]);
     353  st->print("I6="); print_location(st, sp[I6->sp_offset_in_saved_window()]);
     354  st->print("I7="); print_location(st, sp[I7->sp_offset_in_saved_window()]);
     355  st->cr();
    246356}
    247357
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP
     26#define OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP
     27
    2528  //
    2629  // NOTE: we are back in class os here, not Linux
     
    4346  // Note: Currently only used in 64 bit Windows implementations
    4447  static bool register_code_area(char *low, char *high) { return true; }
     48
     49#endif // OS_CPU_LINUX_SPARC_VM_OS_LINUX_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/prefetch_linux_sparc.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP
     26#define OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP
     27
     28#include "runtime/prefetch.hpp"
     29
    2530#if defined(COMPILER2) || defined(_LP64)
    2631
     
    3944
    4045#endif
     46
     47#endif // OS_CPU_LINUX_SPARC_VM_PREFETCH_LINUX_SPARC_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_threadLS_linux_sparc.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/threadLocalStorage.hpp"
     27#include "thread_linux.inline.hpp"
    2728
    2829void ThreadLocalStorage::generate_code_for_get_thread() {
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP
     26#define OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP
     27
    2528public:
    2629  static Thread* thread() {
    2730    return (Thread*) os::thread_local_storage_at(thread_index());
    2831  }
     32
     33#endif // OS_CPU_LINUX_SPARC_VM_THREADLS_LINUX_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/thread_linux_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_thread_linux_sparc.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/frame.inline.hpp"
     27#include "thread_linux.inline.hpp"
    2728
    2829// For Forte Analyzer AsyncGetCallTrace profiling support - thread is
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/thread_linux_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP
     26#define OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP
    2427
    2528private:
     
    97100  static void enable_register_stack_guard() {}
    98101  static void disable_register_stack_guard() {}
     102
     103#endif // OS_CPU_LINUX_SPARC_VM_THREAD_LINUX_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP
     26#define OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP
    2427
    2528// These are the OS and CPU-specific fields, types and integer
     
    6871  /* This must be the last entry, and must be present */                \
    6972  last_entry()
     73
     74#endif // OS_CPU_LINUX_SPARC_VM_VMSTRUCTS_LINUX_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 # include "incls/_precompiled.incl"
    26 # include "incls/_vm_version_linux_sparc.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/os.hpp"
     27#include "vm_version_sparc.hpp"
    2728
    2829static bool detect_niagara() {
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/assembler_linux_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_assembler_linux_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "asm/assembler.hpp"
     27#include "assembler_x86.inline.hpp"
     28#include "runtime/os.hpp"
     29#include "runtime/threadLocalStorage.hpp"
    2730
    2831#ifndef _LP64
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP
     26#define OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP
     27
     28#include "orderAccess_linux_x86.inline.hpp"
     29#include "runtime/atomic.hpp"
     30#include "runtime/os.hpp"
     31#include "vm_version_x86.hpp"
     32
    2533// Implementation of class atomic
    2634
     
    93101}
    94102
    95 extern "C" {
    96   // defined in linux_x86.s
    97   jlong _Atomic_cmpxchg_long(jlong, volatile jlong*, jlong, bool);
    98 }
    99 
    100103#ifdef AMD64
    101104inline void Atomic::store    (jlong    store_value, jlong*    dest) { *dest = store_value; }
     
    157160}
    158161
    159 #else
    160 //inline void Atomic::store    (jlong    store_value, jlong*    dest) { *dest = store_value; }
    161 //inline void Atomic::store  (jlong    store_value, volatile jlong*    dest) { *dest = store_value; }
     162inline jlong Atomic::load(volatile jlong* src) { return *src; }
     163
     164#else // !AMD64
    162165
    163166inline intptr_t Atomic::add_ptr(intptr_t add_value, volatile intptr_t* dest) {
     
    182185}
    183186
     187extern "C" {
     188  // defined in linux_x86.s
     189  jlong _Atomic_cmpxchg_long(jlong, volatile jlong*, jlong, bool);
     190  void _Atomic_move_long(volatile jlong* src, volatile jlong* dst);
     191}
     192
    184193inline jlong    Atomic::cmpxchg    (jlong    exchange_value, volatile jlong*    dest, jlong    compare_value) {
    185194  return _Atomic_cmpxchg_long(exchange_value, dest, compare_value, os::is_MP());
     
    193202  return (void*)cmpxchg((jint)exchange_value, (volatile jint*)dest, (jint)compare_value);
    194203}
     204
     205inline jlong Atomic::load(volatile jlong* src) {
     206  volatile jlong dest;
     207  _Atomic_move_long(src, &dest);
     208  return dest;
     209}
     210
     211inline void Atomic::store(jlong store_value, jlong* dest) {
     212  _Atomic_move_long((volatile jlong*)&store_value, (volatile jlong*)dest);
     213}
     214
     215inline void Atomic::store(jlong store_value, volatile jlong* dest) {
     216  _Atomic_move_long((volatile jlong*)&store_value, dest);
     217}
     218
    195219#endif // AMD64
     220
     221#endif // OS_CPU_LINUX_X86_VM_ATOMIC_LINUX_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP
     26#define OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP
    2427
    2528#ifdef __EMX__
     
    9194}
    9295#endif // !AMD64
     96
     97#endif // OS_CPU_LINUX_X86_VM_BYTES_LINUX_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/copy_linux_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP
     26#define OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP
    2427
    2528static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
     
    303306#endif // AMD64
    304307}
     308
     309#endif // OS_CPU_LINUX_X86_VM_COPY_LINUX_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp

    r278 r309  
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP
     26#define OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP
     27
    2528// Sets the default values for platform dependent flags used by the runtime system.
    2629// (see globals.hpp)
     
    4649// Only used on 64 bit Windows platforms
    4750define_pd_global(bool, UseVectoredExceptions,    false);
     51
     52#endif // OS_CPU_LINUX_X86_VM_GLOBALS_LINUX_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/linux_x86_32.s

    r278 r309  
    11#
    2 # Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
     2# Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
    33# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44#
     
    3939
    4040        .globl _Atomic_cmpxchg_long
     41        .globl _Atomic_move_long
    4142
    4243        .text
     
    654655        ret
    655656
     657
     658        # Support for jlong Atomic::load and Atomic::store.
     659        # void _Atomic_move_long(volatile jlong* src, volatile jlong* dst)
     660        .p2align 4,,15
     661        .type    _Atomic_move_long,@function
     662_Atomic_move_long:
     663        movl     4(%esp), %eax   # src
     664        fildll    (%eax)
     665        movl     8(%esp), %eax   # dest
     666        fistpll   (%eax)
     667        ret
     668
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP
     26#define OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP
     27
     28#include "runtime/atomic.hpp"
     29#include "runtime/orderAccess.hpp"
     30#include "vm_version_x86.hpp"
     31
    2532// Implementation of class OrderAccess.
    2633
     
    5966inline jshort   OrderAccess::load_acquire(volatile jshort*  p) { return *p; }
    6067inline jint     OrderAccess::load_acquire(volatile jint*    p) { return *p; }
    61 inline jlong    OrderAccess::load_acquire(volatile jlong*   p) { return *p; }
     68inline jlong    OrderAccess::load_acquire(volatile jlong*   p) { return Atomic::load(p); }
    6269inline jubyte   OrderAccess::load_acquire(volatile jubyte*  p) { return *p; }
    6370inline jushort  OrderAccess::load_acquire(volatile jushort* p) { return *p; }
    6471inline juint    OrderAccess::load_acquire(volatile juint*   p) { return *p; }
    65 inline julong   OrderAccess::load_acquire(volatile julong*  p) { return *p; }
     72inline julong   OrderAccess::load_acquire(volatile julong*  p) { return Atomic::load((volatile jlong*)p); }
    6673inline jfloat   OrderAccess::load_acquire(volatile jfloat*  p) { return *p; }
    6774inline jdouble  OrderAccess::load_acquire(volatile jdouble* p) { return *p; }
     
    7481inline void     OrderAccess::release_store(volatile jshort*  p, jshort  v) { *p = v; }
    7582inline void     OrderAccess::release_store(volatile jint*    p, jint    v) { *p = v; }
    76 inline void     OrderAccess::release_store(volatile jlong*   p, jlong   v) { *p = v; }
     83inline void     OrderAccess::release_store(volatile jlong*   p, jlong   v) { Atomic::store(v, p); }
    7784inline void     OrderAccess::release_store(volatile jubyte*  p, jubyte  v) { *p = v; }
    7885inline void     OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; }
    7986inline void     OrderAccess::release_store(volatile juint*   p, juint   v) { *p = v; }
    80 inline void     OrderAccess::release_store(volatile julong*  p, julong  v) { *p = v; }
     87inline void     OrderAccess::release_store(volatile julong*  p, julong  v) { Atomic::store((jlong)v, (volatile jlong*)p); }
    8188inline void     OrderAccess::release_store(volatile jfloat*  p, jfloat  v) { *p = v; }
    8289inline void     OrderAccess::release_store(volatile jdouble* p, jdouble v) { *p = v; }
     
    173180                          : "memory");
    174181#else
    175   *p = v; fence();
     182  release_store(p, v); fence();
    176183#endif // AMD64
    177184}
     
    205212#endif // AMD64
    206213}
     214
     215#endif // OS_CPU_LINUX_X86_VM_ORDERACCESS_LINUX_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 // do not include  precompiled  header file
    26 # include "incls/_os_linux_x86.cpp.incl"
     25// no precompiled headers
     26#include "assembler_x86.inline.hpp"
     27#include "classfile/classLoader.hpp"
     28#include "classfile/systemDictionary.hpp"
     29#include "classfile/vmSymbols.hpp"
     30#include "code/icBuffer.hpp"
     31#include "code/vtableStubs.hpp"
     32#include "interpreter/interpreter.hpp"
     33#include "jvm_linux.h"
     34#include "memory/allocation.inline.hpp"
     35#include "mutex_linux.inline.hpp"
     36#include "nativeInst_x86.hpp"
     37#include "os_share_linux.hpp"
     38#include "prims/jniFastGetField.hpp"
     39#include "prims/jvm.h"
     40#include "prims/jvm_misc.hpp"
     41#include "runtime/arguments.hpp"
     42#include "runtime/extendedPC.hpp"
     43#include "runtime/frame.inline.hpp"
     44#include "runtime/interfaceSupport.hpp"
     45#include "runtime/java.hpp"
     46#include "runtime/javaCalls.hpp"
     47#include "runtime/mutexLocker.hpp"
     48#include "runtime/osThread.hpp"
     49#include "runtime/sharedRuntime.hpp"
     50#include "runtime/stubRoutines.hpp"
     51#include "runtime/timer.hpp"
     52#include "thread_linux.inline.hpp"
     53#include "utilities/events.hpp"
     54#include "utilities/vmError.hpp"
     55#ifdef COMPILER1
     56#include "c1/c1_Runtime1.hpp"
     57#endif
     58#ifdef COMPILER2
     59#include "opto/runtime.hpp"
     60#endif
    2761
    2862// put OS-includes here
     
    719753  ucontext_t *uc = (ucontext_t*)context;
    720754  st->print_cr("Registers:");
    721 
    722   // this is horrendously verbose but the layout of the registers in the
    723   // context does not match how we defined our abstract Register set, so
    724   // we can't just iterate through the gregs area
    725 
    726755#ifdef AMD64
    727756  st->print(  "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
     
    746775  st->cr();
    747776  st->print(  "RIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RIP]);
    748   st->print(", EFL=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
     777  st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
    749778  st->print(", CSGSFS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_CSGSFS]);
    750779  st->print(", ERR=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ERR]);
    751780  st->cr();
    752781  st->print("  TRAPNO=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_TRAPNO]);
    753 
    754   st->cr();
    755   st->cr();
    756 
    757   st->print_cr("Register to memory mapping:");
    758   st->cr();
    759 
    760   // this is only for the "general purpose" registers
    761 
    762   st->print_cr("RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
    763   print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
    764   st->cr();
    765   st->print_cr("RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
    766   print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
    767   st->cr();
    768   st->print_cr("RCX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RCX]);
    769   print_location(st, uc->uc_mcontext.gregs[REG_RCX]);
    770   st->cr();
    771   st->print_cr("RDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDX]);
    772   print_location(st, uc->uc_mcontext.gregs[REG_RDX]);
    773   st->cr();
    774   st->print_cr("RSP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSP]);
    775   print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
    776   st->cr();
    777   st->print_cr("RBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBP]);
    778   print_location(st, uc->uc_mcontext.gregs[REG_RBP]);
    779   st->cr();
    780   st->print_cr("RSI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSI]);
    781   print_location(st, uc->uc_mcontext.gregs[REG_RSI]);
    782   st->cr();
    783   st->print_cr("RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]);
    784   print_location(st, uc->uc_mcontext.gregs[REG_RDI]);
    785   st->cr();
    786   st->print_cr("R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);
    787   print_location(st, uc->uc_mcontext.gregs[REG_R8]);
    788   st->cr();
    789   st->print_cr("R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);
    790   print_location(st, uc->uc_mcontext.gregs[REG_R9]);
    791   st->cr();
    792   st->print_cr("R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]);
    793   print_location(st, uc->uc_mcontext.gregs[REG_R10]);
    794   st->cr();
    795   st->print_cr("R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]);
    796   print_location(st, uc->uc_mcontext.gregs[REG_R11]);
    797   st->cr();
    798   st->print_cr("R12=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R12]);
    799   print_location(st, uc->uc_mcontext.gregs[REG_R12]);
    800   st->cr();
    801   st->print_cr("R13=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R13]);
    802   print_location(st, uc->uc_mcontext.gregs[REG_R13]);
    803   st->cr();
    804   st->print_cr("R14=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R14]);
    805   print_location(st, uc->uc_mcontext.gregs[REG_R14]);
    806   st->cr();
    807   st->print_cr("R15=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R15]);
    808   print_location(st, uc->uc_mcontext.gregs[REG_R15]);
    809 
    810782#else
    811783  st->print(  "EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EAX]);
     
    820792  st->cr();
    821793  st->print(  "EIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EIP]);
     794  st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
    822795  st->print(", CR2=" INTPTR_FORMAT, uc->uc_mcontext.cr2);
    823   st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
    824 
    825   st->cr();
    826   st->cr();
    827 
    828   st->print_cr("Register to memory mapping:");
    829   st->cr();
    830 
    831   // this is only for the "general purpose" registers
    832 
    833   st->print_cr("EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EAX]);
    834   print_location(st, uc->uc_mcontext.gregs[REG_EAX]);
    835   st->cr();
    836   st->print_cr("EBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EBX]);
    837   print_location(st, uc->uc_mcontext.gregs[REG_EBX]);
    838   st->cr();
    839   st->print_cr("ECX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ECX]);
    840   print_location(st, uc->uc_mcontext.gregs[REG_ECX]);
    841   st->cr();
    842   st->print_cr("EDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EDX]);
    843   print_location(st, uc->uc_mcontext.gregs[REG_EDX]);
    844   st->cr();
    845   st->print_cr("ESP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ESP]);
    846   print_location(st, uc->uc_mcontext.gregs[REG_ESP]);
    847   st->cr();
    848   st->print_cr("EBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EBP]);
    849   print_location(st, uc->uc_mcontext.gregs[REG_EBP]);
    850   st->cr();
    851   st->print_cr("ESI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_ESI]);
    852   print_location(st, uc->uc_mcontext.gregs[REG_ESI]);
    853   st->cr();
    854   st->print_cr("EDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EDI]);
    855   print_location(st, uc->uc_mcontext.gregs[REG_EDI]);
    856 
    857796#endif // AMD64
    858797  st->cr();
     
    869808  address pc = os::Linux::ucontext_get_pc(uc);
    870809  st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
    871   print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
     810  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
     811}
     812
     813void os::print_register_info(outputStream *st, void *context) {
     814  if (context == NULL) return;
     815
     816  ucontext_t *uc = (ucontext_t*)context;
     817
     818  st->print_cr("Register to memory mapping:");
     819  st->cr();
     820
     821  // this is horrendously verbose but the layout of the registers in the
     822  // context does not match how we defined our abstract Register set, so
     823  // we can't just iterate through the gregs area
     824
     825  // this is only for the "general purpose" registers
     826
     827#ifdef AMD64
     828  st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
     829  st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
     830  st->print("RCX="); print_location(st, uc->uc_mcontext.gregs[REG_RCX]);
     831  st->print("RDX="); print_location(st, uc->uc_mcontext.gregs[REG_RDX]);
     832  st->print("RSP="); print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
     833  st->print("RBP="); print_location(st, uc->uc_mcontext.gregs[REG_RBP]);
     834  st->print("RSI="); print_location(st, uc->uc_mcontext.gregs[REG_RSI]);
     835  st->print("RDI="); print_location(st, uc->uc_mcontext.gregs[REG_RDI]);
     836  st->print("R8 ="); print_location(st, uc->uc_mcontext.gregs[REG_R8]);
     837  st->print("R9 ="); print_location(st, uc->uc_mcontext.gregs[REG_R9]);
     838  st->print("R10="); print_location(st, uc->uc_mcontext.gregs[REG_R10]);
     839  st->print("R11="); print_location(st, uc->uc_mcontext.gregs[REG_R11]);
     840  st->print("R12="); print_location(st, uc->uc_mcontext.gregs[REG_R12]);
     841  st->print("R13="); print_location(st, uc->uc_mcontext.gregs[REG_R13]);
     842  st->print("R14="); print_location(st, uc->uc_mcontext.gregs[REG_R14]);
     843  st->print("R15="); print_location(st, uc->uc_mcontext.gregs[REG_R15]);
     844#else
     845  st->print("EAX="); print_location(st, uc->uc_mcontext.gregs[REG_EAX]);
     846  st->print("EBX="); print_location(st, uc->uc_mcontext.gregs[REG_EBX]);
     847  st->print("ECX="); print_location(st, uc->uc_mcontext.gregs[REG_ECX]);
     848  st->print("EDX="); print_location(st, uc->uc_mcontext.gregs[REG_EDX]);
     849  st->print("ESP="); print_location(st, uc->uc_mcontext.gregs[REG_ESP]);
     850  st->print("EBP="); print_location(st, uc->uc_mcontext.gregs[REG_EBP]);
     851  st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[REG_ESI]);
     852  st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[REG_EDI]);
     853#endif // AMD64
     854
     855  st->cr();
    872856}
    873857
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP
     26#define OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP
     27
    2528  static void setup_fpu();
    2629  static bool supports_sse();
     
    3134  // Note: Currently only used in 64 bit Windows implementations
    3235  static bool register_code_area(char *low, char *high) { return true; }
     36
     37#endif // OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/prefetch_linux_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP
     26#define OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP
     27
     28#include "runtime/prefetch.hpp"
     29
    2530
    2631inline void Prefetch::read (void *loc, intx interval) {
     
    3944#endif // AMD64
    4045}
     46
     47#endif // OS_CPU_LINUX_X86_VM_PREFETCH_LINUX_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_threadLS_linux_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/threadLocalStorage.hpp"
     27#include "thread_linux.inline.hpp"
    2728
    2829// Map stack pointer (%esp) to thread pointer for faster TLS access
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP
     26#define OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP
    2427
    2528  // Processor dependent parts of ThreadLocalStorage
     
    4851#endif // AMD64
    4952  }
     53
     54#endif // OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/thread_linux_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_thread_linux_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/frame.inline.hpp"
     27#include "thread_linux.inline.hpp"
    2728
    2829// For Forte Analyzer AsyncGetCallTrace profiling support - thread is
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/thread_linux_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP
     26#define OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP
    2427
    2528 private:
     
    6467  static void enable_register_stack_guard() {}
    6568  static void disable_register_stack_guard() {}
     69
     70#endif // OS_CPU_LINUX_X86_VM_THREAD_LINUX_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/vmStructs_linux_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP
     26#define OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP
    2427
    2528// These are the OS and CPU-specific fields, types and integer
     
    5962  /* This must be the last entry, and must be present */                \
    6063  last_entry()
     64
     65#endif // OS_CPU_LINUX_X86_VM_VMSTRUCTS_LINUX_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_x86/vm/vm_version_linux_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 # include "incls/_precompiled.incl"
    26 # include "incls/_vm_version_linux_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/os.hpp"
     27#include "vm_version_x86.hpp"
     28
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/assembler_linux_zero.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2009 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2424 */
    2525
     26#include "precompiled.hpp"
     27#include "asm/assembler.hpp"
     28#include "assembler_zero.inline.hpp"
     29#include "runtime/os.hpp"
     30#include "runtime/threadLocalStorage.hpp"
     31
    2632// This file is intentionally empty
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007, 2008 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2323 *
    2424 */
     25
     26#ifndef OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP
     27#define OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP
     28
     29#include "orderAccess_linux_zero.inline.hpp"
     30#include "runtime/atomic.hpp"
     31#include "runtime/os.hpp"
     32#include "vm_version_zero.hpp"
    2533
    2634// Implementation of class atomic
     
    292300                              (intptr_t) compare_value);
    293301}
     302
     303#endif // OS_CPU_LINUX_ZERO_VM_ATOMIC_LINUX_ZERO_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/bytes_linux_zero.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP
     26#define OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP
     27
    2528// Efficient swapping of data bytes from Java byte
    2629// ordering to native byte ordering and vice versa.
     
    3942  return bswap_64(x);
    4043}
     44
     45#endif // OS_CPU_LINUX_ZERO_VM_BYTES_LINUX_ZERO_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007, 2008, 2010 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2424 */
    2525
     26#ifndef OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
     27#define OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
     28
    2629//
    2730// Set the default values for platform dependent flags used by the
     
    4346// Only used on 64 bit platforms
    4447define_pd_global(uintx, HeapBaseMinAddress,      2*G);
     48
     49#endif // OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/orderAccess_linux_zero.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007, 2008, 2009 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2323 *
    2424 */
     25
     26#ifndef OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP
     27#define OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP
     28
     29#include "runtime/orderAccess.hpp"
     30#include "vm_version_zero.hpp"
    2531
    2632#ifdef ARM
     
    166172inline void     OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { release_store_ptr(p, v); fence(); }
    167173inline void     OrderAccess::release_store_ptr_fence(volatile void*     p, void*    v) { release_store_ptr(p, v); fence(); }
     174
     175#endif // OS_CPU_LINUX_ZERO_VM_ORDERACCESS_LINUX_ZERO_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2424 */
    2525
    26 // do not include precompiled header file
    27 #include "incls/_os_linux_zero.cpp.incl"
     26// no precompiled headers
     27#include "assembler_zero.inline.hpp"
     28#include "classfile/classLoader.hpp"
     29#include "classfile/systemDictionary.hpp"
     30#include "classfile/vmSymbols.hpp"
     31#include "code/icBuffer.hpp"
     32#include "code/vtableStubs.hpp"
     33#include "interpreter/interpreter.hpp"
     34#include "jvm_linux.h"
     35#include "memory/allocation.inline.hpp"
     36#include "mutex_linux.inline.hpp"
     37#include "nativeInst_zero.hpp"
     38#include "os_share_linux.hpp"
     39#include "prims/jniFastGetField.hpp"
     40#include "prims/jvm.h"
     41#include "prims/jvm_misc.hpp"
     42#include "runtime/arguments.hpp"
     43#include "runtime/extendedPC.hpp"
     44#include "runtime/frame.inline.hpp"
     45#include "runtime/interfaceSupport.hpp"
     46#include "runtime/java.hpp"
     47#include "runtime/javaCalls.hpp"
     48#include "runtime/mutexLocker.hpp"
     49#include "runtime/osThread.hpp"
     50#include "runtime/sharedRuntime.hpp"
     51#include "runtime/stubRoutines.hpp"
     52#include "runtime/timer.hpp"
     53#include "thread_linux.inline.hpp"
     54#include "utilities/events.hpp"
     55#include "utilities/vmError.hpp"
     56#ifdef COMPILER1
     57#include "c1/c1_Runtime1.hpp"
     58#endif
     59#ifdef COMPILER2
     60#include "opto/runtime.hpp"
     61#endif
    2862
    2963address os::current_stack_pointer() {
     
    371405}
    372406
     407void os::print_register_info(outputStream *st, void *context) {
     408  ShouldNotCallThis();
     409}
     410
    373411/////////////////////////////////////////////////////////////////////////////
    374412// Stubs for things that would be in linux_zero.s if it existed.
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007, 2008, 2010 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2323 *
    2424 */
     25
     26#ifndef OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP
     27#define OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP
    2528
    2629  static void setup_fpu() {}
     
    5053#endif
    5154  }
     55
     56#endif // OS_CPU_LINUX_ZERO_VM_OS_LINUX_ZERO_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/prefetch_linux_zero.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007, 2008 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2424 */
    2525
     26#ifndef OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP
     27#define OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP
     28
     29#include "runtime/prefetch.hpp"
     30
    2631inline void Prefetch::read(void* loc, intx interval) {
    2732}
     
    2934inline void Prefetch::write(void* loc, intx interval) {
    3035}
     36
     37#endif // OS_CPU_LINUX_ZERO_VM_PREFETCH_LINUX_ZERO_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2424 */
    2525
    26 #include "incls/_precompiled.incl"
    27 #include "incls/_threadLS_linux_zero.cpp.incl"
     26#include "precompiled.hpp"
     27#include "runtime/threadLocalStorage.hpp"
     28#include "thread_linux.inline.hpp"
    2829
    2930void ThreadLocalStorage::generate_code_for_get_thread() {
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/threadLS_linux_zero.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP
     26#define OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP
     27
    2528// Processor dependent parts of ThreadLocalStorage
    2629
     
    2932    return (Thread*) os::thread_local_storage_at(thread_index());
    3033  }
     34
     35#endif // OS_CPU_LINUX_ZERO_VM_THREADLS_LINUX_ZERO_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2009, 2010 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2424 */
    2525
    26 #include "incls/_precompiled.incl"
    27 #include "incls/_thread_linux_zero.cpp.incl"
     26#include "precompiled.hpp"
     27#include "runtime/frame.inline.hpp"
     28#include "thread_linux.inline.hpp"
    2829
    2930void JavaThread::cache_global_variables() {
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/thread_linux_zero.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2323 *
    2424 */
     25
     26#ifndef OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP
     27#define OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP
    2528
    2629 private:
     
    115118  static void enable_register_stack_guard() {}
    116119  static void disable_register_stack_guard() {}
     120
     121#endif // OS_CPU_LINUX_ZERO_VM_THREAD_LINUX_ZERO_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/vmStructs_linux_zero.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2007 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2424 */
    2525
     26#ifndef OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP
     27#define OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP
     28
    2629// These are the OS and CPU-specific fields, types and integer
    2730// constants required by the Serviceability Agent. This file is
     
    4447  /* This must be the last entry, and must be present */                \
    4548  last_entry()
     49
     50#endif // OS_CPU_LINUX_ZERO_VM_VMSTRUCTS_LINUX_ZERO_HPP
  • trunk/openjdk/hotspot/src/os_cpu/linux_zero/vm/vm_version_linux_zero.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * Copyright 2009 Red Hat, Inc.
    44 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     
    2424 */
    2525
     26#include "precompiled.hpp"
     27#include "runtime/os.hpp"
     28#include "vm_version_zero.hpp"
     29
    2630// This file is intentionally empty
  • trunk/openjdk/hotspot/src/os_cpu/os2_x86/vm/os2_x86_32.s

  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/assembler_solaris_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_assembler_solaris_sparc.cpp.incl"
     25#include "precompiled.hpp"
     26#include "asm/assembler.hpp"
     27#include "assembler_sparc.inline.hpp"
     28#include "runtime/os.hpp"
     29#include "runtime/threadLocalStorage.hpp"
    2730
    2831#include <sys/trap.h>          // For trap numbers
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP
     26#define OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP
     27
     28#include "orderAccess_solaris_sparc.inline.hpp"
     29#include "runtime/atomic.hpp"
     30#include "runtime/os.hpp"
     31#include "vm_version_sparc.hpp"
     32
    2533// Implementation of class atomic
    2634
     
    2836inline void Atomic::store    (jshort   store_value, jshort*   dest) { *dest = store_value; }
    2937inline void Atomic::store    (jint     store_value, jint*     dest) { *dest = store_value; }
    30 inline void Atomic::store    (jlong    store_value, jlong*    dest) { *dest = store_value; }
    3138inline void Atomic::store_ptr(intptr_t store_value, intptr_t* dest) { *dest = store_value; }
    3239inline void Atomic::store_ptr(void*    store_value, void*     dest) { *(void**)dest = store_value; }
     
    3542inline void Atomic::store    (jshort   store_value, volatile jshort*   dest) { *dest = store_value; }
    3643inline void Atomic::store    (jint     store_value, volatile jint*     dest) { *dest = store_value; }
    37 inline void Atomic::store    (jlong    store_value, volatile jlong*    dest) { *dest = store_value; }
    3844inline void Atomic::store_ptr(intptr_t store_value, volatile intptr_t* dest) { *dest = store_value; }
    3945inline void Atomic::store_ptr(void*    store_value, volatile void*     dest) { *(void* volatile *)dest = store_value; }
     
    4753inline void Atomic::dec_ptr(volatile void*     dest) { (void)add_ptr(-1, dest); }
    4854
     55
     56#ifdef _LP64
     57
     58inline void Atomic::store(jlong store_value, jlong* dest) { *dest = store_value; }
     59inline void Atomic::store(jlong store_value, volatile jlong* dest) { *dest = store_value; }
    4960inline jlong Atomic::load(volatile jlong* src) { return *src; }
     61
     62#else
     63
     64extern "C" void _Atomic_move_long_v8(volatile jlong* src, volatile jlong* dst);
     65extern "C" void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst);
     66
     67inline void Atomic_move_long(volatile jlong* src, volatile jlong* dst) {
     68#ifdef COMPILER2
     69  // Compiler2 does not support v8, it is used only for v9.
     70  assert (VM_Version::v9_instructions_work(), "only supported on v9");
     71  _Atomic_move_long_v9(src, dst);
     72#else
     73  // The branch is cheaper then emulated LDD.
     74  if (VM_Version::v9_instructions_work()) {
     75    _Atomic_move_long_v9(src, dst);
     76  } else {
     77    _Atomic_move_long_v8(src, dst);
     78  }
     79#endif
     80}
     81
     82inline jlong Atomic::load(volatile jlong* src) {
     83  volatile jlong dest;
     84  Atomic_move_long(src, &dest);
     85  return dest;
     86}
     87
     88inline void Atomic::store(jlong store_value, jlong* dest) {
     89  Atomic_move_long((volatile jlong*)&store_value, (volatile jlong*)dest);
     90}
     91
     92inline void Atomic::store(jlong store_value, volatile jlong* dest) {
     93  Atomic_move_long((volatile jlong*)&store_value, dest);
     94}
     95
     96#endif
    5097
    5198#ifdef _GNU_SOURCE
     
    343390
    344391#endif // _GNU_SOURCE
     392
     393#endif // OS_CPU_SOLARIS_SPARC_VM_ATOMIC_SOLARIS_SPARC_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP
     26#define OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP
     27
    2528//
    2629// Sets the default values for platform dependent flags used by the runtime system.
     
    3740
    3841
     42
     43#endif // OS_CPU_SOLARIS_SPARC_VM_GLOBALS_SOLARIS_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/orderAccess_solaris_sparc.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP
     26#define OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP
     27
     28#include "runtime/orderAccess.hpp"
     29#include "vm_version_sparc.hpp"
    2430
    2531// Implementation of class OrderAccess.
     
    7278inline jshort   OrderAccess::load_acquire(volatile jshort*  p) { return *p; }
    7379inline jint     OrderAccess::load_acquire(volatile jint*    p) { return *p; }
    74 inline jlong    OrderAccess::load_acquire(volatile jlong*   p) { return *p; }
     80inline jlong    OrderAccess::load_acquire(volatile jlong*   p) { return Atomic::load(p); }
    7581inline jubyte   OrderAccess::load_acquire(volatile jubyte*  p) { return *p; }
    7682inline jushort  OrderAccess::load_acquire(volatile jushort* p) { return *p; }
    7783inline juint    OrderAccess::load_acquire(volatile juint*   p) { return *p; }
    78 inline julong   OrderAccess::load_acquire(volatile julong*  p) { return *p; }
     84inline julong   OrderAccess::load_acquire(volatile julong*  p) { return Atomic::load((volatile jlong*)p); }
    7985inline jfloat   OrderAccess::load_acquire(volatile jfloat*  p) { return *p; }
    8086inline jdouble  OrderAccess::load_acquire(volatile jdouble* p) { return *p; }
     
    8793inline void     OrderAccess::release_store(volatile jshort*  p, jshort  v) { *p = v; }
    8894inline void     OrderAccess::release_store(volatile jint*    p, jint    v) { *p = v; }
    89 inline void     OrderAccess::release_store(volatile jlong*   p, jlong   v) { *p = v; }
     95inline void     OrderAccess::release_store(volatile jlong*   p, jlong   v) { Atomic::store(v, p); }
    9096inline void     OrderAccess::release_store(volatile jubyte*  p, jubyte  v) { *p = v; }
    9197inline void     OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; }
    9298inline void     OrderAccess::release_store(volatile juint*   p, juint   v) { *p = v; }
    93 inline void     OrderAccess::release_store(volatile julong*  p, julong  v) { *p = v; }
     99inline void     OrderAccess::release_store(volatile julong*  p, julong  v) { Atomic::store((jlong)v, (volatile jlong*)p); }
    94100inline void     OrderAccess::release_store(volatile jfloat*  p, jfloat  v) { *p = v; }
    95101inline void     OrderAccess::release_store(volatile jdouble* p, jdouble v) { *p = v; }
     
    115121inline void     OrderAccess::release_store_fence(volatile jshort*  p, jshort  v) { *p = v; fence(); }
    116122inline void     OrderAccess::release_store_fence(volatile jint*    p, jint    v) { *p = v; fence(); }
    117 inline void     OrderAccess::release_store_fence(volatile jlong*   p, jlong   v) { *p = v; fence(); }
     123inline void     OrderAccess::release_store_fence(volatile jlong*   p, jlong   v) { release_store(p, v); fence(); }
    118124inline void     OrderAccess::release_store_fence(volatile jubyte*  p, jubyte  v) { *p = v; fence(); }
    119125inline void     OrderAccess::release_store_fence(volatile jushort* p, jushort v) { *p = v; fence(); }
    120126inline void     OrderAccess::release_store_fence(volatile juint*   p, juint   v) { *p = v; fence(); }
    121 inline void     OrderAccess::release_store_fence(volatile julong*  p, julong  v) { *p = v; fence(); }
     127inline void     OrderAccess::release_store_fence(volatile julong*  p, julong  v) { release_store(p, v); fence(); }
    122128inline void     OrderAccess::release_store_fence(volatile jfloat*  p, jfloat  v) { *p = v; fence(); }
    123129inline void     OrderAccess::release_store_fence(volatile jdouble* p, jdouble v) { *p = v; fence(); }
     
    125131inline void     OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); }
    126132inline void     OrderAccess::release_store_ptr_fence(volatile void*     p, void*    v) { *(void* volatile *)p = v; fence(); }
     133
     134#endif // OS_CPU_SOLARIS_SPARC_VM_ORDERACCESS_SOLARIS_SPARC_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 // do not include  precompiled  header file
     25// no precompiled headers
     26#include "assembler_sparc.inline.hpp"
     27#include "classfile/classLoader.hpp"
     28#include "classfile/systemDictionary.hpp"
     29#include "classfile/vmSymbols.hpp"
     30#include "code/icBuffer.hpp"
     31#include "code/vtableStubs.hpp"
     32#include "interpreter/interpreter.hpp"
     33#include "jvm_solaris.h"
     34#include "memory/allocation.inline.hpp"
     35#include "mutex_solaris.inline.hpp"
     36#include "nativeInst_sparc.hpp"
     37#include "os_share_solaris.hpp"
     38#include "prims/jniFastGetField.hpp"
     39#include "prims/jvm.h"
     40#include "prims/jvm_misc.hpp"
     41#include "runtime/arguments.hpp"
     42#include "runtime/extendedPC.hpp"
     43#include "runtime/frame.inline.hpp"
     44#include "runtime/interfaceSupport.hpp"
     45#include "runtime/java.hpp"
     46#include "runtime/javaCalls.hpp"
     47#include "runtime/mutexLocker.hpp"
     48#include "runtime/osThread.hpp"
     49#include "runtime/sharedRuntime.hpp"
     50#include "runtime/stubRoutines.hpp"
     51#include "runtime/timer.hpp"
     52#include "thread_solaris.inline.hpp"
     53#include "utilities/events.hpp"
     54#include "utilities/vmError.hpp"
     55#ifdef COMPILER1
     56#include "c1/c1_Runtime1.hpp"
     57#endif
     58#ifdef COMPILER2
     59#include "opto/runtime.hpp"
     60#endif
     61
    2662
    2763# include <signal.h>        // needed first to avoid name collision for "std" with SC 5.0
    28 
    29 # include "incls/_os_solaris_sparc.cpp.incl"
    3064
    3165// put OS-includes here
     
    255289    sprintf(lwpstatusfile, "/proc/%d/lwp/%d/lwpstatus", getpid(),
    256290            *lwp);
    257     if ((lwpfd = open(lwpstatusfile, O_RDONLY)) < 0) {
     291    if ((lwpfd = ::open(lwpstatusfile, O_RDONLY)) < 0) {
    258292      perror("thr_mutator_status: open lwpstatus");
    259293      return (EINVAL);
     
    262296        sizeof (lwpstatus_t)) {
    263297      perror("thr_mutator_status: read lwpstatus");
    264       (void) close(lwpfd);
     298      (void) ::close(lwpfd);
    265299      return (EINVAL);
    266300    }
    267     (void) close(lwpfd);
     301    (void) ::close(lwpfd);
    268302  }
    269303  return (0);
     
    541575  }
    542576
     577  // Sometimes the register windows are not properly flushed.
     578  if(uc->uc_mcontext.gwins != NULL) {
     579    ::handle_unflushed_register_windows(uc->uc_mcontext.gwins);
     580  }
     581
    543582  // unmask current signal
    544583  sigset_t newset;
     
    547586  sigprocmask(SIG_UNBLOCK, &newset, NULL);
    548587
     588  // Determine which sort of error to throw.  Out of swap may signal
     589  // on the thread stack, which could get a mapping error when touched.
     590  address addr = (address) info->si_addr;
     591  if (sig == SIGBUS && info->si_code == BUS_OBJERR && info->si_errno == ENOMEM) {
     592    vm_exit_out_of_memory(0, "Out of swap space to map in thread stack.");
     593  }
     594
    549595  VMError err(t, sig, pc, info, ucVoid);
    550596  err.report_and_die();
     
    559605  st->print_cr("Registers:");
    560606
     607  st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT
     608               " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT,
     609            uc->uc_mcontext.gregs[REG_G1],
     610            uc->uc_mcontext.gregs[REG_G2],
     611            uc->uc_mcontext.gregs[REG_G3],
     612            uc->uc_mcontext.gregs[REG_G4]);
     613  st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT
     614               " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT,
     615            uc->uc_mcontext.gregs[REG_G5],
     616            uc->uc_mcontext.gregs[REG_G6],
     617            uc->uc_mcontext.gregs[REG_G7],
     618            uc->uc_mcontext.gregs[REG_Y]);
    561619  st->print_cr(" O0=" INTPTR_FORMAT " O1=" INTPTR_FORMAT
    562620               " O2=" INTPTR_FORMAT " O3=" INTPTR_FORMAT,
     
    572630            uc->uc_mcontext.gregs[REG_O7]);
    573631
    574   st->print_cr(" G1=" INTPTR_FORMAT " G2=" INTPTR_FORMAT
    575                " G3=" INTPTR_FORMAT " G4=" INTPTR_FORMAT,
    576             uc->uc_mcontext.gregs[REG_G1],
    577             uc->uc_mcontext.gregs[REG_G2],
    578             uc->uc_mcontext.gregs[REG_G3],
    579             uc->uc_mcontext.gregs[REG_G4]);
    580   st->print_cr(" G5=" INTPTR_FORMAT " G6=" INTPTR_FORMAT
    581                " G7=" INTPTR_FORMAT " Y=" INTPTR_FORMAT,
    582             uc->uc_mcontext.gregs[REG_G5],
    583             uc->uc_mcontext.gregs[REG_G6],
    584             uc->uc_mcontext.gregs[REG_G7],
    585             uc->uc_mcontext.gregs[REG_Y]);
     632
     633  intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc);
     634  st->print_cr(" L0=" INTPTR_FORMAT " L1=" INTPTR_FORMAT
     635               " L2=" INTPTR_FORMAT " L3=" INTPTR_FORMAT,
     636               sp[L0->sp_offset_in_saved_window()],
     637               sp[L1->sp_offset_in_saved_window()],
     638               sp[L2->sp_offset_in_saved_window()],
     639               sp[L3->sp_offset_in_saved_window()]);
     640  st->print_cr(" L4=" INTPTR_FORMAT " L5=" INTPTR_FORMAT
     641               " L6=" INTPTR_FORMAT " L7=" INTPTR_FORMAT,
     642               sp[L4->sp_offset_in_saved_window()],
     643               sp[L5->sp_offset_in_saved_window()],
     644               sp[L6->sp_offset_in_saved_window()],
     645               sp[L7->sp_offset_in_saved_window()]);
     646  st->print_cr(" I0=" INTPTR_FORMAT " I1=" INTPTR_FORMAT
     647               " I2=" INTPTR_FORMAT " I3=" INTPTR_FORMAT,
     648               sp[I0->sp_offset_in_saved_window()],
     649               sp[I1->sp_offset_in_saved_window()],
     650               sp[I2->sp_offset_in_saved_window()],
     651               sp[I3->sp_offset_in_saved_window()]);
     652  st->print_cr(" I4=" INTPTR_FORMAT " I5=" INTPTR_FORMAT
     653               " I6=" INTPTR_FORMAT " I7=" INTPTR_FORMAT,
     654               sp[I4->sp_offset_in_saved_window()],
     655               sp[I5->sp_offset_in_saved_window()],
     656               sp[I6->sp_offset_in_saved_window()],
     657               sp[I7->sp_offset_in_saved_window()]);
    586658
    587659  st->print_cr(" PC=" INTPTR_FORMAT " nPC=" INTPTR_FORMAT,
    588660            uc->uc_mcontext.gregs[REG_PC],
    589661            uc->uc_mcontext.gregs[REG_nPC]);
    590 
    591662  st->cr();
    592663  st->cr();
    593664
    594   st->print_cr("Register to memory mapping:");
    595   st->cr();
    596 
    597   // this is only for the "general purpose" registers
    598 
    599   st->print_cr("O0=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O0]);
    600   print_location(st, uc->uc_mcontext.gregs[REG_O0]);
    601   st->cr();
    602   st->print_cr("O1=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O1]);
    603   print_location(st, uc->uc_mcontext.gregs[REG_O1]);
    604   st->cr();
    605   st->print_cr("O2=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O2]);
    606   print_location(st, uc->uc_mcontext.gregs[REG_O2]);
    607   st->cr();
    608   st->print_cr("O3=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O3]);
    609   print_location(st, uc->uc_mcontext.gregs[REG_O3]);
    610   st->cr();
    611   st->print_cr("O4=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O4]);
    612   print_location(st, uc->uc_mcontext.gregs[REG_O4]);
    613   st->cr();
    614   st->print_cr("O5=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O5]);
    615   print_location(st, uc->uc_mcontext.gregs[REG_O5]);
    616   st->cr();
    617   st->print_cr("O6=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O6]);
    618   print_location(st, uc->uc_mcontext.gregs[REG_O6]);
    619   st->cr();
    620   st->print_cr("O7=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_O7]);
    621   print_location(st, uc->uc_mcontext.gregs[REG_O7]);
    622   st->cr();
    623 
    624   st->print_cr("G1=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G1]);
    625   print_location(st, uc->uc_mcontext.gregs[REG_G1]);
    626   st->cr();
    627   st->print_cr("G2=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G2]);
    628   print_location(st, uc->uc_mcontext.gregs[REG_G2]);
    629   st->cr();
    630   st->print_cr("G3=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G3]);
    631   print_location(st, uc->uc_mcontext.gregs[REG_G3]);
    632   st->cr();
    633   st->print_cr("G4=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G4]);
    634   print_location(st, uc->uc_mcontext.gregs[REG_G4]);
    635   st->cr();
    636   st->print_cr("G5=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G5]);
    637   print_location(st, uc->uc_mcontext.gregs[REG_G5]);
    638   st->cr();
    639   st->print_cr("G6=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G6]);
    640   print_location(st, uc->uc_mcontext.gregs[REG_G6]);
    641   st->cr();
    642   st->print_cr("G7=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_G7]);
    643   print_location(st, uc->uc_mcontext.gregs[REG_G7]);
    644 
    645   st->cr();
    646   st->cr();
    647 
    648   intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc);
    649665  st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", sp);
    650666  print_hex_dump(st, (address)sp, (address)(sp + 32), sizeof(intptr_t));
     
    657673  address pc = epc.pc();
    658674  st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
    659   print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
     675  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
     676}
     677
     678void os::print_register_info(outputStream *st, void *context) {
     679  if (context == NULL) return;
     680
     681  ucontext_t *uc = (ucontext_t*)context;
     682  intptr_t *sp = (intptr_t *)os::Solaris::ucontext_get_sp(uc);
     683
     684  st->print_cr("Register to memory mapping:");
     685  st->cr();
     686
     687  // this is only for the "general purpose" registers
     688  st->print("G1="); print_location(st, uc->uc_mcontext.gregs[REG_G1]);
     689  st->print("G2="); print_location(st, uc->uc_mcontext.gregs[REG_G2]);
     690  st->print("G3="); print_location(st, uc->uc_mcontext.gregs[REG_G3]);
     691  st->print("G4="); print_location(st, uc->uc_mcontext.gregs[REG_G4]);
     692  st->print("G5="); print_location(st, uc->uc_mcontext.gregs[REG_G5]);
     693  st->print("G6="); print_location(st, uc->uc_mcontext.gregs[REG_G6]);
     694  st->print("G7="); print_location(st, uc->uc_mcontext.gregs[REG_G7]);
     695  st->cr();
     696
     697  st->print("O0="); print_location(st, uc->uc_mcontext.gregs[REG_O0]);
     698  st->print("O1="); print_location(st, uc->uc_mcontext.gregs[REG_O1]);
     699  st->print("O2="); print_location(st, uc->uc_mcontext.gregs[REG_O2]);
     700  st->print("O3="); print_location(st, uc->uc_mcontext.gregs[REG_O3]);
     701  st->print("O4="); print_location(st, uc->uc_mcontext.gregs[REG_O4]);
     702  st->print("O5="); print_location(st, uc->uc_mcontext.gregs[REG_O5]);
     703  st->print("O6="); print_location(st, uc->uc_mcontext.gregs[REG_O6]);
     704  st->print("O7="); print_location(st, uc->uc_mcontext.gregs[REG_O7]);
     705  st->cr();
     706
     707  st->print("L0="); print_location(st, sp[L0->sp_offset_in_saved_window()]);
     708  st->print("L1="); print_location(st, sp[L1->sp_offset_in_saved_window()]);
     709  st->print("L2="); print_location(st, sp[L2->sp_offset_in_saved_window()]);
     710  st->print("L3="); print_location(st, sp[L3->sp_offset_in_saved_window()]);
     711  st->print("L4="); print_location(st, sp[L4->sp_offset_in_saved_window()]);
     712  st->print("L5="); print_location(st, sp[L5->sp_offset_in_saved_window()]);
     713  st->print("L6="); print_location(st, sp[L6->sp_offset_in_saved_window()]);
     714  st->print("L7="); print_location(st, sp[L7->sp_offset_in_saved_window()]);
     715  st->cr();
     716
     717  st->print("I0="); print_location(st, sp[I0->sp_offset_in_saved_window()]);
     718  st->print("I1="); print_location(st, sp[I1->sp_offset_in_saved_window()]);
     719  st->print("I2="); print_location(st, sp[I2->sp_offset_in_saved_window()]);
     720  st->print("I3="); print_location(st, sp[I3->sp_offset_in_saved_window()]);
     721  st->print("I4="); print_location(st, sp[I4->sp_offset_in_saved_window()]);
     722  st->print("I5="); print_location(st, sp[I5->sp_offset_in_saved_window()]);
     723  st->print("I6="); print_location(st, sp[I6->sp_offset_in_saved_window()]);
     724  st->print("I7="); print_location(st, sp[I7->sp_offset_in_saved_window()]);
     725  st->cr();
    660726}
    661727
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/os_solaris_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP
     26#define OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP
     27
    2528  //
    2629  // NOTE: we are back in class os here, not Solaris
     
    4346  // Note: Currently only used in 64 bit Windows implementations
    4447  static bool register_code_area(char *low, char *high) { return true; }
     48
     49#endif // OS_CPU_SOLARIS_SPARC_VM_OS_SOLARIS_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/prefetch_solaris_sparc.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
     26#define OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
     27
     28#include "runtime/prefetch.hpp"
    2429
    2530#if defined(COMPILER2) || defined(_LP64)
     
    5762
    5863#endif // defined(COMPILER2) || defined(_LP64)
     64
     65#endif // OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.il

    r278 r309  
    11//
    2 // Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
     2// Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
    33// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44//
     
    153153        .end
    154154
     155  // Support for jlong Atomic::load and Atomic::store on v8.
     156  //
     157  // void _Atomic_move_long_v8(volatile jlong* src, volatile jlong* dst)
     158  //
     159  // Arguments:
     160  //      src:  O0
     161  //      dest: O1
     162  //
     163  // Overwrites O2 and O3
     164
     165        .inline _Atomic_move_long_v8,2
     166        .volatile
     167        ldd     [%o0], %o2
     168        std     %o2, [%o1]
     169        .nonvolatile
     170        .end
     171
     172  // Support for jlong Atomic::load and Atomic::store on v9.
     173  //
     174  // void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst)
     175  //
     176  // Arguments:
     177  //      src:  O0
     178  //      dest: O1
     179  //
     180  // Overwrites O2
     181
     182        .inline _Atomic_move_long_v9,2
     183        .volatile
     184        ldx     [%o0], %o2
     185        stx     %o2, [%o1]
     186        .nonvolatile
     187        .end
    155188
    156189  // Support for jint Atomic::add(jint add_value, volatile jint* dest).
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#include "precompiled.hpp"
     26#include "runtime/threadLocalStorage.hpp"
     27#include "thread_solaris.inline.hpp"
     28
    2529// Provides an entry point we can link against and
    2630// a buffer we can emit code into. The buffer is
     
    2832// and called from ThreadLocalStorage::thread()
    2933
    30 #include "incls/_precompiled.incl"
    31 #include "incls/_threadLS_solaris_sparc.cpp.incl"
    3234#include <sys/systeminfo.h>
    3335
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/threadLS_solaris_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP
     26#define OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP
    2427
    2528public:
     
    6568    return ix;
    6669  }
     70
     71#endif // OS_CPU_SOLARIS_SPARC_VM_THREADLS_SOLARIS_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_thread_solaris_sparc.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/frame.inline.hpp"
     27#include "thread_solaris.inline.hpp"
    2728
    2829// For Forte Analyzer AsyncGetCallTrace profiling support - thread is
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP
     26#define OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP
    2427private:
    2528
     
    9699  static void enable_register_stack_guard() {}
    97100  static void disable_register_stack_guard() {}
     101
     102#endif // OS_CPU_SOLARIS_SPARC_VM_THREAD_SOLARIS_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/vmStructs_solaris_sparc.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP
     26#define OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP
    2427
    2528// These are the OS and CPU-specific fields, types and integer
     
    6669  /* This must be the last entry, and must be present */                \
    6770  last_entry()
     71
     72#endif // OS_CPU_SOLARIS_SPARC_VM_VMSTRUCTS_SOLARIS_SPARC_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2006, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 # include "incls/_precompiled.incl"
    26 # include "incls/_vm_version_solaris_sparc.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/os.hpp"
     27#include "vm_version_sparc.hpp"
    2728
    2829# include <sys/auxv.h>
    2930# include <sys/auxv_SPARC.h>
    3031# include <sys/systeminfo.h>
     32# include <kstat.h>
    3133
    3234// We need to keep these here as long as we have to build on Solaris
     
    6668  // supported on Solaris 10 and later.
    6769  if (os::Solaris::supports_getisax()) {
    68 #ifndef PRODUCT
    69     if (PrintMiscellaneous && Verbose)
    70       tty->print_cr("getisax(2) supported.");
    71 #endif
    7270
    7371    // Check 32-bit architecture.
     
    8179    uint_t avn = os::Solaris::getisax(&av, 1);
    8280    assert(avn == 1, "should only return one av");
     81
     82#ifndef PRODUCT
     83    if (PrintMiscellaneous && Verbose)
     84      tty->print_cr("getisax(2) returned: " PTR32_FORMAT, av);
     85#endif
    8386
    8487    if (av & AV_SPARC_MUL32)  features |= hardware_mul32_m;
     
    8992    if (av & AV_SPARC_VIS)    features |= vis1_instructions_m;
    9093    if (av & AV_SPARC_VIS2)   features |= vis2_instructions_m;
     94
     95    // Next values are not defined before Solaris 10
     96    // but Solaris 8 is used for jdk6 update builds.
     97#ifndef AV_SPARC_ASI_BLK_INIT
     98#define AV_SPARC_ASI_BLK_INIT 0x0080  /* ASI_BLK_INIT_xxx ASI */
     99#endif
     100    if (av & AV_SPARC_ASI_BLK_INIT) features |= blk_init_instructions_m;
     101
     102#ifndef AV_SPARC_FMAF
     103#define AV_SPARC_FMAF 0x0100        /* Fused Multiply-Add */
     104#endif
     105    if (av & AV_SPARC_FMAF)         features |= fmaf_instructions_m;
     106
     107#ifndef AV_SPARC_FMAU
     108#define    AV_SPARC_FMAU    0x0200  /* Unfused Multiply-Add */
     109#endif
     110    if (av & AV_SPARC_FMAU)         features |= fmau_instructions_m;
     111
     112#ifndef AV_SPARC_VIS3
     113#define    AV_SPARC_VIS3    0x0400  /* VIS3 instruction set extensions */
     114#endif
     115    if (av & AV_SPARC_VIS3)         features |= vis3_instructions_m;
     116
    91117  } else {
    92118    // getisax(2) failed, use the old legacy code.
    93119#ifndef PRODUCT
    94120    if (PrintMiscellaneous && Verbose)
    95       tty->print_cr("getisax(2) not supported.");
     121      tty->print_cr("getisax(2) is not supported.");
    96122#endif
    97123
     
    128154  do_sysinfo(SI_MACHINE, "sun4v", &features, sun4v_m);
    129155
     156  {
     157    // Using kstat to determine the machine type.
     158    kstat_ctl_t* kc = kstat_open();
     159    kstat_t* ksp = kstat_lookup(kc, (char*)"cpu_info", -1, NULL);
     160    const char* implementation = "UNKNOWN";
     161    if (ksp != NULL) {
     162      if (kstat_read(kc, ksp, NULL) != -1 && ksp->ks_data != NULL) {
     163        kstat_named_t* knm = (kstat_named_t *)ksp->ks_data;
     164        for (int i = 0; i < ksp->ks_ndata; i++) {
     165          if (strcmp((const char*)&(knm[i].name),"implementation") == 0) {
     166#ifndef KSTAT_DATA_STRING
     167#define KSTAT_DATA_STRING   9
     168#endif
     169            if (knm[i].data_type == KSTAT_DATA_CHAR) {
     170              // VM is running on Solaris 8 which does not have value.str.
     171              implementation = &(knm[i].value.c[0]);
     172            } else if (knm[i].data_type == KSTAT_DATA_STRING) {
     173              // VM is running on Solaris 10.
     174#ifndef KSTAT_NAMED_STR_PTR
     175              // Solaris 8 was used to build VM, define the structure it misses.
     176              struct str_t {
     177                union {
     178                  char *ptr;     /* NULL-term string */
     179                  char __pad[8]; /* 64-bit padding */
     180                } addr;
     181                uint32_t len;    /* # bytes for strlen + '\0' */
     182              };
     183#define KSTAT_NAMED_STR_PTR(knptr) (( (str_t*)&((knptr)->value) )->addr.ptr)
     184#endif
     185              implementation = KSTAT_NAMED_STR_PTR(&knm[i]);
     186            }
     187#ifndef PRODUCT
     188            if (PrintMiscellaneous && Verbose) {
     189              tty->print_cr("cpu_info.implementation: %s", implementation);
     190            }
     191#endif
     192            // Convert to UPPER case before compare.
     193            char* impl = strdup(implementation);
     194
     195            for (int i = 0; impl[i] != 0; i++)
     196              impl[i] = (char)toupper((uint)impl[i]);
     197            if (strstr(impl, "SPARC64") != NULL) {
     198              features |= sparc64_family_m;
     199            } else if (strstr(impl, "SPARC-T") != NULL) {
     200              features |= T_family_m;
     201              if (strstr(impl, "SPARC-T1") != NULL) {
     202                features |= T1_model_m;
     203              }
     204            } else {
     205              assert(strstr(impl, "SPARC") != NULL, "should be sparc");
     206            }
     207            free((void*)impl);
     208            break;
     209          }
     210        } // for(
     211      }
     212    }
     213    assert(strcmp(implementation, "UNKNOWN") != 0,
     214           "unknown cpu info (changed kstat interface?)");
     215    kstat_close(kc);
     216  }
     217
    130218  return features;
    131219}
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/assembler_solaris_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_assembler_solaris_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "asm/assembler.hpp"
     27#include "assembler_x86.inline.hpp"
     28#include "runtime/os.hpp"
     29#include "runtime/threadLocalStorage.hpp"
    2730
    2831
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/atomic_solaris_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP
     26#define OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP
     27
     28#include "orderAccess_solaris_x86.inline.hpp"
     29#include "runtime/atomic.hpp"
     30#include "runtime/os.hpp"
     31#include "vm_version_x86.hpp"
    2432
    2533inline void Atomic::store    (jbyte    store_value, jbyte*    dest) { *dest = store_value; }
     
    144152}
    145153
    146 extern "C" void _Atomic_load_long(volatile jlong* src, volatile jlong* dst);
     154extern "C" void _Atomic_move_long(volatile jlong* src, volatile jlong* dst);
    147155
    148156inline jlong Atomic::load(volatile jlong* src) {
    149157  volatile jlong dest;
    150   _Atomic_load_long(src, &dest);
     158  _Atomic_move_long(src, &dest);
    151159  return dest;
     160}
     161
     162inline void Atomic::store(jlong store_value, jlong* dest) {
     163  _Atomic_move_long((volatile jlong*)&store_value, (volatile jlong*)dest);
     164}
     165
     166inline void Atomic::store(jlong store_value, volatile jlong* dest) {
     167  _Atomic_move_long((volatile jlong*)&store_value, dest);
    152168}
    153169
     
    246262
    247263#endif // _GNU_SOURCE
     264
     265#endif // OS_CPU_SOLARIS_X86_VM_ATOMIC_SOLARIS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/bytes_solaris_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP
     26#define OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP
    2427
    2528// For Sun Studio - implementation is in solaris_i486.il.
     
    110113}
    111114#endif  //_GNU_SOURCE
     115
     116#endif // OS_CPU_SOLARIS_X86_VM_BYTES_SOLARIS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/copy_solaris_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP
     26#define OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP
    2427
    2528static void pd_conjoint_words(HeapWord* from, HeapWord* to, size_t count) {
     
    137140#endif // AMD64
    138141}
     142
     143#endif // OS_CPU_SOLARIS_X86_VM_COPY_SOLARIS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp

    r278 r309  
    2323 */
    2424
     25#ifndef OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP
     26#define OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP
     27
    2528// Sets the default values for platform dependent flags used by the runtime system.
    2629// (see globals.hpp)
     
    4548// Only used on 64 bit Windows platforms
    4649define_pd_global(bool, UseVectoredExceptions,    false);
     50
     51#endif // OS_CPU_SOLARIS_X86_VM_GLOBALS_SOLARIS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP
     26#define OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP
     27
     28#include "runtime/atomic.hpp"
     29#include "runtime/orderAccess.hpp"
     30#include "vm_version_x86.hpp"
    2431
    2532// Implementation of class OrderAccess.
     
    7582inline jshort   OrderAccess::load_acquire(volatile jshort*  p) { return *p; }
    7683inline jint     OrderAccess::load_acquire(volatile jint*    p) { return *p; }
    77 inline jlong    OrderAccess::load_acquire(volatile jlong*   p) { return *p; }
     84inline jlong    OrderAccess::load_acquire(volatile jlong*   p) { return Atomic::load(p); }
    7885inline jubyte   OrderAccess::load_acquire(volatile jubyte*  p) { return *p; }
    7986inline jushort  OrderAccess::load_acquire(volatile jushort* p) { return *p; }
    8087inline juint    OrderAccess::load_acquire(volatile juint*   p) { return *p; }
    81 inline julong   OrderAccess::load_acquire(volatile julong*  p) { return *p; }
     88inline julong   OrderAccess::load_acquire(volatile julong*  p) { return Atomic::load((volatile jlong*)p); }
    8289inline jfloat   OrderAccess::load_acquire(volatile jfloat*  p) { return *p; }
    8390inline jdouble  OrderAccess::load_acquire(volatile jdouble* p) { return *p; }
     
    9097inline void     OrderAccess::release_store(volatile jshort*  p, jshort  v) { *p = v; }
    9198inline void     OrderAccess::release_store(volatile jint*    p, jint    v) { *p = v; }
    92 inline void     OrderAccess::release_store(volatile jlong*   p, jlong   v) { *p = v; }
     99inline void     OrderAccess::release_store(volatile jlong*   p, jlong   v) { Atomic::store(v, p); }
    93100inline void     OrderAccess::release_store(volatile jubyte*  p, jubyte  v) { *p = v; }
    94101inline void     OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; }
    95102inline void     OrderAccess::release_store(volatile juint*   p, juint   v) { *p = v; }
    96 inline void     OrderAccess::release_store(volatile julong*  p, julong  v) { *p = v; }
     103inline void     OrderAccess::release_store(volatile julong*  p, julong  v) { Atomic::store((jlong)v, (volatile jlong*)p); }
    97104inline void     OrderAccess::release_store(volatile jfloat*  p, jfloat  v) { *p = v; }
    98105inline void     OrderAccess::release_store(volatile jdouble* p, jdouble v) { *p = v; }
     
    118125inline void     OrderAccess::release_store_fence(volatile jshort*  p, jshort  v) { *p = v; fence(); }
    119126inline void     OrderAccess::release_store_fence(volatile jint*    p, jint    v) { *p = v; fence(); }
    120 inline void     OrderAccess::release_store_fence(volatile jlong*   p, jlong   v) { *p = v; fence(); }
     127inline void     OrderAccess::release_store_fence(volatile jlong*   p, jlong   v) { release_store(p, v); fence(); }
    121128inline void     OrderAccess::release_store_fence(volatile jubyte*  p, jubyte  v) { *p = v; fence(); }
    122129inline void     OrderAccess::release_store_fence(volatile jushort* p, jushort v) { *p = v; fence(); }
    123130inline void     OrderAccess::release_store_fence(volatile juint*   p, juint   v) { *p = v; fence(); }
    124 inline void     OrderAccess::release_store_fence(volatile julong*  p, julong  v) { *p = v; fence(); }
     131inline void     OrderAccess::release_store_fence(volatile julong*  p, julong  v) { release_store(p, v); fence(); }
    125132inline void     OrderAccess::release_store_fence(volatile jfloat*  p, jfloat  v) { *p = v; fence(); }
    126133inline void     OrderAccess::release_store_fence(volatile jdouble* p, jdouble v) { *p = v; fence(); }
     
    128135inline void     OrderAccess::release_store_ptr_fence(volatile intptr_t* p, intptr_t v) { *p = v; fence(); }
    129136inline void     OrderAccess::release_store_ptr_fence(volatile void*     p, void*    v) { *(void* volatile *)p = v; fence(); }
     137
     138#endif // OS_CPU_SOLARIS_X86_VM_ORDERACCESS_SOLARIS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp

    r278 r309  
    2323 */
    2424
    25 // do not include  precompiled  header file
    26 # include "incls/_os_solaris_x86.cpp.incl"
     25// no precompiled headers
     26#include "assembler_x86.inline.hpp"
     27#include "classfile/classLoader.hpp"
     28#include "classfile/systemDictionary.hpp"
     29#include "classfile/vmSymbols.hpp"
     30#include "code/icBuffer.hpp"
     31#include "code/vtableStubs.hpp"
     32#include "interpreter/interpreter.hpp"
     33#include "jvm_solaris.h"
     34#include "memory/allocation.inline.hpp"
     35#include "mutex_solaris.inline.hpp"
     36#include "nativeInst_x86.hpp"
     37#include "os_share_solaris.hpp"
     38#include "prims/jniFastGetField.hpp"
     39#include "prims/jvm.h"
     40#include "prims/jvm_misc.hpp"
     41#include "runtime/arguments.hpp"
     42#include "runtime/extendedPC.hpp"
     43#include "runtime/frame.inline.hpp"
     44#include "runtime/interfaceSupport.hpp"
     45#include "runtime/java.hpp"
     46#include "runtime/javaCalls.hpp"
     47#include "runtime/mutexLocker.hpp"
     48#include "runtime/osThread.hpp"
     49#include "runtime/sharedRuntime.hpp"
     50#include "runtime/stubRoutines.hpp"
     51#include "runtime/timer.hpp"
     52#include "thread_solaris.inline.hpp"
     53#include "utilities/events.hpp"
     54#include "utilities/vmError.hpp"
     55#ifdef COMPILER1
     56#include "c1/c1_Runtime1.hpp"
     57#endif
     58#ifdef COMPILER2
     59#include "opto/runtime.hpp"
     60#endif
    2761
    2862// put OS-includes here
     
    709743  sigprocmask(SIG_UNBLOCK, &newset, NULL);
    710744
     745  // Determine which sort of error to throw.  Out of swap may signal
     746  // on the thread stack, which could get a mapping error when touched.
     747  address addr = (address) info->si_addr;
     748  if (sig == SIGBUS && info->si_code == BUS_OBJERR && info->si_errno == ENOMEM) {
     749    vm_exit_out_of_memory(0, "Out of swap space to map in thread stack.");
     750  }
     751
    711752  VMError err(t, sig, pc, info, ucVoid);
    712753  err.report_and_die();
     
    720761  ucontext_t *uc = (ucontext_t*)context;
    721762  st->print_cr("Registers:");
    722 
    723   // this is horrendously verbose but the layout of the registers in the
    724   // context does not match how we defined our abstract Register set, so
    725   // we can't just iterate through the gregs area
    726 
    727763#ifdef AMD64
    728764  st->print(  "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
     
    736772  st->print(", RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]);
    737773  st->cr();
    738   st->print(  "R8=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);
    739   st->print(", R9=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);
     774  st->print(  "R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);
     775  st->print(", R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);
    740776  st->print(", R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]);
    741777  st->print(", R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]);
     
    748784  st->print(  "RIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RIP]);
    749785  st->print(", RFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RFL]);
    750 
    751   st->cr();
    752   st->cr();
    753 
    754   st->print_cr("Register to memory mapping:");
    755   st->cr();
    756 
    757   // this is only for the "general purpose" registers
    758 
    759   st->print_cr("RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
    760   print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
    761   st->cr();
    762   st->print_cr("RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
    763   print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
    764   st->cr();
    765   st->print_cr("RCX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RCX]);
    766   print_location(st, uc->uc_mcontext.gregs[REG_RCX]);
    767   st->cr();
    768   st->print_cr("RDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDX]);
    769   print_location(st, uc->uc_mcontext.gregs[REG_RDX]);
    770   st->cr();
    771   st->print_cr("RSP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSP]);
    772   print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
    773   st->cr();
    774   st->print_cr("RBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBP]);
    775   print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
    776   st->cr();
    777   st->print_cr("RSI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSI]);
    778   print_location(st, uc->uc_mcontext.gregs[REG_RSI]);
    779   st->cr();
    780   st->print_cr("RDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDI]);
    781   print_location(st, uc->uc_mcontext.gregs[REG_RDI]);
    782   st->cr();
    783   st->print_cr("R8 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R8]);
    784   print_location(st, uc->uc_mcontext.gregs[REG_R8]);
    785   st->cr();
    786   st->print_cr("R9 =" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R9]);
    787   print_location(st, uc->uc_mcontext.gregs[REG_R9]);
    788   st->cr();
    789   st->print_cr("R10=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R10]);
    790   print_location(st, uc->uc_mcontext.gregs[REG_R10]);
    791   st->cr();
    792   st->print_cr("R11=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R11]);
    793   print_location(st, uc->uc_mcontext.gregs[REG_R11]);
    794   st->cr();
    795   st->print_cr("R12=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R12]);
    796   print_location(st, uc->uc_mcontext.gregs[REG_R12]);
    797   st->cr();
    798   st->print_cr("R13=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R13]);
    799   print_location(st, uc->uc_mcontext.gregs[REG_R13]);
    800   st->cr();
    801   st->print_cr("R14=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R14]);
    802   print_location(st, uc->uc_mcontext.gregs[REG_R14]);
    803   st->cr();
    804   st->print_cr("R15=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_R15]);
    805   print_location(st, uc->uc_mcontext.gregs[REG_R15]);
    806 
    807786#else
    808787  st->print(  "EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EAX]);
     
    818797  st->print(  "EIP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EIP]);
    819798  st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EFL]);
    820 
    821   st->cr();
    822   st->cr();
    823 
    824   st->print_cr("Register to memory mapping:");
    825   st->cr();
    826 
    827   // this is only for the "general purpose" registers
    828 
    829   st->print_cr("EAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EAX]);
    830   print_location(st, uc->uc_mcontext.gregs[EAX]);
    831   st->cr();
    832   st->print_cr("EBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EBX]);
    833   print_location(st, uc->uc_mcontext.gregs[EBX]);
    834   st->cr();
    835   st->print_cr("ECX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[ECX]);
    836   print_location(st, uc->uc_mcontext.gregs[ECX]);
    837   st->cr();
    838   st->print_cr("EDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EDX]);
    839   print_location(st, uc->uc_mcontext.gregs[EDX]);
    840   st->cr();
    841   st->print_cr("ESP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[UESP]);
    842   print_location(st, uc->uc_mcontext.gregs[UESP]);
    843   st->cr();
    844   st->print_cr("EBP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EBP]);
    845   print_location(st, uc->uc_mcontext.gregs[EBP]);
    846   st->cr();
    847   st->print_cr("ESI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[ESI]);
    848   print_location(st, uc->uc_mcontext.gregs[ESI]);
    849   st->cr();
    850   st->print_cr("EDI=" INTPTR_FORMAT, uc->uc_mcontext.gregs[EDI]);
    851   print_location(st, uc->uc_mcontext.gregs[EDI]);
    852 
    853799#endif // AMD64
    854800  st->cr();
     
    866812  address pc = epc.pc();
    867813  st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
    868   print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
     814  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
     815}
     816
     817void os::print_register_info(outputStream *st, void *context) {
     818  if (context == NULL) return;
     819
     820  ucontext_t *uc = (ucontext_t*)context;
     821
     822  st->print_cr("Register to memory mapping:");
     823  st->cr();
     824
     825  // this is horrendously verbose but the layout of the registers in the
     826  // context does not match how we defined our abstract Register set, so
     827  // we can't just iterate through the gregs area
     828
     829  // this is only for the "general purpose" registers
     830
     831#ifdef AMD64
     832  st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
     833  st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
     834  st->print("RCX="); print_location(st, uc->uc_mcontext.gregs[REG_RCX]);
     835  st->print("RDX="); print_location(st, uc->uc_mcontext.gregs[REG_RDX]);
     836  st->print("RSP="); print_location(st, uc->uc_mcontext.gregs[REG_RSP]);
     837  st->print("RBP="); print_location(st, uc->uc_mcontext.gregs[REG_RBP]);
     838  st->print("RSI="); print_location(st, uc->uc_mcontext.gregs[REG_RSI]);
     839  st->print("RDI="); print_location(st, uc->uc_mcontext.gregs[REG_RDI]);
     840  st->print("R8 ="); print_location(st, uc->uc_mcontext.gregs[REG_R8]);
     841  st->print("R9 ="); print_location(st, uc->uc_mcontext.gregs[REG_R9]);
     842  st->print("R10="); print_location(st, uc->uc_mcontext.gregs[REG_R10]);
     843  st->print("R11="); print_location(st, uc->uc_mcontext.gregs[REG_R11]);
     844  st->print("R12="); print_location(st, uc->uc_mcontext.gregs[REG_R12]);
     845  st->print("R13="); print_location(st, uc->uc_mcontext.gregs[REG_R13]);
     846  st->print("R14="); print_location(st, uc->uc_mcontext.gregs[REG_R14]);
     847  st->print("R15="); print_location(st, uc->uc_mcontext.gregs[REG_R15]);
     848#else
     849  st->print("EAX="); print_location(st, uc->uc_mcontext.gregs[EAX]);
     850  st->print("EBX="); print_location(st, uc->uc_mcontext.gregs[EBX]);
     851  st->print("ECX="); print_location(st, uc->uc_mcontext.gregs[ECX]);
     852  st->print("EDX="); print_location(st, uc->uc_mcontext.gregs[EDX]);
     853  st->print("ESP="); print_location(st, uc->uc_mcontext.gregs[UESP]);
     854  st->print("EBP="); print_location(st, uc->uc_mcontext.gregs[EBP]);
     855  st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[ESI]);
     856  st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[EDI]);
     857#endif
     858
     859  st->cr();
    869860}
    870861
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP
     26#define OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP
    2427
    2528  //
     
    4952  // Note: Currently only used in 64 bit Windows implementations
    5053  static bool register_code_area(char *low, char *high) { return true; }
     54
     55#endif // OS_CPU_SOLARIS_X86_VM_OS_SOLARIS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/prefetch_solaris_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP
     26#define OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP
     27
     28#include "runtime/prefetch.hpp"
     29
    2530extern "C" {
    2631  void _Prefetch_read (void *loc, intx interval);
     
    4045#endif // AMD64
    4146}
     47
     48#endif // OS_CPU_SOLARIS_X86_VM_PREFETCH_SOLARIS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.il

    r278 r309  
    11//
    2 // Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
     2// Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
    33// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44//
     
    105105      .end
    106106
    107   // Support for void Atomic::load(volatile jlong* src, volatile jlong* dest).
    108       .inline _Atomic_load_long,2
     107  // Support for jlong Atomic::load and Atomic::store.
     108  // void _Atomic_move_long(volatile jlong* src, volatile jlong* dst)
     109      .inline _Atomic_move_long,2
    109110      movl     0(%esp), %eax   // src
    110111      fildll    (%eax)
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_32.s

    r278 r309  
    11//
    2 // Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
     2// Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
    33// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44//
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/solaris_x86_64.il

    r278 r309  
    11//
    2 // Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
     2// Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
    33// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44//
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_threadLS_solaris_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/threadLocalStorage.hpp"
     27#include "thread_solaris.inline.hpp"
    2728
    2829#ifdef AMD64
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/threadLS_solaris_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP
     26#define OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP
    2427
    2528// Processor dependent parts of ThreadLocalStorage
     
    7982  // Java Thread
    8083  static inline Thread* thread();
     84
     85#endif // OS_CPU_SOLARIS_X86_VM_THREADLS_SOLARIS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_thread_solaris_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/frame.inline.hpp"
     27#include "thread_solaris.inline.hpp"
    2728
    2829// For Forte Analyzer AsyncGetCallTrace profiling support - thread is
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/thread_solaris_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP
     26#define OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP
    2427
    2528 private:
     
    5861  static void enable_register_stack_guard() {}
    5962  static void disable_register_stack_guard() {}
     63
     64#endif // OS_CPU_SOLARIS_X86_VM_THREAD_SOLARIS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/vmStructs_solaris_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP
     26#define OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP
    2427
    2528// These are the OS and CPU-specific fields, types and integer
     
    5861  /* This must be the last entry, and must be present */                \
    5962  last_entry()
     63
     64#endif // OS_CPU_SOLARIS_X86_VM_VMSTRUCTS_SOLARIS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/solaris_x86/vm/vm_version_solaris_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 # include "incls/_precompiled.incl"
    26 # include "incls/_vm_version_solaris_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/os.hpp"
     27#include "vm_version_x86.hpp"
     28
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/assembler_windows_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_assembler_windows_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "asm/assembler.hpp"
     27#include "assembler_x86.inline.hpp"
     28#include "runtime/os.hpp"
     29#include "runtime/threadLocalStorage.hpp"
    2730
    2831
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/atomic_windows_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP
     26#define OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP
     27
    2528#ifdef __EMX__
    2629
     
    2831
    2932#else // __EMX__
     33
     34#include "orderAccess_windows_x86.inline.hpp"
     35#include "runtime/atomic.hpp"
     36#include "runtime/os.hpp"
     37#include "vm_version_x86.hpp"
    3038
    3139// The following alternative implementations are needed because
     
    136144}
    137145
     146inline jlong Atomic::load(volatile jlong* src) { return *src; }
     147
    138148#else // !AMD64
    139149
    140 //inline void Atomic::store    (jlong    store_value, jlong*    dest) { *dest = store_value; }
    141 //inline void Atomic::store  (jlong    store_value, volatile jlong*    dest) { *dest = store_value; }
    142150inline jint     Atomic::add    (jint     add_value, volatile jint*     dest) {
    143151  int mp = os::is_MP();
     
    253261  return (void*)cmpxchg((jint)exchange_value, (volatile jint*)dest, (jint)compare_value);
    254262}
     263
     264inline jlong Atomic::load(volatile jlong* src) {
     265  volatile jlong dest;
     266  volatile jlong* pdest = &dest;
     267  __asm {
     268    mov eax, src
     269    fild     qword ptr [eax]
     270    mov eax, pdest
     271    fistp    qword ptr [eax]
     272  }
     273  return dest;
     274}
     275
     276inline void Atomic::store(jlong store_value, volatile jlong* dest) {
     277  volatile jlong* src = &store_value;
     278  __asm {
     279    mov eax, src
     280    fild     qword ptr [eax]
     281    mov eax, dest
     282    fistp    qword ptr [eax]
     283  }
     284}
     285
     286inline void Atomic::store(jlong store_value, jlong* dest) {
     287  Atomic::store(store_value, (volatile jlong*)dest);
     288}
     289
    255290#endif // AMD64
    256291
     
    258293
    259294#endif // __EMX__
     295
     296#endif // OS_CPU_WINDOWS_X86_VM_ATOMIC_WINDOWS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/bytes_windows_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP
     26#define OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP
    2427
    2528#ifdef __EMX__
     
    8992
    9093#endif // __EMX__
     94
     95#endif // OS_CPU_WINDOWS_X86_VM_BYTES_WINDOWS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/copy_windows_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP
     26#define OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP
    2427
    2528#ifdef __EMX__
     
    173176
    174177#endif // __EMX__
     178
     179#endif // OS_CPU_WINDOWS_X86_VM_COPY_WINDOWS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP
     26#define OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP
    2427
    2528// Sets the default values for platform dependent flags used by the runtime system.
     
    4750// Only used on 64 bit Windows platforms
    4851define_pd_global(bool, UseVectoredExceptions,    false);
     52
     53#endif // OS_CPU_WINDOWS_X86_VM_GLOBALS_WINDOWS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP
     26#define OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP
     27
    2528#ifdef __EMX__
    2629
     
    2831
    2932#else // __EMX__
     33
     34#include "runtime/atomic.hpp"
     35#include "runtime/orderAccess.hpp"
     36#include "vm_version_x86.hpp"
    3037
    3138#pragma warning(disable: 4035) // Disables warnings reporting missing return statement
     
    6673inline jshort   OrderAccess::load_acquire(volatile jshort*  p) { return *p; }
    6774inline jint     OrderAccess::load_acquire(volatile jint*    p) { return *p; }
    68 inline jlong    OrderAccess::load_acquire(volatile jlong*   p) { return *p; }
     75inline jlong    OrderAccess::load_acquire(volatile jlong*   p) { return Atomic::load(p); }
    6976inline jubyte   OrderAccess::load_acquire(volatile jubyte*  p) { return *p; }
    7077inline jushort  OrderAccess::load_acquire(volatile jushort* p) { return *p; }
    7178inline juint    OrderAccess::load_acquire(volatile juint*   p) { return *p; }
    72 inline julong   OrderAccess::load_acquire(volatile julong*  p) { return *p; }
     79inline julong   OrderAccess::load_acquire(volatile julong*  p) { return Atomic::load((volatile jlong*)p); }
    7380inline jfloat   OrderAccess::load_acquire(volatile jfloat*  p) { return *p; }
    7481inline jdouble  OrderAccess::load_acquire(volatile jdouble* p) { return *p; }
     
    8188inline void     OrderAccess::release_store(volatile jshort*  p, jshort  v) { *p = v; }
    8289inline void     OrderAccess::release_store(volatile jint*    p, jint    v) { *p = v; }
    83 inline void     OrderAccess::release_store(volatile jlong*   p, jlong   v) { *p = v; }
     90inline void     OrderAccess::release_store(volatile jlong*   p, jlong   v) { Atomic::store(v, p); }
    8491inline void     OrderAccess::release_store(volatile jubyte*  p, jubyte  v) { *p = v; }
    8592inline void     OrderAccess::release_store(volatile jushort* p, jushort v) { *p = v; }
    8693inline void     OrderAccess::release_store(volatile juint*   p, juint   v) { *p = v; }
    87 inline void     OrderAccess::release_store(volatile julong*  p, julong  v) { *p = v; }
     94inline void     OrderAccess::release_store(volatile julong*  p, julong  v) { Atomic::store((jlong)v, (volatile jlong*)p); }
    8895inline void     OrderAccess::release_store(volatile jfloat*  p, jfloat  v) { *p = v; }
    8996inline void     OrderAccess::release_store(volatile jdouble* p, jdouble v) { *p = v; }
     
    189196}
    190197
    191 inline void     OrderAccess::release_store_fence(volatile jlong*   p, jlong   v) { *p = v; fence(); }
     198inline void     OrderAccess::release_store_fence(volatile jlong*   p, jlong   v) { release_store(p, v); fence(); }
    192199
    193200inline void     OrderAccess::release_store_fence(volatile jubyte*  p, jubyte  v) { release_store_fence((volatile jbyte*)p,  (jbyte)v);  }
     
    217224
    218225#endif // __EMX__
     226
     227#endif // OS_CPU_WINDOWS_X86_VM_ORDERACCESS_WINDOWS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 // do not include  precompiled  header file
    26 # include "incls/_os_windows_x86.cpp.incl"
     25// no precompiled headers
     26#include "assembler_x86.inline.hpp"
     27#include "classfile/classLoader.hpp"
     28#include "classfile/systemDictionary.hpp"
     29#include "classfile/vmSymbols.hpp"
     30#include "code/icBuffer.hpp"
     31#include "code/vtableStubs.hpp"
     32#include "interpreter/interpreter.hpp"
     33#include "jvm_windows.h"
     34#include "memory/allocation.inline.hpp"
     35#include "mutex_windows.inline.hpp"
     36#include "nativeInst_x86.hpp"
     37#include "os_share_windows.hpp"
     38#include "prims/jniFastGetField.hpp"
     39#include "prims/jvm.h"
     40#include "prims/jvm_misc.hpp"
     41#include "runtime/arguments.hpp"
     42#include "runtime/extendedPC.hpp"
     43#include "runtime/frame.inline.hpp"
     44#include "runtime/interfaceSupport.hpp"
     45#include "runtime/java.hpp"
     46#include "runtime/javaCalls.hpp"
     47#include "runtime/mutexLocker.hpp"
     48#include "runtime/osThread.hpp"
     49#include "runtime/sharedRuntime.hpp"
     50#include "runtime/stubRoutines.hpp"
     51#include "runtime/timer.hpp"
     52#include "thread_windows.inline.hpp"
     53#include "utilities/events.hpp"
     54#include "utilities/vmError.hpp"
     55#ifdef COMPILER1
     56#include "c1/c1_Runtime1.hpp"
     57#endif
     58#ifdef COMPILER2
     59#include "opto/runtime.hpp"
     60#endif
     61
    2762# include "unwind_windows_x86.hpp"
    2863#undef REG_SP
     
    164199  if (UseVectoredExceptions) return true;
    165200
    166   BufferBlob* b = BufferBlob::create("CodeCache Exception Handler", sizeof (DynamicCodeData));
    167   CodeBuffer cb(b->instructions_begin(), b->instructions_size());
     201  BufferBlob* blob = BufferBlob::create("CodeCache Exception Handler", sizeof(DynamicCodeData));
     202  CodeBuffer cb(blob);
    168203  MacroAssembler* masm = new MacroAssembler(&cb);
    169204  pDCD = (pDynamicCodeData) masm->pc();
     
    406441  st->print(", RDI=" INTPTR_FORMAT, uc->Rdi);
    407442  st->cr();
    408   st->print(  "R8=" INTPTR_FORMAT, uc->R8);
    409   st->print(", R9=" INTPTR_FORMAT, uc->R9);
     443  st->print(  "R8 =" INTPTR_FORMAT, uc->R8);
     444  st->print(", R9 =" INTPTR_FORMAT, uc->R9);
    410445  st->print(", R10=" INTPTR_FORMAT, uc->R10);
    411446  st->print(", R11=" INTPTR_FORMAT, uc->R11);
     
    418453  st->print(  "RIP=" INTPTR_FORMAT, uc->Rip);
    419454  st->print(", EFLAGS=" INTPTR_FORMAT, uc->EFlags);
    420 
    421   st->cr();
    422   st->cr();
    423 
    424   st->print_cr("Register to memory mapping:");
    425   st->cr();
    426 
    427   // this is only for the "general purpose" registers
    428 
    429   st->print_cr("RAX=" INTPTR_FORMAT, uc->Rax);
    430   print_location(st, uc->Rax);
    431   st->cr();
    432   st->print_cr("RBX=" INTPTR_FORMAT, uc->Rbx);
    433   print_location(st, uc->Rbx);
    434   st->cr();
    435   st->print_cr("RCX=" INTPTR_FORMAT, uc->Rcx);
    436   print_location(st, uc->Rcx);
    437   st->cr();
    438   st->print_cr("RDX=" INTPTR_FORMAT, uc->Rdx);
    439   print_location(st, uc->Rdx);
    440   st->cr();
    441   st->print_cr("RSP=" INTPTR_FORMAT, uc->Rsp);
    442   print_location(st, uc->Rsp);
    443   st->cr();
    444   st->print_cr("RBP=" INTPTR_FORMAT, uc->Rbp);
    445   print_location(st, uc->Rbp);
    446   st->cr();
    447   st->print_cr("RSI=" INTPTR_FORMAT, uc->Rsi);
    448   print_location(st, uc->Rsi);
    449   st->cr();
    450   st->print_cr("RDI=" INTPTR_FORMAT, uc->Rdi);
    451   print_location(st, uc->Rdi);
    452   st->cr();
    453   st->print_cr("R8 =" INTPTR_FORMAT, uc->R8);
    454   print_location(st, uc->R8);
    455   st->cr();
    456   st->print_cr("R9 =" INTPTR_FORMAT, uc->R9);
    457   print_location(st, uc->R9);
    458   st->cr();
    459   st->print_cr("R10=" INTPTR_FORMAT, uc->R10);
    460   print_location(st, uc->R10);
    461   st->cr();
    462   st->print_cr("R11=" INTPTR_FORMAT, uc->R11);
    463   print_location(st, uc->R11);
    464   st->cr();
    465   st->print_cr("R12=" INTPTR_FORMAT, uc->R12);
    466   print_location(st, uc->R12);
    467   st->cr();
    468   st->print_cr("R13=" INTPTR_FORMAT, uc->R13);
    469   print_location(st, uc->R13);
    470   st->cr();
    471   st->print_cr("R14=" INTPTR_FORMAT, uc->R14);
    472   print_location(st, uc->R14);
    473   st->cr();
    474   st->print_cr("R15=" INTPTR_FORMAT, uc->R15);
    475   print_location(st, uc->R15);
    476455#else
    477456  st->print(  "EAX=" INTPTR_FORMAT, uc->Eax);
     
    487466  st->print(  "EIP=" INTPTR_FORMAT, uc->Eip);
    488467  st->print(", EFLAGS=" INTPTR_FORMAT, uc->EFlags);
    489 
    490   st->cr();
    491   st->cr();
    492 
    493   st->print_cr("Register to memory mapping:");
    494   st->cr();
    495 
    496   // this is only for the "general purpose" registers
    497 
    498   st->print_cr("EAX=" INTPTR_FORMAT, uc->Eax);
    499   print_location(st, uc->Eax);
    500   st->cr();
    501   st->print_cr("EBX=" INTPTR_FORMAT, uc->Ebx);
    502   print_location(st, uc->Ebx);
    503   st->cr();
    504   st->print_cr("ECX=" INTPTR_FORMAT, uc->Ecx);
    505   print_location(st, uc->Ecx);
    506   st->cr();
    507   st->print_cr("EDX=" INTPTR_FORMAT, uc->Edx);
    508   print_location(st, uc->Edx);
    509   st->cr();
    510   st->print_cr("ESP=" INTPTR_FORMAT, uc->Esp);
    511   print_location(st, uc->Esp);
    512   st->cr();
    513   st->print_cr("EBP=" INTPTR_FORMAT, uc->Ebp);
    514   print_location(st, uc->Ebp);
    515   st->cr();
    516   st->print_cr("ESI=" INTPTR_FORMAT, uc->Esi);
    517   print_location(st, uc->Esi);
    518   st->cr();
    519   st->print_cr("EDI=" INTPTR_FORMAT, uc->Edi);
    520   print_location(st, uc->Edi);
    521468#endif // AMD64
    522469  st->cr();
     
    533480  address pc = (address)uc->REG_PC;
    534481  st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
    535   print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
     482  print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
     483  st->cr();
     484}
     485
     486
     487void os::print_register_info(outputStream *st, void *context) {
     488  if (context == NULL) return;
     489
     490  CONTEXT* uc = (CONTEXT*)context;
     491
     492  st->print_cr("Register to memory mapping:");
     493  st->cr();
     494
     495  // this is only for the "general purpose" registers
     496
     497#ifdef AMD64
     498  st->print("RAX="); print_location(st, uc->Rax);
     499  st->print("RBX="); print_location(st, uc->Rbx);
     500  st->print("RCX="); print_location(st, uc->Rcx);
     501  st->print("RDX="); print_location(st, uc->Rdx);
     502  st->print("RSP="); print_location(st, uc->Rsp);
     503  st->print("RBP="); print_location(st, uc->Rbp);
     504  st->print("RSI="); print_location(st, uc->Rsi);
     505  st->print("RDI="); print_location(st, uc->Rdi);
     506  st->print("R8 ="); print_location(st, uc->R8);
     507  st->print("R9 ="); print_location(st, uc->R9);
     508  st->print("R10="); print_location(st, uc->R10);
     509  st->print("R11="); print_location(st, uc->R11);
     510  st->print("R12="); print_location(st, uc->R12);
     511  st->print("R13="); print_location(st, uc->R13);
     512  st->print("R14="); print_location(st, uc->R14);
     513  st->print("R15="); print_location(st, uc->R15);
     514#else
     515  st->print("EAX="); print_location(st, uc->Eax);
     516  st->print("EBX="); print_location(st, uc->Ebx);
     517  st->print("ECX="); print_location(st, uc->Ecx);
     518  st->print("EDX="); print_location(st, uc->Edx);
     519  st->print("ESP="); print_location(st, uc->Esp);
     520  st->print("EBP="); print_location(st, uc->Ebp);
     521  st->print("ESI="); print_location(st, uc->Esi);
     522  st->print("EDI="); print_location(st, uc->Edi);
     523#endif
     524
    536525  st->cr();
    537526}
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/os_windows_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP
     26#define OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP
    2427
    2528  //
     
    5760
    5861  static bool      register_code_area(char *low, char *high);
     62
     63#endif // OS_CPU_WINDOWS_X86_VM_OS_WINDOWS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/prefetch_windows_x86.inline.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP
     26#define OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP
     27
     28#include "runtime/prefetch.hpp"
     29
    2530inline void Prefetch::read (void *loc, intx interval) {}
    2631inline void Prefetch::write(void *loc, intx interval) {}
     32
     33#endif // OS_CPU_WINDOWS_X86_VM_PREFETCH_WINDOWS_X86_INLINE_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/threadLS_windows_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#include "precompiled.hpp"
     26#include "runtime/threadLocalStorage.hpp"
     27#include "thread_windows.inline.hpp"
     28
    2529// Provides an entry point we can link against and
    2630// a buffer we can emit code into. The buffer is
    2731// filled by ThreadLocalStorage::generate_code_for_get_thread
    2832// and called from ThreadLocalStorage::thread()
    29 
    30 #include "incls/_precompiled.incl"
    31 #include "incls/_threadLS_windows_x86.cpp.incl"
    3233
    3334int ThreadLocalStorage::_thread_ptr_offset = 0;
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/threadLS_windows_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
     25#ifndef OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP
     26#define OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP
     27
    2528// Processor dependent parts of ThreadLocalStorage
    2629
     
    4346
    4447  static inline int get_thread_ptr_offset() { return _thread_ptr_offset; }
     48
     49#endif // OS_CPU_WINDOWS_X86_VM_THREADLS_WINDOWS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/thread_windows_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 #include "incls/_precompiled.incl"
    26 #include "incls/_thread_windows_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/frame.inline.hpp"
     27#include "thread_windows.inline.hpp"
    2728
    2829// For Forte Analyzer AsyncGetCallTrace profiling support - thread is
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/thread_windows_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP
     26#define OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP
    2427
    2528 private:
     
    6164  static void enable_register_stack_guard() {}
    6265  static void disable_register_stack_guard() {}
     66
     67#endif // OS_CPU_WINDOWS_X86_VM_THREAD_WINDOWS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2004, 2009, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP
     26#define OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP
    2427
    2528
     
    8285
    8386#endif // AMD64
     87
     88#endif // OS_CPU_WINDOWS_X86_VM_UNWIND_WINDOWS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/vmStructs_windows_x86.hpp

    r278 r309  
    11/*
    2  * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2222 *
    2323 */
     24
     25#ifndef OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP
     26#define OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP
    2427
    2528// These are the OS and CPU-specific fields, types and integer
     
    5356  /* This must be the last entry, and must be present */                \
    5457  last_entry()
     58
     59#endif // OS_CPU_WINDOWS_X86_VM_VMSTRUCTS_WINDOWS_X86_HPP
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/vm_version_windows_x86.cpp

    r278 r309  
    11/*
    2  * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
     2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
    33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44 *
     
    2323 */
    2424
    25 # include "incls/_precompiled.incl"
    26 # include "incls/_vm_version_windows_x86.cpp.incl"
     25#include "precompiled.hpp"
     26#include "runtime/os.hpp"
     27#include "vm_version_x86.hpp"
     28
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/windows_x86_32.ad

    r278 r309  
    11//
    2 // Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
     2// Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
    33// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44//
     
    142142// emit an interrupt that is caught by the debugger
    143143void emit_break(CodeBuffer &cbuf) {
    144   *(cbuf.code_end()) = (unsigned char)(0xcc);
    145   cbuf.set_code_end(cbuf.code_end() + 1);
     144  cbuf.insts()->emit_int8((unsigned char) 0xcc);
    146145}
    147146
  • trunk/openjdk/hotspot/src/os_cpu/windows_x86/vm/windows_x86_64.ad

    r278 r309  
    11//
    2 // Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
     2// Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
    33// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    44//
     
    145145// emit an interrupt that is caught by the debugger
    146146void emit_break(CodeBuffer &cbuf) {
    147   *(cbuf.code_end()) = (unsigned char)(0xcc);
    148   cbuf.set_code_end(cbuf.code_end() + 1);
     147  cbuf.insts()->emit_int8((unsigned char) 0xcc);
    149148}
    150149
Note: See TracChangeset for help on using the changeset viewer.