changeset 3658:5a98bf7d847b

6879063: SA should use hsdis for disassembly Summary: We should in SA to use hsdis for it like the JVM does to replace the current java based disassembler. Reviewed-by: twisti, jrose, sla Contributed-by: yumin.qi@oracle.com
author minqi
date Mon, 24 Sep 2012 12:44:00 -0700
parents 8440414b0fd8
children 3d739d45d9fd
files agent/make/ClosureFinder.java agent/make/Makefile agent/src/os/bsd/MacosxDebuggerLocal.m agent/src/os/linux/Makefile agent/src/os/linux/mapfile agent/src/os/solaris/proc/Makefile agent/src/os/solaris/proc/mapfile agent/src/os/win32/windbg/Makefile agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java agent/src/share/classes/sun/jvm/hotspot/TestDebugger.java agent/src/share/classes/sun/jvm/hotspot/asm/AbstractInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/Address.java agent/src/share/classes/sun/jvm/hotspot/asm/Arithmetic.java agent/src/share/classes/sun/jvm/hotspot/asm/ArithmeticInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/BaseIndexScaleDispAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/BranchInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/CPUHelper.java agent/src/share/classes/sun/jvm/hotspot/asm/CallInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/DirectAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/Disassembler.java agent/src/share/classes/sun/jvm/hotspot/asm/Immediate.java agent/src/share/classes/sun/jvm/hotspot/asm/IndirectAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/Instruction.java agent/src/share/classes/sun/jvm/hotspot/asm/InstructionVisitor.java agent/src/share/classes/sun/jvm/hotspot/asm/LoadInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/LogicInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/MemoryInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/MoveInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/PCRelativeAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/RTLDataTypes.java agent/src/share/classes/sun/jvm/hotspot/asm/RTLOperations.java agent/src/share/classes/sun/jvm/hotspot/asm/ReturnInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/ShiftInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/StoreInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/amd64/AMD64FloatRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/amd64/AMD64Helper.java agent/src/share/classes/sun/jvm/hotspot/asm/amd64/AMD64Register.java agent/src/share/classes/sun/jvm/hotspot/asm/amd64/AMD64Registers.java agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64FloatRegister.java agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64FloatRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64Helper.java agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64Register.java agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64Registers.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/AlternateSpaceLdstubDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/AlternateSpaceLoadDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/AlternateSpaceStoreDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/AlternateSpaceSwapDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/ArithmeticDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/BranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/CallDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/CoprocessorBranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/CoprocessorDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FP2RegisterDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FPArithmeticDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FPMoveDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FPopDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FloatBranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FloatDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FlushDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/Format3ADecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/IllegalInstructionDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/InstructionDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/IntegerBranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/JmplDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/LdstubDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/LoadDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/LogicDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/MemoryInstructionDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/ReadDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/ReadWriteDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/RegisterDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/RestoreDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/RettDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCArithmeticInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCAtomicLoadStoreInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCBranchInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCCallInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCDisassembler.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFP2RegisterInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFPArithmeticInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFPMoveInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFloatRegister.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFloatRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFlushInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFormat3AInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCHelper.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCIllegalInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCIndirectCallInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCInstructionFactory.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCInstructionFactoryImpl.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCJmplInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCLdstubInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCLoadInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCLogicInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCMemoryInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCMoveInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCNoopInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCOpcodes.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCReadInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRegisterIndirectAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRestoreInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRettInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCReturnInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSaveInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSethiInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCShiftInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSpecialLoadInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSpecialRegisterInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSpecialRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSpecialStoreInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCStbarInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCStoreInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSwapInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCTrapInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCUnimpInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV8Disassembler.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9BranchInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9CasInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9ConditionFlags.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9Disassembler.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9DoneInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9FMOVccInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9FMOVrInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9FlushwInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9IlltrapInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9ImpdepInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9Instruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9InstructionFactory.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9InstructionFactoryImpl.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9MOVccInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9MOVrInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9MembarInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9Opcodes.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9PopcInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9PrefetchInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9PrivilegedRegisterInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9PrivilegedRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9RdprInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9ReadInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9RegisterBranchInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9RegisterIndirectAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9RestoredInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9RetryInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9ReturnInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9SavedInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9SirInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9SpecialRegisterInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9SpecialRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9WriteInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV9WrprInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCWriteInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SaveDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SethiDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/ShiftDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SpecialLoadDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SpecialLoadStoreDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SpecialStoreDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/StoreDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SwapDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/TrapDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/UnimpDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V8FPop1Decoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V8FPop2Decoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9AlternateSpaceDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9AlternateSpaceLdstubDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9AlternateSpaceLoadDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9AlternateSpacePrefetchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9AlternateSpaceStoreDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9AlternateSpaceSwapDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9BranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9CCBranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9CMoveDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9CasDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9DoneRetryDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9FMOVccDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9FMOVrDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9FPop1Decoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9FPop2Decoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9FloatBranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9FlushwDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9InstructionDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9IntRegisterBranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9IntegerBranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9MOVccDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9MOVrDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9PopcDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9PrefetchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9PrivilegedReadWriteDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9RdprDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9ReadDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9RegisterBranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9SavedRestoredDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9ShiftDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9SpecialLoadDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9SpecialStoreDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9WriteDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/V9WrprDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/sparc/WriteDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/ArithmeticDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/BranchDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/CallDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/ConditionalJmpDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/FPArithmeticDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/FPInstructionDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/FPLoadDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/FPStoreDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/FloatDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/FloatGRPDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/GRPDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/InstructionDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/JmpDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/LogicalDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/MoveDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/RotateDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/SSEArithmeticDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/SSEInstructionDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/SSELogicalDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/SSEMoveDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/SSEShiftDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/ShiftDecoder.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86ArithmeticInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86BranchInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86CallInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86CondJmpInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86DirectAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86Disassembler.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86FPArithmeticInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86FPInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86FPLoadInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86FPStoreInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86FloatRegister.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86FloatRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86GeneralInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86Helper.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86IllegalInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86Instruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86InstructionFactory.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86InstructionFactoryImpl.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86JmpInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86LogicInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86MMXRegister.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86MMXRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86MemoryIndirectAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86MemoryInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86MoveInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86MoveLoadInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86MoveStoreInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86Opcodes.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86PCRelativeAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86Register.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86RegisterDirectAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86RegisterIndirectAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86RegisterPart.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86Registers.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86RotateInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86SegmentRegister.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86SegmentRegisterAddress.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86SegmentRegisters.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86ShiftInstruction.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86XMMRegister.java agent/src/share/classes/sun/jvm/hotspot/asm/x86/X86XMMRegisters.java agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpotAgent.java agent/src/share/classes/sun/jvm/hotspot/code/CodeBlob.java agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java agent/src/share/classes/sun/jvm/hotspot/jdi/SADebugServer.java agent/src/share/classes/sun/jvm/hotspot/jdi/VirtualMachineImpl.java agent/src/share/classes/sun/jvm/hotspot/runtime/Bytes.java agent/src/share/classes/sun/jvm/hotspot/runtime/Threads.java agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java agent/src/share/classes/sun/jvm/hotspot/runtime/ia64/IA64CurrentFrameGuess.java agent/src/share/classes/sun/jvm/hotspot/runtime/ia64/IA64Frame.java agent/src/share/classes/sun/jvm/hotspot/runtime/ia64/IA64JavaCallWrapper.java agent/src/share/classes/sun/jvm/hotspot/runtime/ia64/IA64RegisterMap.java agent/src/share/classes/sun/jvm/hotspot/runtime/ia64/cInterpreter.java agent/src/share/classes/sun/jvm/hotspot/runtime/linux_ia64/LinuxIA64JavaThreadPDAccess.java agent/src/share/classes/sun/jvm/hotspot/runtime/win32_ia64/Win32IA64JavaThreadPDAccess.java agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86RegisterMap.java agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js agent/src/share/native/sadis.c agent/test/jdi/jstack.sh agent/test/jdi/jstack64.sh agent/test/jdi/runsa.sh agent/test/jdi/sasanity.sh agent/test/libproc/libproctest.sh agent/test/libproc/libproctest64.sh make/bsd/makefiles/sa.make make/bsd/makefiles/saproc.make make/linux/makefiles/sa.make make/linux/makefiles/saproc.make make/sa.files make/solaris/makefiles/sa.make make/solaris/makefiles/saproc.make make/windows/makefiles/sa.make src/share/tools/hsdis/Makefile src/share/tools/hsdis/README src/share/tools/hsdis/hsdis-demo.c src/share/tools/hsdis/hsdis.c src/share/tools/hsdis/hsdis.h src/share/vm/compiler/disassembler.cpp src/share/vm/compiler/disassembler.hpp
diffstat 303 files changed, 1151 insertions(+), 20651 deletions(-) [+]
line wrap: on
line diff
--- a/agent/make/ClosureFinder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-import java.io.*;
-import java.util.*;
-
-
-/**
-<p> This class finds transitive closure of dependencies from a given
-root set of classes. If your project has lots of .class files and you
-want to ship only those .class files which are used (transitively)
-from a root set of classes, then you can use this utility.  </p> <p>
-How does it work?</p>
-
-<p> We walk through all constant pool entries of a given class and
-find all modified UTF-8 entries. Anything that looks like a class name is
-considered as a class and we search for that class in the given
-classpath. If we find a .class of that name, then we add that class to
-list.</p>
-
-<p> We could have used CONSTANT_ClassInfo type constants only. But
-that will miss classes used through Class.forName or xyz.class
-construct.  But, if you refer to a class name in some other string we
-would include it as dependency :(. But this is quite unlikely
-anyway. To look for exact Class.forName argument(s) would involve
-bytecode analysis. Also, we handle only simple reflection. If you
-accept name of a class from externally (for eg properties file or
-command line args for example, this utility will not be able to find
-that dependency. In such cases, include those classes in the root set.
-</p>
-*/
-
-public class ClosureFinder {
-    private Collection roots;            // root class names Collection<String>
-    private Map        visitedClasses;   // set of all dependencies as a Map
-    private String     classPath;        // classpath to look for .class files
-    private String[]   pathComponents;   // classpath components
-    private static final boolean isWindows = File.separatorChar != '/';
-
-    public ClosureFinder(Collection roots, String classPath) {
-        this.roots = roots;
-        this.classPath = classPath;
-        parseClassPath();
-    }
-
-    // parse classPath into pathComponents array
-    private void parseClassPath() {
-        List paths = new ArrayList();
-        StringTokenizer st = new StringTokenizer(classPath, File.pathSeparator);
-        while (st.hasMoreTokens())
-            paths.add(st.nextToken());
-
-        Object[] arr = paths.toArray();
-        pathComponents = new String[arr.length];
-        System.arraycopy(arr, 0, pathComponents, 0, arr.length);
-    }
-
-    // if output is aleady not computed, compute it now
-    // result is a map from class file name to base path where the .class was found
-    public Map find() {
-        if (visitedClasses == null) {
-            visitedClasses = new HashMap();
-            computeClosure();
-        }
-        return visitedClasses;
-    }
-
-    // compute closure for all given root classes
-    private void computeClosure() {
-        for (Iterator rootsItr = roots.iterator(); rootsItr.hasNext();) {
-            String name = (String) rootsItr.next();
-            name = name.substring(0, name.indexOf(".class"));
-            computeClosure(name);
-        }
-    }
-
-
-    // looks up for .class in pathComponents and returns
-    // base path if found, else returns null
-    private String lookupClassFile(String classNameAsPath) {
-        for (int i = 0; i < pathComponents.length; i++) {
-            File f =  new File(pathComponents[i] + File.separator +
-                               classNameAsPath + ".class");
-            if (f.exists()) {
-                if (isWindows) {
-                    String name = f.getName();
-                    // Windows reports special devices AUX,NUL,CON as files
-                    // under any directory. It does not care about file extention :-(
-                    if (name.compareToIgnoreCase("AUX.class") == 0 ||
-                        name.compareToIgnoreCase("NUL.class") == 0 ||
-                        name.compareToIgnoreCase("CON.class") == 0) {
-                        return null;
-                    }
-                }
-                return pathComponents[i];
-            }
-        }
-        return null;
-    }
-
-
-    // from JVM spec. 2'nd edition section 4.4
-    private static final int CONSTANT_Class = 7;
-    private static final int CONSTANT_FieldRef = 9;
-    private static final int CONSTANT_MethodRef = 10;
-    private static final int CONSTANT_InterfaceMethodRef = 11;
-    private static final int CONSTANT_String = 8;
-    private static final int CONSTANT_Integer = 3;
-    private static final int CONSTANT_Float = 4;
-    private static final int CONSTANT_Long = 5;
-    private static final int CONSTANT_Double = 6;
-    private static final int CONSTANT_NameAndType = 12;
-    private static final int CONSTANT_Utf8 = 1;
-
-    // whether a given string may be a class name?
-    private boolean mayBeClassName(String internalClassName) {
-        int len = internalClassName.length();
-        for (int s = 0; s < len; s++) {
-            char c = internalClassName.charAt(s);
-            if (!Character.isJavaIdentifierPart(c) && c != '/')
-                return false;
-        }
-        return true;
-    }
-
-    // compute closure for a given class
-    private void computeClosure(String className) {
-        if (visitedClasses.get(className) != null) return;
-        String basePath = lookupClassFile(className);
-        if (basePath != null) {
-            visitedClasses.put(className, basePath);
-            try {
-                File classFile = new File(basePath + File.separator + className + ".class");
-                FileInputStream fis = new FileInputStream(classFile);
-                DataInputStream dis = new DataInputStream(fis);
-                // look for .class signature
-                if (dis.readInt() != 0xcafebabe) {
-                    System.err.println(classFile.getAbsolutePath() + " is not a valid .class file");
-                    return;
-                }
-
-                // ignore major and minor version numbers
-                dis.readShort();
-                dis.readShort();
-
-                // read number of constant pool constants
-                int numConsts = (int) dis.readShort();
-                String[] strings = new String[numConsts];
-
-                // zero'th entry is unused
-                for (int cpIndex = 1; cpIndex < numConsts; cpIndex++) {
-                    int constType = (int) dis.readByte();
-                    switch (constType) {
-                    case CONSTANT_Class:
-                    case CONSTANT_String:
-                        dis.readShort(); // string name index;
-                        break;
-
-                    case CONSTANT_FieldRef:
-                    case CONSTANT_MethodRef:
-                    case CONSTANT_InterfaceMethodRef:
-                    case CONSTANT_NameAndType:
-                    case CONSTANT_Integer:
-                    case CONSTANT_Float:
-                        // all these are 4 byte constants
-                        dis.readInt();
-                        break;
-
-                    case CONSTANT_Long:
-                    case CONSTANT_Double:
-                        // 8 byte constants
-                        dis.readLong();
-                        // occupies 2 cp entries
-                        cpIndex++;
-                        break;
-
-
-                    case CONSTANT_Utf8: {
-                        strings[cpIndex] = dis.readUTF();
-                        break;
-                    }
-
-                    default:
-                        System.err.println("invalid constant pool entry");
-                        return;
-                    }
-                }
-
-            // now walk thru the string constants and look for class names
-            for (int s = 0; s < numConsts; s++) {
-                if (strings[s] != null && mayBeClassName(strings[s]))
-                    computeClosure(strings[s].replace('/', File.separatorChar));
-            }
-
-            } catch (IOException exp) {
-                // ignore for now
-            }
-
-        }
-    }
-
-    // a sample main that accepts roots classes in a file and classpath as args
-    public static void main(String[] args) {
-        if (args.length != 2) {
-            System.err.println("Usage: ClosureFinder <root class file> <class path>");
-            System.exit(1);
-        }
-
-        List roots = new ArrayList();
-        try {
-            FileInputStream fis = new FileInputStream(args[0]);
-            DataInputStream dis = new DataInputStream(fis);
-            String line = null;
-            while ((line = dis.readLine()) != null) {
-                if (isWindows) {
-                    line = line.replace('/', File.separatorChar);
-                }
-                roots.add(line);
-            }
-        } catch (IOException exp) {
-            System.err.println(exp.getMessage());
-            System.exit(2);
-        }
-
-        ClosureFinder cf = new ClosureFinder(roots, args[1]);
-        Map out = cf.find();
-        Iterator res = out.keySet().iterator();
-        for(; res.hasNext(); ) {
-            String className = (String) res.next();
-            System.out.println(className + ".class");
-        }
-    }
-}
--- a/agent/make/Makefile	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/make/Makefile	Mon Sep 24 12:44:00 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -41,10 +41,7 @@
 PKGLIST = \
 sun.jvm.hotspot \
 sun.jvm.hotspot.asm \
-sun.jvm.hotspot.asm.amd64 \
-sun.jvm.hotspot.asm.ia64 \
 sun.jvm.hotspot.asm.sparc \
-sun.jvm.hotspot.asm.x86 \
 sun.jvm.hotspot.bugspot \
 sun.jvm.hotspot.bugspot.tree \
 sun.jvm.hotspot.c1 \
@@ -138,10 +135,7 @@
 FILELIST = \
 sun/jvm/hotspot/*.java \
 sun/jvm/hotspot/asm/*.java \
-sun/jvm/hotspot/asm/amd64/*.java \
-sun/jvm/hotspot/asm/ia64/*.java \
 sun/jvm/hotspot/asm/sparc/*.java \
-sun/jvm/hotspot/asm/x86/*.java \
 sun/jvm/hotspot/bugspot/*.java \
 sun/jvm/hotspot/bugspot/tree/*.java \
 sun/jvm/hotspot/c1/*.java \
--- a/agent/src/os/bsd/MacosxDebuggerLocal.m	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/os/bsd/MacosxDebuggerLocal.m	Mon Sep 24 12:44:00 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,7 +31,13 @@
 #import <mach/mach.h>
 #import <mach/mach_types.h>
 #import <sys/sysctl.h>
+#import <stdio.h>
+#import <stdarg.h>
 #import <stdlib.h>
+#import <strings.h>
+#import <dlfcn.h>
+#import <limits.h>
+#import <errno.h>
 
 jboolean debug = JNI_FALSE;
 
@@ -60,6 +66,9 @@
 #define CHECK_EXCEPTION if ((*env)->ExceptionOccurred(env)) { return;}
 #define THROW_NEW_DEBUGGER_EXCEPTION_(str, value) { throw_new_debugger_exception(env, str); return value; }
 #define THROW_NEW_DEBUGGER_EXCEPTION(str) { throw_new_debugger_exception(env, str); return;}
+#define CHECK_EXCEPTION_CLEAR if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); } 
+#define CHECK_EXCEPTION_CLEAR_VOID if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return; } 
+#define CHECK_EXCEPTION_CLEAR_(value) if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return value; } 
 
 static void throw_new_debugger_exception(JNIEnv* env, const char* errMsg) {
   (*env)->ThrowNew(env, (*env)->FindClass(env, "sun/jvm/hotspot/debugger/DebuggerException"), errMsg);
@@ -404,3 +413,164 @@
   }
 JNF_COCOA_EXIT(env);
 }
+
+/*
+ * Class:     sun_jvm_hotspot_asm_Disassembler
+ * Method:    load_library
+ * Signature: (Ljava/lang/String;)L
+ */
+JNIEXPORT jlong JNICALL Java_sun_jvm_hotspot_asm_Disassembler_load_1library(JNIEnv * env,
+                                                                           jclass disclass,
+                                                                           jstring jrepath_s,
+                                                                           jstring libname_s) {
+  uintptr_t func = 0;
+  const char* error_message = NULL;
+  const char* java_home;
+  jboolean isCopy;
+  uintptr_t *handle = NULL;
+
+  const char * jrepath = (*env)->GetStringUTFChars(env, jrepath_s, &isCopy); // like $JAVA_HOME/jre/lib/sparc/
+  const char * libname = (*env)->GetStringUTFChars(env, libname_s, &isCopy);
+  char buffer[128];
+
+  /* Load the hsdis library */
+  void* hsdis_handle;
+  hsdis_handle = dlopen(libname, RTLD_LAZY | RTLD_GLOBAL);
+  if (hsdis_handle == NULL) {
+    snprintf(buffer, sizeof(buffer), "%s%s", jrepath, libname);
+    hsdis_handle = dlopen(buffer, RTLD_LAZY | RTLD_GLOBAL);
+  }
+  if (hsdis_handle != NULL) {
+    func = (uintptr_t)dlsym(hsdis_handle, "decode_instructions_virtual");
+  }
+  if (func == 0) {
+    error_message = dlerror();
+    fprintf(stderr, "%s\n", error_message);
+  }
+
+  (*env)->ReleaseStringUTFChars(env, libname_s, libname);
+  (*env)->ReleaseStringUTFChars(env, jrepath_s, jrepath);
+
+  if (func == 0) {
+    /* Couldn't find entry point.  error_message should contain some
+     * platform dependent error message.
+     */
+    THROW_NEW_DEBUGGER_EXCEPTION(error_message);
+  }
+  return (jlong)func;
+}
+
+/* signature of decode_instructions_virtual from hsdis.h */
+typedef void* (*decode_func)(uintptr_t start_va, uintptr_t end_va,
+                             unsigned char* start, uintptr_t length,
+                             void* (*event_callback)(void*, const char*, void*),
+                             void* event_stream,
+                             int (*printf_callback)(void*, const char*, ...),
+                             void* printf_stream,
+                             const char* options);
+
+/* container for call back state when decoding instructions */
+typedef struct {
+  JNIEnv* env;
+  jobject dis;
+  jobject visitor;
+  jmethodID handle_event;
+  jmethodID raw_print;
+  char buffer[4096];
+} decode_env;
+
+
+/* event callback binding to Disassembler.handleEvent */
+static void* event_to_env(void* env_pv, const char* event, void* arg) {
+  decode_env* denv = (decode_env*)env_pv;
+  JNIEnv* env = denv->env;
+  jstring event_string = (*env)->NewStringUTF(env, event);
+  jlong result = (*env)->CallLongMethod(env, denv->dis, denv->handle_event, denv->visitor,
+                                        event_string, (jlong) (uintptr_t)arg);
+  /* ignore exceptions for now */
+  CHECK_EXCEPTION_CLEAR_((void *)0);
+  return (void*)(uintptr_t)result;
+}
+
+/* printing callback binding to Disassembler.rawPrint */
+static int printf_to_env(void* env_pv, const char* format, ...) {
+  jstring output;
+  va_list ap;
+  int cnt;
+  decode_env* denv = (decode_env*)env_pv;
+  JNIEnv* env = denv->env;
+  size_t flen = strlen(format);
+  const char* raw = NULL;
+
+  if (flen == 0)  return 0;
+  if (flen < 2 ||
+      strchr(format, '%') == NULL) {
+    raw = format;
+  } else if (format[0] == '%' && format[1] == '%' &&
+             strchr(format+2, '%') == NULL) {
+    // happens a lot on machines with names like %foo
+    flen--;
+    raw = format+1;
+  }
+  if (raw != NULL) {
+    jstring output = (*env)->NewStringUTF(env, raw);
+    (*env)->CallVoidMethod(env, denv->dis, denv->raw_print, denv->visitor, output);
+    CHECK_EXCEPTION_CLEAR;
+    return (int) flen;
+  }
+  va_start(ap, format);
+  cnt = vsnprintf(denv->buffer, sizeof(denv->buffer), format, ap);
+  va_end(ap);
+
+  output = (*env)->NewStringUTF(env, denv->buffer);
+  (*env)->CallVoidMethod(env, denv->dis, denv->raw_print, denv->visitor, output);
+  CHECK_EXCEPTION_CLEAR;
+  return cnt;
+}
+
+/*
+ * Class:     sun_jvm_hotspot_asm_Disassembler
+ * Method:    decode
+ * Signature: (Lsun/jvm/hotspot/asm/InstructionVisitor;J[BLjava/lang/String;J)V
+ */
+JNIEXPORT void JNICALL Java_sun_jvm_hotspot_asm_Disassembler_decode(JNIEnv * env,
+                                                                    jobject dis,
+                                                                    jobject visitor,
+                                                                    jlong startPc,
+                                                                    jbyteArray code,
+                                                                    jstring options_s,
+                                                                    jlong decode_instructions_virtual) {
+  jboolean isCopy;
+  jbyte* start = (*env)->GetByteArrayElements(env, code, &isCopy);
+  jbyte* end = start + (*env)->GetArrayLength(env, code);
+  const char * options = (*env)->GetStringUTFChars(env, options_s, &isCopy);
+  jclass disclass = (*env)->GetObjectClass(env, dis);
+
+  decode_env denv;
+  denv.env = env;
+  denv.dis = dis;
+  denv.visitor = visitor;
+
+  /* find Disassembler.handleEvent callback */
+  denv.handle_event = (*env)->GetMethodID(env, disclass, "handleEvent",
+                                          "(Lsun/jvm/hotspot/asm/InstructionVisitor;Ljava/lang/String;J)J");
+  CHECK_EXCEPTION_CLEAR_VOID
+
+  /* find Disassembler.rawPrint callback */
+  denv.raw_print = (*env)->GetMethodID(env, disclass, "rawPrint",
+                                       "(Lsun/jvm/hotspot/asm/InstructionVisitor;Ljava/lang/String;)V");
+  CHECK_EXCEPTION_CLEAR_VOID
+
+  /* decode the buffer */
+  (*(decode_func)(uintptr_t)decode_instructions_virtual)(startPc,
+                                                         startPc + end - start,
+                                                         (unsigned char*)start,
+                                                         end - start,
+                                                         &event_to_env,  (void*) &denv,
+                                                         &printf_to_env, (void*) &denv,
+                                                         options);
+
+  /* cleanup */
+  (*env)->ReleaseByteArrayElements(env, code, start, JNI_ABORT);
+  (*env)->ReleaseStringUTFChars(env, options_s, options);
+}
--- a/agent/src/os/linux/Makefile	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/os/linux/Makefile	Mon Sep 24 12:44:00 2012 -0700
@@ -36,25 +36,33 @@
 
 INCLUDES = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux 
 
-OBJS     = $(SOURCES:.c=.o)
+OBJS     = $(SOURCES:%.c=$(ARCH)/%.o) $(ARCH)/sadis.o
 
 LIBS     = -lthread_db
 
-CFLAGS   = -c -fPIC -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) -D_FILE_OFFSET_BITS=64
+CFLAGS   = -c -fPIC -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) -I$(ARCH)
 
 LIBSA = $(ARCH)/libsaproc.so
 
 all: $(LIBSA)
 
-LinuxDebuggerLocal.o: LinuxDebuggerLocal.c
-	$(JAVAH) -jni -classpath ../../../build/classes  \
+$(ARCH):
+       mkdir $(ARCH)
+
+$(ARCH)/LinuxDebuggerLocal.o: LinuxDebuggerLocal.c
+        $(JAVAH) -jni -classpath ../../../build/classes -d $(ARCH) \
 		sun.jvm.hotspot.debugger.x86.X86ThreadContext \
 		sun.jvm.hotspot.debugger.sparc.SPARCThreadContext \
 		sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext 
-	$(GCC) $(CFLAGS) $<
+        $(GCC) $(CFLAGS) $< -o $@
 
-.c.obj:
-	$(GCC) $(CFLAGS)
+$(ARCH)/sadis.o:  ../../share/native/sadis.c
+        $(JAVAH) -jni -classpath ../../../build/classes -d $(ARCH) \
+                sun.jvm.hotspot.asm.Disassembler
+        $(GCC) $(CFLAGS) $< -o $@
+ 
+$(ARCH)/%.o: %.c
+        $(GCC) $(CFLAGS) $< -o $@
 
 ifndef LDNOMAP
   LFLAGS_LIBSA = -Xlinker --version-script=mapfile
@@ -68,9 +76,8 @@
 endif
 LFLAGS_LIBSA += $(LDFLAGS_HASH_STYLE)
 
-$(LIBSA): $(OBJS) mapfile
-	if [ ! -d $(ARCH) ] ; then mkdir $(ARCH) ; fi
-	$(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS)
+$(LIBSA): $(ARCH) $(OBJS) mapfile
+        $(GCC) -shared $(LFLAGS_LIBSA) -o $(LIBSA) $(OBJS) $(LIBS)
 
 test.o: test.c
 	$(GCC) -c -o test.o -g -D_GNU_SOURCE -D$(ARCH) $(INCLUDES) test.c
@@ -79,7 +86,4 @@
 	$(GCC) -o test test.o -L$(ARCH) -lsaproc $(LIBS)
 
 clean:
-	rm -rf $(LIBSA)
-	rm -rf $(OBJS)
-	rmdir $(ARCH)
-
+        rm -fr $(ARCH)
--- a/agent/src/os/linux/mapfile	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/os/linux/mapfile	Mon Sep 24 12:44:00 2012 -0700
@@ -1,7 +1,5 @@
 #
-
-#
-# Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -22,7 +20,6 @@
 # or visit www.oracle.com if you need additional information or have any
 # questions.
 #  
-#
 
 # Define public interface.
 
@@ -40,6 +37,10 @@
 		Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_readBytesFromProcess0;
 		Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0;
 	
+                # Disassembler interface
+                Java_sun_jvm_hotspot_asm_Disassembler_decode;
+                Java_sun_jvm_hotspot_asm_Disassembler_load_1library;
+
 		# proc_service.h functions - to be used by libthread_db
 		ps_getpid;
 		ps_pglobal_lookup;
--- a/agent/src/os/solaris/proc/Makefile	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/os/solaris/proc/Makefile	Mon Sep 24 12:44:00 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
 #   sparcv9:  Build the 64 bit sparcv9 version in ./sparcv9
 #   i386:     Build the 32 bit i386 version in ./i386
 
-.PHONY: sparc sparcv9 i386
+.PHONY: sparc sparcv9 i386 amd64
 
 ARCH_ORIG = $(shell uname -p)
 
@@ -36,6 +36,8 @@
 MKDIRS := /usr/bin/mkdir -p
 
 CLASSES_DIR = ../../../../build/classes
+SAPROC_INCLUDES=-I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris
+SADIS=../../../share/native/sadis.c
 
 ifeq "$(ARCH_ORIG)" "i386"
  ALL_TARGET = i386 $(filter amd64,$(shell isalist))
@@ -43,6 +45,11 @@
  ALL_TARGET = sparc sparcv9
 endif
 
+CFLAGS/i386   =
+CFLAGS/amd64  = -xarch=amd64
+CFLAGS/sparc  = -xarch=v8
+CFLAGS/sparv9 = -xarch=v9
+
 all:: $(ALL_TARGET)
 
 javahomecheck::
@@ -51,34 +58,13 @@
 	  exit 1 ; \
         fi
 
-i386:: javahomecheck
+i386 amd64 sparc sparcv9:: javahomecheck
 	$(MKDIRS) $@
-	@javah -classpath $(CLASSES_DIR) -jni sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
-	CC -G -KPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris saproc.cpp \
-           -M mapfile -o $@/libsaproc.so -ldemangle
-	CC -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc 
-
-amd64:: javahomecheck
-	$(MKDIRS) $@
-	@javah -classpath $(CLASSES_DIR) -jni sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
-	CC -G -KPIC -xarch=amd64 -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris saproc.cpp \
-           -M mapfile -o $@/libsaproc.so -ldemangle
-	CC -xarch=amd64 -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc 
-
-sparc:: javahomecheck
-	$(MKDIRS) $@
-	@javah -classpath $(CLASSES_DIR) -jni sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
-	CC -G -KPIC -xarch=v8  -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris saproc.cpp \
-           -M mapfile -o $@/libsaproc.so -ldemangle
-	CC -xarch=v8 -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc 
-
-sparcv9:: javahomecheck
-	$(MKDIRS) $@
-	@javah -classpath $(CLASSES_DIR) -jni sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
-	CC -G -KPIC -xarch=v9 -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris saproc.cpp \
-           -M mapfile -o $@/libsaproc.so -ldemangle
-	CC -xarch=v9 -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc 
+	@$(JAVA_HOME)/bin/javah -classpath $(CLASSES_DIR) -d $@ -jni sun.jvm.hotspot.asm.Disassembler sun.jvm.hotspot.debugger.proc.ProcDebuggerLocal
+	CC $(CFLAGS/$@) -c -g -Kpic ${SAPROC_INCLUDES} -I$@ saproc.cpp -o $@/saproc.o
+	cc $(CFLAGS/$@) -c -g -Kpic ${SAPROC_INCLUDES} -I$@ $(SADIS) -o $@/sadis.o
+	CC $(CFLAGS/$@) -g -G -Kpic $@/saproc.o $@/sadis.o -M mapfile -o $@/libsaproc.so -ldemangle
+	CC $(CFLAGS/$@) -o $@/libsaproc_audit.so -G -Kpic -z defs saproc_audit.cpp -lmapmalloc -ldl -lc 
 
 clean::
-	$(RM) -rf sun_jvm_hotspot_debugger_proc_ProcDebuggerLocal.h
-	$(RM) -rf sparc sparcv9 i386
+	$(RM) -rf sparc sparcv9 i386 amd64
--- a/agent/src/os/solaris/proc/mapfile	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/os/solaris/proc/mapfile	Mon Sep 24 12:44:00 2012 -0700
@@ -1,7 +1,5 @@
 #
-
-#
-# Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -22,10 +20,8 @@
 # or visit www.oracle.com if you need additional information or have any
 # questions.
 #  
-#
 
 # Define public interface.
-
 SUNWprivate_1.1 {
 	global:
 		Java_sun_jvm_hotspot_debugger_proc_ProcDebuggerLocal_attach0__Ljava_lang_String_2;
@@ -47,6 +43,9 @@
 		Java_sun_jvm_hotspot_debugger_proc_ProcDebuggerLocal_writeBytesToProcess0;
                 # this is needed by saproc_audit.c to redirect opens in libproc.so
                 libsaproc_open;
-local:
+                # Disassembler interface
+		Java_sun_jvm_hotspot_asm_Disassembler_decode;
+		Java_sun_jvm_hotspot_asm_Disassembler_load_1library;
+	local:
 	*;
 };
--- a/agent/src/os/win32/windbg/Makefile	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/os/win32/windbg/Makefile	Mon Sep 24 12:44:00 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,8 @@
 WINDBG_LIB_IA64=$(WINDBG_HOME)/sdk/lib/ia64
 WINDBG_LIB_AMD64=$(WINDBG_HOME)/sdk/lib/amd64
 
+SADIS=../../../share/native/sadis.c
+
 # These do not need to be optimized (don't run a lot of code) and it
 # will be useful to have the assertion checks in place
 
@@ -57,23 +59,29 @@
 
 amd64: amd64/$(SAWINDBGDLL)
 
-i386/$(SAWINDBGDLL) : sawindbg.cpp
+i386/$(SAWINDBGDLL) : sawindbg.cpp $(SADIS)
 	@ mkdir -p i386
-	@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal sun.jvm.hotspot.debugger.x86.X86ThreadContext 
+	@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal sun.jvm.hotspot.debugger.x86.X86ThreadContext
+	@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.asm.Disassembler
 	@ $(CPP32) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS32) /Fp"i386/sawindbg.pch" /Fo"i386/" /Fd"i386/" /c sawindbg.cpp
-	$(LINK32) /out:$@ /DLL i386/sawindbg.obj $(LIBS32)
+	@ $(CPP32) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS32) /Fp"i386/sadis.pch" /Fo"i386/" /Fd"i386/" /c  $(SADIS)
+	$(LINK32) /out:$@ /DLL i386/sawindbg.obj i386/sadis.obj $(LIBS32) 
 
-ia64/$(SAWINDBGDLL) : sawindbg.cpp
+ia64/$(SAWINDBGDLL) : sawindbg.cpp $(SADIS)
 	@ mkdir -p ia64
 	@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal sun.jvm.hotspot.debugger.ia64.IA64ThreadContext
+	@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.asm.Disassembler
 	@ $(CPP64) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS64) /Fp"ia64/sawindbg.pch" /Fo"ia64/" /Fd"ia64/" /c sawindbg.cpp
-	$(LINK64) /out:$@ /DLL ia64/sawindbg.obj $(LIBS_IA64)
+	@ $(CPP64) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS64) /Fp"ia64/sadis.pch" /Fo"ia64/" /Fd"ia64/" /c $(SADIS)
+	$(LINK64) /out:$@ /DLL ia64/sawindbg.obj ia64/sadis.obj $(LIBS_IA64)
 
-amd64/$(SAWINDBGDLL) : sawindbg.cpp
+amd64/$(SAWINDBGDLL) : sawindbg.cpp $(SADIS)
 	@ mkdir -p amd64
 	@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext
+	@ $(JAVAH) -jni -classpath ../../../../build/classes sun.jvm.hotspot.asm.Disassembler
 	@ $(CPP64) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS64) /Fp"amd64/sawindbg.pch" /Fo"amd64/" /Fd"amd64/" /c sawindbg.cpp
-	$(LINK64) /out:$@ /DLL amd64/sawindbg.obj $(LIBS_AMD64)
+	@ $(CPP64) /I$(JAVA_HOME)/include /I$(JAVA_HOME)/include/win32 /I$(WINDBG_INCLUDE) $(CFLAGS64) /Fp"amd64/sadis.pch" /Fo"amd64/" /Fd"amd64/" /c $(SADIS)
+	$(LINK64) /out:$@ /DLL amd64/sawindbg.obj amd64/sadis.obj $(LIBS_AMD64)
 
 clean:
 	rm *.h
--- a/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java	Mon Sep 24 12:44:00 2012 -0700
@@ -42,6 +42,7 @@
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.opto.*;
 import sun.jvm.hotspot.ci.*;
+import sun.jvm.hotspot.asm.*;
 import sun.jvm.hotspot.runtime.*;
 import sun.jvm.hotspot.utilities.*;
 import sun.jvm.hotspot.utilities.soql.*;
@@ -564,6 +565,71 @@
                 }
             }
         },
+        // decode raw address
+        new Command("dis", "dis address [length]", false) {
+            public void doit(Tokens t) {
+                int tokens = t.countTokens();
+                if (tokens != 1 && tokens != 2) {
+                    usage();
+                    return;
+                }
+                String name = t.nextToken();
+                Address addr = null;
+                int len = 0x10; // default length
+                try {
+                    addr = VM.getVM().getDebugger().parseAddress(name);
+                } catch (NumberFormatException e) {
+                   out.println(e);
+                   return;
+                }
+                if (tokens == 2) {
+                    try {
+                        len = Integer.parseInt(t.nextToken());
+                    } catch (NumberFormatException e) {
+                        out.println(e);
+                        return;
+                    }
+                }
+                HTMLGenerator generator = new HTMLGenerator(false);
+                out.println(generator.genHTMLForRawDisassembly(addr, len));
+            }
+
+        },
+        // decode codeblob or nmethod
+        new Command("disassemble", "disassemble address", false) {
+            public void doit(Tokens t) {
+                int tokens = t.countTokens();
+                if (tokens != 1) {
+                    usage();
+                    return;
+                }
+                String name = t.nextToken();
+                Address addr = null;
+                try {
+                    addr = VM.getVM().getDebugger().parseAddress(name);
+                } catch (NumberFormatException e) {
+                   out.println(e);
+                   return;
+                }
+
+                HTMLGenerator generator = new HTMLGenerator(false);
+                out.println(generator.genHTML(addr));
+            }
+        },
+        // print Java bytecode disassembly
+        new Command("jdis", "jdis address", false) {
+            public void doit(Tokens t) {
+                int tokens = t.countTokens();
+                if (tokens != 1) {
+                    usage();
+                    return;
+                }
+                Address a = VM.getVM().getDebugger().parseAddress(t.nextToken());
+                Method m = (Method)Metadata.instantiateWrapperFor(a);
+                HTMLGenerator html = new HTMLGenerator(false);
+                out.println(html.genHTML(m));
+            }
+        },
         new Command("revptrs", "revptrs address", false) {
             public void doit(Tokens t) {
                 int tokens = t.countTokens();
--- a/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/HotSpotAgent.java	Mon Sep 24 12:44:00 2012 -0700
@@ -43,10 +43,6 @@
  * highest-level factory for VM data structures. It makes it simple
  * to start up the debugging system. </P>
  *
- * <P> FIXME: need to add a way to configure the paths to dbx and the
- * DSO from the outside. However, this should work for now for
- * internal use. </P>
- *
  * <P> FIXME: especially with the addition of remote debugging, this
  * has turned into a mess; needs rethinking. </P>
  */
@@ -87,30 +83,7 @@
 
     private String[] jvmLibNames;
 
-    // FIXME: make these configurable, i.e., via a dotfile; also
-    // consider searching within the JDK from which this Java executable
-    // comes to find them
-    private static final String defaultDbxPathPrefix                = "/net/jano.sfbay/export/disk05/hotspot/sa";
-    private static final String defaultDbxSvcAgentDSOPathPrefix     = "/net/jano.sfbay/export/disk05/hotspot/sa";
-
     static void showUsage() {
-        System.out.println("    You can also pass these -D options to java to specify where to find dbx and the \n" +
-        "    Serviceability Agent plugin for dbx:");
-        System.out.println("       -DdbxPathName=<path-to-dbx-executable>\n" +
-        "             Default is derived from dbxPathPrefix");
-        System.out.println("    or");
-        System.out.println("       -DdbxPathPrefix=<xxx>\n" +
-        "             where xxx is the path name of a dir structure that contains:\n" +
-        "                   <os>/<arch>/bin/dbx\n" +
-        "             The default is " + defaultDbxPathPrefix);
-        System.out.println("    and");
-        System.out.println("       -DdbxSvcAgentDSOPathName=<path-to-dbx-serviceability-agent-module>\n" +
-        "             Default is determined from dbxSvcAgentDSOPathPrefix");
-        System.out.println("    or");
-        System.out.println("       -DdbxSvcAgentDSOPathPrefix=<xxx>\n" +
-        "             where xxx is the pathname of a dir structure that contains:\n" +
-        "                   <os>/<arch>/bin/lib/libsvc_agent_dbx.so\n" +
-        "             The default is " + defaultDbxSvcAgentDSOPathPrefix);
     }
 
     public HotSpotAgent() {
--- a/agent/src/share/classes/sun/jvm/hotspot/TestDebugger.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-/*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot;
-
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.debugger.proc.*;
-
-// A test of the debugger backend. This should be used to connect to
-// the helloWorld.cpp program.
-
-public class TestDebugger {
-
-  private static void usage() {
-    System.out.println("usage: java TestDebugger [pid]");
-    System.out.println("pid must be the process ID of the helloWorld process");
-    System.exit(1);
-  }
-
-  public static void main(String[] args) {
-    try {
-      if (args.length != 1) {
-        usage();
-      }
-
-      int pid = 0;
-      try {
-        pid = Integer.parseInt(args[0]);
-      }
-      catch (NumberFormatException e) {
-        usage();
-      }
-
-      JVMDebugger debugger = new ProcDebuggerLocal(null, true);
-
-      try {
-        debugger.attach(pid);
-      }
-      catch (DebuggerException e) {
-        System.err.print("Error attaching to process ID " + pid + ": ");
-        if (e.getMessage() != null) {
-          System.err.print(e.getMessage());
-        }
-        System.err.println();
-        System.exit(1);
-      }
-
-      // HACK: configure debugger with primitive type sizes to get
-      // Java types going
-      debugger.configureJavaPrimitiveTypeSizes(1, 1, 2, 8, 4, 4, 8, 2);
-
-      // FIXME: figure out how to canonicalize and/or eliminate
-      // loadobject specification
-      String loadObjectName = "-";
-
-      //    long strAddr = debugger.lookup("helloWorld", "helloWorldString");
-      Address addr = debugger.lookup(loadObjectName, "helloWorldString");
-      if (addr == null) {
-        System.err.println("Error looking up symbol \"helloWorldString\" in context \"" +
-                           loadObjectName + "\"");
-        System.exit(1);
-      }
-
-      // This is a pointer which points to the start of storage.
-      // Dereference it.
-      addr = addr.getAddressAt(0);
-
-      // Read the number of bytes we know we need
-      int helloWorldLen = 13;
-      byte[] data = new byte[helloWorldLen];
-      for (int i = 0; i < helloWorldLen; ++i) {
-        data[i] = (byte) addr.getCIntegerAt(i, 1, false);
-      }
-
-      // Convert to characters
-      char[] chars = new char[data.length];
-      for (int i = 0; i < data.length; ++i) {
-        chars[i] = (char) data[i];
-      }
-      String helloWorldStr = new String(chars);
-
-      System.out.println("Successfully read string \"" + helloWorldStr + "\" from target process\n");
-
-      // Test all Java data types (see helloWorld.cpp)
-      byte   expectedByteValue   = (byte) 132;
-      short  expectedShortValue  = (short) 27890;
-      int    expectedIntValue    = 1020304050;
-      long   expectedLongValue   = 102030405060708090L;
-      float  expectedFloatValue  = 35.4F;
-      double expectedDoubleValue = 1.23456789;
-      byte   byteValue   = 0;
-      short  shortValue  = 0;
-      int    intValue    = 0;
-      long   longValue   = 0;
-      float  floatValue  = 0;
-      double doubleValue = 0;
-
-      addr = debugger.lookup(loadObjectName, "testByte");
-      if (addr == null) {
-        System.err.println("Error looking up symbol \"testByte\" in context \"" +
-                           loadObjectName + "\"");
-        System.exit(1);
-      }
-      byteValue = addr.getJByteAt(0);
-      if (byteValue != expectedByteValue) {
-        System.err.println("Error: unexpected byte value (got " +
-                           byteValue + ", expected " + expectedByteValue + ")");
-        System.exit(1);
-      }
-
-      addr = debugger.lookup(loadObjectName, "testShort");
-      if (addr == null) {
-        System.err.println("Error looking up symbol \"testShort\" in context \"" +
-                           loadObjectName + "\"");
-        System.exit(1);
-      }
-      shortValue = addr.getJShortAt(0);
-      if (shortValue != expectedShortValue) {
-        System.err.println("Error: unexpected short value (got " +
-                           shortValue + ", expected " + expectedShortValue + ")");
-        System.exit(1);
-      }
-
-      addr = debugger.lookup(loadObjectName, "testInt");
-      if (addr == null) {
-        System.err.println("Error looking up symbol \"testInt\" in context \"" +
-                           loadObjectName + "\"");
-        System.exit(1);
-      }
-      intValue = addr.getJIntAt(0);
-      if (intValue != expectedIntValue) {
-        System.err.println("Error: unexpected int value (got " +
-                           intValue + ", expected " + expectedIntValue + ")");
-        System.exit(1);
-      }
-
-      addr = debugger.lookup(loadObjectName, "testLong");
-      if (addr == null) {
-        System.err.println("Error looking up symbol \"testLong\" in context \"" +
-                           loadObjectName + "\"");
-        System.exit(1);
-      }
-      longValue = addr.getJLongAt(0);
-      if (longValue != expectedLongValue) {
-        System.err.println("Error: unexpected long value (got " +
-                           longValue + ", expected " + expectedLongValue + ")");
-        System.exit(1);
-      }
-
-      addr = debugger.lookup(loadObjectName, "testFloat");
-      if (addr == null) {
-        System.err.println("Error looking up symbol \"testFloat\" in context \"" +
-                           loadObjectName + "\"");
-        System.exit(1);
-      }
-      floatValue = addr.getJFloatAt(0);
-      if (floatValue != expectedFloatValue) {
-        System.err.println("Error: unexpected float value (got " +
-                           floatValue + ", expected " + expectedFloatValue + ")");
-        System.exit(1);
-      }
-
-      addr = debugger.lookup(loadObjectName, "testDouble");
-      if (addr == null) {
-        System.err.println("Error looking up symbol \"testDouble\" in context \"" +
-                           loadObjectName + "\"");
-        System.exit(1);
-      }
-      doubleValue = addr.getJDoubleAt(0);
-      if (doubleValue != expectedDoubleValue) {
-        System.err.println("Error: unexpected double value (got " +
-                           doubleValue + ", expected " + expectedDoubleValue + ")");
-        System.exit(1);
-      }
-
-      System.err.println("All tests passed successfully.");
-
-      debugger.detach();
-    }
-    catch (AddressException e) {
-      System.err.println("Error occurred during test:");
-      e.printStackTrace();
-      System.exit(1);
-    }
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/AbstractInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public abstract class AbstractInstruction implements Instruction {
-   protected final String name;
-
-   public AbstractInstruction(String name) {
-      this.name = name;
-   }
-
-   public String getName() {
-      return name;
-   }
-
-   // some type testers
-   public boolean isIllegal() {
-      return false;
-   }
-
-   public boolean isArithmetic() {
-      return false;
-   }
-
-   public boolean isLogical() {
-      return false;
-   }
-
-   public boolean isShift() {
-      return false;
-   }
-
-   public boolean isMove() {
-      return false;
-   }
-
-   public boolean isBranch() {
-      return false;
-   }
-
-   public boolean isCall() {
-      return false;
-   }
-
-   public boolean isReturn() {
-      return false;
-   }
-
-   public boolean isLoad() {
-      return false;
-   }
-
-   public boolean isStore() {
-      return false;
-   }
-
-   public boolean isFloat() {
-      return false;
-   }
-
-   public boolean isTrap() {
-      return false;
-   }
-
-   public boolean isNoop() {
-      return false;
-   }
-
-   // convert the instruction as String given currentPc
-   // and SymbolFinder
-
-   public String asString(long currentPc, SymbolFinder symFinder) {
-      return name;
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/Address.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public abstract class Address extends Operand {
-   public boolean isAddress() {
-      return true;
-   }
-
-   public abstract String toString();
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/Arithmetic.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface Arithmetic extends Instruction, RTLOperations {
-   public Operand[]  getArithmeticSources();
-   public Operand    getArithmeticDestination();
-   public int        getOperation(); // one of RTLOperations
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/ArithmeticInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface ArithmeticInstruction extends Instruction, RTLOperations {
-   public Operand[]  getArithmeticSources();
-   public Operand    getArithmeticDestination();
-   public int        getOperation(); // one of RTLOperations
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/BaseIndexScaleDispAddress.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-// address is calculated as (base + (index * scale) + displacement)
-// optionally index is auto incremented or decremented
-
-public abstract class BaseIndexScaleDispAddress extends IndirectAddress {
-   private final Register base, index;
-   private final int      scale;
-   private final long     disp;
-   private boolean  isAutoIncr;
-   private boolean  isAutoDecr;
-
-   public BaseIndexScaleDispAddress(Register base, Register index, long disp, int scale) {
-      this.base = base;
-      this.index = index;
-      this.disp = disp;
-      this.scale = scale;
-   }
-
-   public BaseIndexScaleDispAddress(Register base, Register index, long disp) {
-      this(base, index, disp, 1);
-   }
-
-   public BaseIndexScaleDispAddress(Register base, Register index) {
-      this(base, index, 0L, 1);
-   }
-
-   public BaseIndexScaleDispAddress(Register base, long disp) {
-      this(base, null, disp, 1);
-   }
-
-   public Register getBase() {
-      return base;
-   }
-
-   public Register getIndex() {
-      return index;
-   }
-
-   public int      getScale() {
-      return scale;
-   }
-
-   public long     getDisplacement() {
-      return disp;
-   }
-
-   // is the index auto decremented or incremented?
-   public boolean  isAutoIncrement() {
-      return isAutoIncr;
-   }
-
-   public void setAutoIncrement(boolean value) {
-      isAutoIncr = value;
-   }
-
-   public boolean  isAutoDecrement() {
-      return isAutoDecr;
-   }
-
-   public void setAutoDecrement(boolean value) {
-      isAutoDecr = value;
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/BranchInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface BranchInstruction extends Instruction {
-   public boolean isConditional();
-   public Address getBranchDestination();
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/CPUHelper.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface CPUHelper {
-   public Disassembler createDisassembler(long startPc, byte[] code);
-   public Register getIntegerRegister(int num);
-   public Register getFloatRegister(int num);
-   public Register getStackPointer();
-   public Register getFramePointer();
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/CallInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface CallInstruction extends BranchInstruction {
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/DirectAddress.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public class DirectAddress extends Address {
-   private long value;
-   public DirectAddress(long value) {
-      this.value = value;
-   }
-
-   public long getValue() {
-      return value;
-   }
-
-   public String toString() {
-      return Long.toHexString(value);
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/Disassembler.java	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/asm/Disassembler.java	Mon Sep 24 12:44:00 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,22 +24,134 @@
 
 package sun.jvm.hotspot.asm;
 
-public abstract class Disassembler {
-   protected long   startPc;
+import java.io.PrintStream;
+import java.util.Observer;
+import java.util.Observable;
+import sun.jvm.hotspot.code.CodeBlob;
+import sun.jvm.hotspot.code.NMethod;
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.runtime.VM;
+
+public class Disassembler {
+   private static String options = "";
+   private static long decode_function;
+
+   protected long startPc;
    protected byte[] code;
+   private CodeBlob blob;
+   private NMethod nmethod;
 
-   public Disassembler(long startPc, byte[] code) {
+   public static void decode(InstructionVisitor visitor, CodeBlob blob) {
+      decode(visitor, blob, blob.codeBegin(), blob.codeEnd());
+   }
+
+   public static void decode(InstructionVisitor visitor, CodeBlob blob, Address begin, Address end) {
+      int codeSize = (int)end.minus(begin);
+      long startPc = VM.getAddressValue(begin);
+      byte[] code = new byte[codeSize];
+      for (int i = 0; i < code.length; i++)
+         code[i] = begin.getJByteAt(i);
+      Disassembler dis = new Disassembler(startPc, code);
+      dis.decode(visitor);
+   }
+
+   private Disassembler(long startPc, byte[] code) {
       this.startPc = startPc;
       this.code = code;
+
+      // Lazily load hsdis
+      if (decode_function == 0) {
+         StringBuilder path = new StringBuilder(System.getProperty("java.home"));
+         String sep = System.getProperty("file.separator");
+         String os = System.getProperty("os.name");
+         String libname = "hsdis";
+         String arch = System.getProperty("os.arch");
+         if (os.lastIndexOf("Windows", 0) != -1) {
+            path.append(sep + "bin" + sep);
+            libname += ".dll";
+         } else if (os.lastIndexOf("SunOS", 0) != -1) {
+            if (arch.equals("x86") || arch.equals("i386")) {
+               path.append(sep + "lib" + sep + "i386" + sep);
+               libname +=  "-i386" + ".so";
+            } else if (arch.equals("amd64")) {
+               path.append(sep + "lib" + sep + "amd64" + sep);
+               libname +=  "-amd64" + ".so";
+            } else {
+               path.append(sep + "lib" + sep + arch + sep);
+               libname +=  "-" + arch + ".so";
+            }
+         } else if (os.lastIndexOf("Linux", 0) != -1) {
+            if (arch.equals("x86") || arch.equals("i386")) {
+               path.append(sep + "lib" + sep + "i386" + sep);
+               libname += "-i386.so";
+            } else if (arch.equals("amd64") || arch.equals("x86_64")) {
+               path.append(sep + "lib" + sep + "amd64" + sep);
+               libname +=  "-amd64.so";
+            } else {
+               path.append(sep + "lib" + sep + arch + sep);
+               libname +=  "-" + arch + ".so";
+            }
+         } else if (os.lastIndexOf("Mac OS X", 0) != -1) {
+            path.append(sep + "lib" + sep);
+            libname += "-amd64" + ".dylib";       // x86_64 => amd64
+         } else {
+            path.append(sep + "lib" + sep + "arch" + sep);
+            libname +=  "-" + arch + ".so";
+         }
+         decode_function = load_library(path.toString(), libname);
+      }
    }
 
-   public long getStartPC() {
-      return startPc;
+   private static native long load_library(String installed_jrepath, String hsdis_library_name);
+
+   private native void decode(InstructionVisitor visitor, long pc, byte[] code,
+                              String options, long decode_function);
+
+   private void decode(InstructionVisitor visitor) {
+      visitor.prologue();
+      decode(visitor, startPc, code, options, decode_function);
+      visitor.epilogue();
    }
 
-   public byte[] getCode() {
-      return code;
+   private boolean match(String event, String tag) {
+      if (!event.startsWith(tag))
+         return false;
+      int taglen = tag.length();
+      if (taglen == event.length()) return true;
+      char delim = event.charAt(taglen);
+      return delim == ' ' || delim == '/' || delim == '=';
    }
 
-   public abstract void decode(InstructionVisitor visitor);
+   // This is called from the native code to process various markers
+   // in the dissassembly.
+   private long handleEvent(InstructionVisitor visitor, String event, long arg) {
+      if (match(event, "insn")) {
+         try {
+            visitor.beginInstruction(arg);
+         } catch (Throwable e) {
+            e.printStackTrace();
+         }
+      } else if (match(event, "/insn")) {
+         try {
+            visitor.endInstruction(arg);
+         } catch (Throwable e) {
+            e.printStackTrace();
+         }
+      } else if (match(event, "addr")) {
+         if (arg != 0) {
+            visitor.printAddress(arg);
+         }
+         return arg;
+      } else if (match(event, "mach")) {
+         // output().printf("[Disassembling for mach='%s']\n", arg);
+      } else {
+         // ignore unrecognized markup
+      }
+      return 0;
+   }
+
+   // This called from the native code to perform printing
+   private  void rawPrint(InstructionVisitor visitor, String s) {
+      visitor.print(s);
+   }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/Immediate.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-// Immediate is a Number operand
-
-public class Immediate extends ImmediateOrRegister {
-   private final Number value;
-
-   public Immediate(Number value) {
-      this.value = value;
-   }
-
-   public Number getNumber() {
-      return value;
-   }
-
-   public boolean isImmediate() {
-      return true;
-   }
-
-   public String toString() {
-      return value.toString();
-   }
-
-   public int hashCode() {
-      return value.hashCode();
-   }
-
-   public boolean equals(Object obj) {
-      if (obj == null)
-         return false;
-
-      if (getClass() != obj.getClass())
-         return false;
-
-      Immediate other = (Immediate) obj;
-      return value.equals(other.value);
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/IndirectAddress.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public abstract class IndirectAddress extends Address {
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/Instruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface Instruction {
-   public String getName();
-
-   // total size in bytes (operands + opcode).
-   // for eg. in sparc it is always 4 (= 32bits)
-   public int getSize();
-
-   // some type testers
-   public boolean isIllegal();
-   public boolean isArithmetic();
-   public boolean isLogical();
-   public boolean isShift();
-   public boolean isMove();
-   public boolean isBranch();
-   public boolean isCall();
-   public boolean isReturn();
-   public boolean isLoad();
-   public boolean isStore();
-   public boolean isFloat();
-   public boolean isTrap();
-   public boolean isNoop();
-
-   // convert the instruction as String given currentPc
-   // and SymbolFinder
-
-   public String asString(long currentPc, SymbolFinder symFinder);
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/InstructionVisitor.java	Thu Sep 20 03:49:15 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/asm/InstructionVisitor.java	Mon Sep 24 12:44:00 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,6 +26,9 @@
 
 public interface InstructionVisitor {
    public void prologue();
-   public void visit(long currentPc, Instruction instr);
+   public void beginInstruction(long currentPc);
+   public void printAddress(long address);
+   public void print(String format);
+   public void endInstruction(long endPc);
    public void epilogue();
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/LoadInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface LoadInstruction extends MemoryInstruction {
-   public Address  getLoadSource();
-   public Register[] getLoadDestinations();
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/LogicInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface LogicInstruction extends Instruction, RTLOperations {
-   public Operand[]  getLogicSources();
-   public Operand    getLogicDestination();
-   public int        getOperation(); // one of RTLOperations
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/MemoryInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface MemoryInstruction extends RTLDataTypes {
-   public int getDataType(); // one of the RTLDataTypes.
-   public boolean isConditional(); // conditional store like swap or v9 like non-faulting loads
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/MoveInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface MoveInstruction extends Instruction {
-   public ImmediateOrRegister  getMoveSource();
-   public Register getMoveDestination();
-   // for condition moves
-   public boolean  isConditional();
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/PCRelativeAddress.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-// address is specified as an offset from current PC
-
-public class PCRelativeAddress extends IndirectAddress {
-   private final long disp;
-
-   public PCRelativeAddress(long disp) {
-       this.disp = disp;
-   }
-
-   public String toString() {
-      return new Long(disp).toString();
-   }
-
-   public long getDisplacement() {
-      return disp;
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/RTLDataTypes.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface RTLDataTypes {
-
-   // HALF = 16 bits, WORD = 32 bits, DWORD = 64 bits and QWORD = 128 bits.
-
-   public static final int RTLDT_SIGNED_BYTE    = 0;
-   public static final int RTLDT_UNSIGNED_BYTE  = 1;
-   public static final int RTLDT_SIGNED_HALF    = 2;
-   public static final int RTLDT_UNSIGNED_HALF  = 3;
-   public static final int RTLDT_SIGNED_WORD    = 4;
-   public static final int RTLDT_UNSIGNED_WORD  = 5;
-   public static final int RTLDT_SIGNED_DWORD   = 6;
-   public static final int RTLDT_UNSIGNED_DWORD = 7;
-   public static final int RTLDT_SIGNED_QWORD   = 8;
-   public static final int RTLDT_UNSIGNED_QWORD = 9;
-
-   // float is 4 bytes, double is 8 bytes, extended double is 10 bytes
-   // and quad is 16 bytes.
-
-   public static final int RTLDT_FL_SINGLE     = 10;
-   public static final int RTLDT_FL_DOUBLE     = 11;
-   public static final int RTLDT_FL_EXT_DOUBLE = 12;
-   public static final int RTLDT_FL_QUAD       = 13;
-
-   public static final int RTLDT_STRING        = 14;
-
-   public static final int RTLDT_UNKNOWN       = Integer.MAX_VALUE;
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/RTLOperations.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface RTLOperations {
-
-   // arithmetic operations
-   public static final int RTLOP_ADD          = 0;
-   // with carry
-   public static final int RTLOP_ADDC         = 1;
-   public static final int RTLOP_SUB          = 2;
-   // with carry
-   public static final int RTLOP_SUBC         = 3;
-   public static final int RTLOP_SMUL         = 4;
-   public static final int RTLOP_UMUL         = 5;
-   public static final int RTLOP_SDIV         = 6;
-   public static final int RTLOP_UDIV         = 7;
-
-   public static final int RTLOP_MAX_ARITHMETIC = RTLOP_UDIV;
-
-   // logical operations
-   public static final int RTLOP_AND          = 8;
-   public static final int RTLOP_OR           = 9;
-   public static final int RTLOP_NOT          = 10;
-   public static final int RTLOP_NAND         = 11;
-   public static final int RTLOP_NOR          = 12;
-   public static final int RTLOP_XOR          = 13;
-   public static final int RTLOP_XNOR         = 14;
-
-   public static final int RTLOP_MAX_LOGICAL  = RTLOP_XNOR;
-
-   // shift operations
-   public static final int RTLOP_SRL          = 15;
-   public static final int RTLOP_SRA          = 16;
-   public static final int RTLOP_SLL          = 17;
-
-   public static final int RTLOP_MAX_SHIFT    = RTLOP_SLL;
-
-   public static final int RTLOP_UNKNOWN      = Integer.MAX_VALUE;
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/ReturnInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface ReturnInstruction extends BranchInstruction {
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/ShiftInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface ShiftInstruction extends Instruction, RTLOperations {
-   public Operand getShiftSource();
-   public Operand  getShiftLength(); // number of bits to shift
-   public Operand getShiftDestination();
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/StoreInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm;
-
-public interface StoreInstruction extends MemoryInstruction {
-   public Register[]  getStoreSources();
-   public Address     getStoreDestination();
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/amd64/AMD64FloatRegisters.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.amd64;
-
-import sun.jvm.hotspot.utilities.Assert;
-
-public class AMD64FloatRegisters {
-
-   public static int getNumRegisters() {
-      return NUM_REGIXMMERS;
-   }
-
-   public static AMD64FloatRegister getRegister(int regNum) {
-      if (Assert.ASSERTS_ENABLED) {
-         Assert.that(regNum > -1 && regNum < NUM_REGIXMMERS, "invalid float register number!");
-      }
-      return registers[regNum];
-   }
-
-   public static String getRegisterName(int i) {
-      return "XMM(" + i + ")";
-   }
-
-   public static final AMD64FloatRegister XMM0;
-   public static final AMD64FloatRegister XMM1;
-   public static final AMD64FloatRegister XMM2;
-   public static final AMD64FloatRegister XMM3;
-   public static final AMD64FloatRegister XMM4;
-   public static final AMD64FloatRegister XMM5;
-   public static final AMD64FloatRegister XMM6;
-   public static final AMD64FloatRegister XMM7;
-   public static final AMD64FloatRegister XMM8;
-   public static final AMD64FloatRegister XMM9;
-   public static final AMD64FloatRegister XMM10;
-   public static final AMD64FloatRegister XMM11;
-   public static final AMD64FloatRegister XMM12;
-   public static final AMD64FloatRegister XMM13;
-   public static final AMD64FloatRegister XMM14;
-   public static final AMD64FloatRegister XMM15;
-
-   public static final int NUM_REGIXMMERS = 16;
-
-   private static final AMD64FloatRegister[] registers;
-
-   static {
-      XMM0 = new AMD64FloatRegister(0);
-      XMM1 = new AMD64FloatRegister(1);
-      XMM2 = new AMD64FloatRegister(2);
-      XMM3 = new AMD64FloatRegister(3);
-      XMM4 = new AMD64FloatRegister(4);
-      XMM5 = new AMD64FloatRegister(5);
-      XMM6 = new AMD64FloatRegister(6);
-      XMM7 = new AMD64FloatRegister(7);
-      XMM8 = new AMD64FloatRegister(8);
-      XMM9 = new AMD64FloatRegister(9);
-      XMM10 = new AMD64FloatRegister(10);
-      XMM11 = new AMD64FloatRegister(11);
-      XMM12 = new AMD64FloatRegister(12);
-      XMM13 = new AMD64FloatRegister(13);
-      XMM14 = new AMD64FloatRegister(14);
-      XMM15 = new AMD64FloatRegister(15);
-
-      registers = new AMD64FloatRegister[] {
-                     XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7,
-                     XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15
-                  };
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/amd64/AMD64Helper.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.amd64;
-
-import sun.jvm.hotspot.asm.*;
-
-
-public class AMD64Helper implements CPUHelper {
-   public Disassembler createDisassembler(long startPc, byte[] code) {
-      // FIXME: no disassembler yet
-      return null;
-   }
-
-   public Register getIntegerRegister(int num) {
-      return AMD64Registers.getRegister(num);
-   }
-
-   public Register getFloatRegister(int num) {
-      return AMD64FloatRegisters.getRegister(num);
-   }
-
-   public Register getStackPointer() {
-      return AMD64Registers.RSP;
-   }
-
-   public Register getFramePointer() {
-      return AMD64Registers.RBP;
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/amd64/AMD64Register.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.amd64;
-
-import sun.jvm.hotspot.asm.*;
-
-public class AMD64Register extends Register {
-   protected String name;
-   public AMD64Register(int num, String name) {
-     super(num);
-     this.name = name;
-   }
-   public int getNumberOfRegisters() {
-     return AMD64Registers.getNumberOfRegisters();
-   }
-   public String toString() {
-     return name;
-   }
-   public boolean isFramePointer() {
-     return number == 5; //rbp
-   }
-   public boolean isStackPointer() {
-     return number == 4; //rsp
-   }
-   public boolean isFloat() {
-     return false;
-   }
-   public boolean isSegmentPointer() {
-     return false;
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/amd64/AMD64Registers.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.amd64;
-
-import sun.jvm.hotspot.utilities.*;
-
-public class AMD64Registers {
-   public static final int NUM_REGISTERS = 16;
-
-   public static final AMD64Register RAX;
-   public static final AMD64Register RCX;
-   public static final AMD64Register RDX;
-   public static final AMD64Register RBX;
-   public static final AMD64Register RSP;
-   public static final AMD64Register RBP;
-   public static final AMD64Register RSI;
-   public static final AMD64Register RDI;
-   public static final AMD64Register R8;
-   public static final AMD64Register R9;
-   public static final AMD64Register R10;
-   public static final AMD64Register R11;
-   public static final AMD64Register R12;
-   public static final AMD64Register R13;
-   public static final AMD64Register R14;
-   public static final AMD64Register R15;
-
-   private static final AMD64Register[] registers;
-
-   static {
-      RAX = new AMD64Register(0, "rax");
-      RCX = new AMD64Register(1, "rcx");
-      RDX = new AMD64Register(2, "rdx");
-      RBX = new AMD64Register(3, "rbx");
-      RSP = new AMD64Register(4, "rsp");
-      RBP = new AMD64Register(5, "rbp");
-      RSI = new AMD64Register(6, "rsi");
-      RDI = new AMD64Register(7, "rdi");
-      R8  = new AMD64Register(8, "r8" );
-      R9  = new AMD64Register(9, "r9" );
-      R10 = new AMD64Register(10,"r10");
-      R11 = new AMD64Register(11,"r11");
-      R12 = new AMD64Register(12,"r12");
-      R13 = new AMD64Register(13,"r13");
-      R14 = new AMD64Register(14,"r14");
-      R15 = new AMD64Register(15,"r15");
-      registers = new AMD64Register[] {
-                     RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI,
-                     R8, R9, R10, R11, R12, R13, R14, R15
-                  };
-   }
-
-   public static int getNumberOfRegisters() {
-      return NUM_REGISTERS;
-   }
-
-   public static AMD64Register getRegister(int regNum) {
-      if (Assert.ASSERTS_ENABLED) {
-         Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid integer register number!");
-      }
-      return registers[regNum];
-   }
-
-   //Return the register name
-   public static String getRegisterName(int regNum) {
-      if (Assert.ASSERTS_ENABLED) {
-         Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid integer register number!");
-      }
-      return registers[regNum].toString();
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64FloatRegister.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.ia64;
-
-import sun.jvm.hotspot.asm.Register;
-import sun.jvm.hotspot.utilities.Assert;
-
-public class IA64FloatRegister extends IA64Register {
-
-    public IA64FloatRegister(int number) {
-        super(number);
-    }
-
-    public int getNumber() {
-        return number;
-    }
-
-    public static final int SINGLE_PRECISION = 1;
-    public static final int DOUBLE_PRECISION = 2;
-    public static final int QUAD_PRECISION = 3;
-
-    public int getNumber(int width) {
-        return number;
-    }
-
-    private static final int nofRegisters = 128;
-    public int getNumberOfRegisters() {
-        return nofRegisters;
-    }
-
-    public boolean isFloat() {
-        return true;
-    }
-
-    public boolean isFramePointer() {
-        return false;
-    }
-
-    public boolean isStackPointer() {
-        return false;
-    }
-
-    public boolean isValid() {
-        return number >= 0 && number < nofRegisters;
-    }
-
-    public String toString() {
-        return IA64FloatRegisters.getRegisterName(number);
-    }
-
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64FloatRegisters.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,320 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.ia64;
-
-import sun.jvm.hotspot.utilities.Assert;
-
-public class IA64FloatRegisters {
-    public static int getNumRegisters() {
-        return 128;
-    }
-
-    public static IA64FloatRegister getRegister(int i) {
-        Assert.that(i >= 0 && i < 128, "float register number is invalid");
-        return registers[i];
-    }
-
-    public static String getRegisterName(int i) {
-        return "%f" + i;
-    }
-
-    public static final IA64FloatRegister F0;
-    public static final IA64FloatRegister F1;
-    public static final IA64FloatRegister F2;
-    public static final IA64FloatRegister F3;
-    public static final IA64FloatRegister F4;
-    public static final IA64FloatRegister F5;
-    public static final IA64FloatRegister F6;
-    public static final IA64FloatRegister F7;
-    public static final IA64FloatRegister F8;
-    public static final IA64FloatRegister F9;
-    public static final IA64FloatRegister F10;
-    public static final IA64FloatRegister F11;
-    public static final IA64FloatRegister F12;
-    public static final IA64FloatRegister F13;
-    public static final IA64FloatRegister F14;
-    public static final IA64FloatRegister F15;
-    public static final IA64FloatRegister F16;
-    public static final IA64FloatRegister F17;
-    public static final IA64FloatRegister F18;
-    public static final IA64FloatRegister F19;
-    public static final IA64FloatRegister F20;
-    public static final IA64FloatRegister F21;
-    public static final IA64FloatRegister F22;
-    public static final IA64FloatRegister F23;
-    public static final IA64FloatRegister F24;
-    public static final IA64FloatRegister F25;
-    public static final IA64FloatRegister F26;
-    public static final IA64FloatRegister F27;
-    public static final IA64FloatRegister F28;
-    public static final IA64FloatRegister F29;
-    public static final IA64FloatRegister F30;
-    public static final IA64FloatRegister F31;
-    public static final IA64FloatRegister F32;
-    public static final IA64FloatRegister F33;
-    public static final IA64FloatRegister F34;
-    public static final IA64FloatRegister F35;
-    public static final IA64FloatRegister F36;
-    public static final IA64FloatRegister F37;
-    public static final IA64FloatRegister F38;
-    public static final IA64FloatRegister F39;
-    public static final IA64FloatRegister F40;
-    public static final IA64FloatRegister F41;
-    public static final IA64FloatRegister F42;
-    public static final IA64FloatRegister F43;
-    public static final IA64FloatRegister F44;
-    public static final IA64FloatRegister F45;
-    public static final IA64FloatRegister F46;
-    public static final IA64FloatRegister F47;
-    public static final IA64FloatRegister F48;
-    public static final IA64FloatRegister F49;
-    public static final IA64FloatRegister F50;
-    public static final IA64FloatRegister F51;
-    public static final IA64FloatRegister F52;
-    public static final IA64FloatRegister F53;
-    public static final IA64FloatRegister F54;
-    public static final IA64FloatRegister F55;
-    public static final IA64FloatRegister F56;
-    public static final IA64FloatRegister F57;
-    public static final IA64FloatRegister F58;
-    public static final IA64FloatRegister F59;
-    public static final IA64FloatRegister F60;
-    public static final IA64FloatRegister F61;
-    public static final IA64FloatRegister F62;
-    public static final IA64FloatRegister F63;
-    public static final IA64FloatRegister F64;
-    public static final IA64FloatRegister F65;
-    public static final IA64FloatRegister F66;
-    public static final IA64FloatRegister F67;
-    public static final IA64FloatRegister F68;
-    public static final IA64FloatRegister F69;
-    public static final IA64FloatRegister F70;
-    public static final IA64FloatRegister F71;
-    public static final IA64FloatRegister F72;
-    public static final IA64FloatRegister F73;
-    public static final IA64FloatRegister F74;
-    public static final IA64FloatRegister F75;
-    public static final IA64FloatRegister F76;
-    public static final IA64FloatRegister F77;
-    public static final IA64FloatRegister F78;
-    public static final IA64FloatRegister F79;
-    public static final IA64FloatRegister F80;
-    public static final IA64FloatRegister F81;
-    public static final IA64FloatRegister F82;
-    public static final IA64FloatRegister F83;
-    public static final IA64FloatRegister F84;
-    public static final IA64FloatRegister F85;
-    public static final IA64FloatRegister F86;
-    public static final IA64FloatRegister F87;
-    public static final IA64FloatRegister F88;
-    public static final IA64FloatRegister F89;
-    public static final IA64FloatRegister F90;
-    public static final IA64FloatRegister F91;
-    public static final IA64FloatRegister F92;
-    public static final IA64FloatRegister F93;
-    public static final IA64FloatRegister F94;
-    public static final IA64FloatRegister F95;
-    public static final IA64FloatRegister F96;
-    public static final IA64FloatRegister F97;
-    public static final IA64FloatRegister F98;
-    public static final IA64FloatRegister F99;
-    public static final IA64FloatRegister F100;
-    public static final IA64FloatRegister F101;
-    public static final IA64FloatRegister F102;
-    public static final IA64FloatRegister F103;
-    public static final IA64FloatRegister F104;
-    public static final IA64FloatRegister F105;
-    public static final IA64FloatRegister F106;
-    public static final IA64FloatRegister F107;
-    public static final IA64FloatRegister F108;
-    public static final IA64FloatRegister F109;
-    public static final IA64FloatRegister F110;
-    public static final IA64FloatRegister F111;
-    public static final IA64FloatRegister F112;
-    public static final IA64FloatRegister F113;
-    public static final IA64FloatRegister F114;
-    public static final IA64FloatRegister F115;
-    public static final IA64FloatRegister F116;
-    public static final IA64FloatRegister F117;
-    public static final IA64FloatRegister F118;
-    public static final IA64FloatRegister F119;
-    public static final IA64FloatRegister F120;
-    public static final IA64FloatRegister F121;
-    public static final IA64FloatRegister F122;
-    public static final IA64FloatRegister F123;
-    public static final IA64FloatRegister F124;
-    public static final IA64FloatRegister F125;
-    public static final IA64FloatRegister F126;
-    public static final IA64FloatRegister F127;
-    public static final int NUM_REGISTERS = 128;
-    private static final IA64FloatRegister registers[];
-
-    static {
-     F0 = new IA64FloatRegister(0);
-     F1 = new IA64FloatRegister(1);
-     F2 = new IA64FloatRegister(2);
-     F3 = new IA64FloatRegister(3);
-     F4 = new IA64FloatRegister(4);
-     F5 = new IA64FloatRegister(5);
-     F6 = new IA64FloatRegister(6);
-     F7 = new IA64FloatRegister(7);
-     F8 = new IA64FloatRegister(8);
-     F9 = new IA64FloatRegister(9);
-     F10 = new IA64FloatRegister(10);
-     F11 = new IA64FloatRegister(11);
-     F12 = new IA64FloatRegister(12);
-     F13 = new IA64FloatRegister(13);
-     F14 = new IA64FloatRegister(14);
-     F15 = new IA64FloatRegister(15);
-     F16 = new IA64FloatRegister(16);
-     F17 = new IA64FloatRegister(17);
-     F18 = new IA64FloatRegister(18);
-     F19 = new IA64FloatRegister(19);
-     F20 = new IA64FloatRegister(20);
-     F21 = new IA64FloatRegister(21);
-     F22 = new IA64FloatRegister(22);
-     F23 = new IA64FloatRegister(23);
-     F24 = new IA64FloatRegister(24);
-     F25 = new IA64FloatRegister(25);
-     F26 = new IA64FloatRegister(26);
-     F27 = new IA64FloatRegister(27);
-     F28 = new IA64FloatRegister(28);
-     F29 = new IA64FloatRegister(29);
-     F30 = new IA64FloatRegister(30);
-     F31 = new IA64FloatRegister(31);
-     F32 = new IA64FloatRegister(32);
-     F33 = new IA64FloatRegister(33);
-     F34 = new IA64FloatRegister(34);
-     F35 = new IA64FloatRegister(35);
-     F36 = new IA64FloatRegister(36);
-     F37 = new IA64FloatRegister(37);
-     F38 = new IA64FloatRegister(38);
-     F39 = new IA64FloatRegister(39);
-     F40 = new IA64FloatRegister(40);
-     F41 = new IA64FloatRegister(41);
-     F42 = new IA64FloatRegister(42);
-     F43 = new IA64FloatRegister(43);
-     F44 = new IA64FloatRegister(44);
-     F45 = new IA64FloatRegister(45);
-     F46 = new IA64FloatRegister(46);
-     F47 = new IA64FloatRegister(47);
-     F48 = new IA64FloatRegister(48);
-     F49 = new IA64FloatRegister(49);
-     F50 = new IA64FloatRegister(50);
-     F51 = new IA64FloatRegister(51);
-     F52 = new IA64FloatRegister(52);
-     F53 = new IA64FloatRegister(53);
-     F54 = new IA64FloatRegister(54);
-     F55 = new IA64FloatRegister(55);
-     F56 = new IA64FloatRegister(56);
-     F57 = new IA64FloatRegister(57);
-     F58 = new IA64FloatRegister(58);
-     F59 = new IA64FloatRegister(59);
-     F60 = new IA64FloatRegister(60);
-     F61 = new IA64FloatRegister(61);
-     F62 = new IA64FloatRegister(62);
-     F63 = new IA64FloatRegister(63);
-     F64 = new IA64FloatRegister(64);
-     F65 = new IA64FloatRegister(65);
-     F66 = new IA64FloatRegister(66);
-     F67 = new IA64FloatRegister(67);
-     F68 = new IA64FloatRegister(68);
-     F69 = new IA64FloatRegister(69);
-     F70 = new IA64FloatRegister(70);
-     F71 = new IA64FloatRegister(71);
-     F72 = new IA64FloatRegister(72);
-     F73 = new IA64FloatRegister(73);
-     F74 = new IA64FloatRegister(74);
-     F75 = new IA64FloatRegister(75);
-     F76 = new IA64FloatRegister(76);
-     F77 = new IA64FloatRegister(77);
-     F78 = new IA64FloatRegister(78);
-     F79 = new IA64FloatRegister(79);
-     F80 = new IA64FloatRegister(80);
-     F81 = new IA64FloatRegister(81);
-     F82 = new IA64FloatRegister(82);
-     F83 = new IA64FloatRegister(83);
-     F84 = new IA64FloatRegister(84);
-     F85 = new IA64FloatRegister(85);
-     F86 = new IA64FloatRegister(86);
-     F87 = new IA64FloatRegister(87);
-     F88 = new IA64FloatRegister(88);
-     F89 = new IA64FloatRegister(89);
-     F90 = new IA64FloatRegister(90);
-     F91 = new IA64FloatRegister(91);
-     F92 = new IA64FloatRegister(92);
-     F93 = new IA64FloatRegister(93);
-     F94 = new IA64FloatRegister(94);
-     F95 = new IA64FloatRegister(95);
-     F96 = new IA64FloatRegister(96);
-     F97 = new IA64FloatRegister(97);
-     F98 = new IA64FloatRegister(98);
-     F99 = new IA64FloatRegister(99);
-     F100 = new IA64FloatRegister(100);
-     F101 = new IA64FloatRegister(101);
-     F102 = new IA64FloatRegister(102);
-     F103 = new IA64FloatRegister(103);
-     F104 = new IA64FloatRegister(104);
-     F105 = new IA64FloatRegister(105);
-     F106 = new IA64FloatRegister(106);
-     F107 = new IA64FloatRegister(107);
-     F108 = new IA64FloatRegister(108);
-     F109 = new IA64FloatRegister(109);
-     F110 = new IA64FloatRegister(110);
-     F111 = new IA64FloatRegister(111);
-     F112 = new IA64FloatRegister(112);
-     F113 = new IA64FloatRegister(113);
-     F114 = new IA64FloatRegister(114);
-     F115 = new IA64FloatRegister(115);
-     F116 = new IA64FloatRegister(116);
-     F117 = new IA64FloatRegister(117);
-     F118 = new IA64FloatRegister(118);
-     F119 = new IA64FloatRegister(119);
-     F120 = new IA64FloatRegister(120);
-     F121 = new IA64FloatRegister(121);
-     F122 = new IA64FloatRegister(122);
-     F123 = new IA64FloatRegister(123);
-     F124 = new IA64FloatRegister(124);
-     F125 = new IA64FloatRegister(125);
-     F126 = new IA64FloatRegister(126);
-     F127 = new IA64FloatRegister(127);
-
-        registers = (new IA64FloatRegister[] {
-            F0, F1, F2, F3, F4, F5, F6, F7, F8, F9,
-            F10, F11, F12, F13, F14, F15, F16, F17, F18, F19,
-            F20, F21, F22, F23, F24, F25, F26, F27, F28, F29,
-            F30, F31, F32, F33, F34, F35, F36, F37, F38, F39,
-            F40, F41, F42, F43, F44, F45, F46, F47, F48, F49,
-            F50, F51, F52, F53, F54, F55, F56, F57, F58, F59,
-            F60, F61, F62, F63, F64, F65, F66, F67, F68, F69,
-            F70, F71, F72, F73, F74, F75, F76, F77, F78, F79,
-            F80, F81, F82, F83, F84, F85, F86, F87, F88, F89,
-            F90, F91, F92, F93, F94, F95, F96, F97, F98, F99,
-            F100, F101, F102, F103, F104, F105, F106, F107, F108, F109,
-            F110, F111, F112, F113, F114, F115, F116, F117, F118, F119,
-            F120, F121, F122, F123, F124, F125, F126, F127
-        });
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64Helper.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.ia64;
-
-import sun.jvm.hotspot.asm.*;
-
-public class IA64Helper implements CPUHelper {
-   public Disassembler createDisassembler(long startPc, byte[] code) {
-      // FIXME: IA64 disassembler not implemented
-      return null;
-   }
-
-   public Register getIntegerRegister(int num) {
-      // FIXME: IA64 disassembler not implemented
-      return null;
-   }
-
-   public Register getFloatRegister(int num) {
-      // FIXME: IA64 disassembler not implemented
-      return null;
-   }
-
-   public Register getStackPointer() {
-      // FIXME: IA64 disassembler not implemented
-      return null;
-   }
-
-   public Register getFramePointer() {
-      // FIXME: IA64 disassembler not implemented
-      return null;
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64Register.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.ia64;
-
-import sun.jvm.hotspot.asm.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.utilities.*;
-
-public class IA64Register extends Register {
-
-  //
-  private static final int STACKED_BASE = 32;
-  private static final int STACKED_END = 127;
-
-  // We put application registers here too rather than separate types
-  private static final int APPL_BASE   = 128;
-
-  private static final int nofRegisters = 129;  // total number of registers
-
-  /** Constructor for an explicitly numbered register */
-  public IA64Register(int number) {
-    super(number);
-  }
-
-  public int getNumberOfRegisters() {
-    return nofRegisters;
-  }
-
-  public boolean isStacked() {
-    return (32 <= getNumber());
-  }
-
-  /** NOTE: this returns an offset in BYTES in this system! */
-  public long spOffsetInSavedWindow() {
-    return 0;
-  }
-
-  public String toString() {
-    return IA64Registers.getRegisterName(number);
-  }
-
-  public boolean isFramePointer() {
-    return number == APPL_BASE;
-  }
-
-  public boolean isStackPointer() {
-    return number == 12;
-  }
-
-  public boolean isFloat() {
-    return false;
-  }
-
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/ia64/IA64Registers.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,353 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.ia64;
-
-import sun.jvm.hotspot.utilities.*;
-
-public class IA64Registers {
-
-    public static final IA64Register GR0;
-    public static final IA64Register GR1;
-    public static final IA64Register GR2;
-    public static final IA64Register GR3;
-    public static final IA64Register GR4;
-    public static final IA64Register GR5;
-    public static final IA64Register GR6;
-    public static final IA64Register GR7;
-    public static final IA64Register GR8;
-    public static final IA64Register GR9;
-    public static final IA64Register GR10;
-    public static final IA64Register GR11;
-    public static final IA64Register GR12;
-    public static final IA64Register GR13;
-    public static final IA64Register GR14;
-    public static final IA64Register GR15;
-    public static final IA64Register GR16;
-    public static final IA64Register GR17;
-    public static final IA64Register GR18;
-    public static final IA64Register GR19;
-    public static final IA64Register GR20;
-    public static final IA64Register GR21;
-    public static final IA64Register GR22;
-    public static final IA64Register GR23;
-    public static final IA64Register GR24;
-    public static final IA64Register GR25;
-    public static final IA64Register GR26;
-    public static final IA64Register GR27;
-    public static final IA64Register GR28;
-    public static final IA64Register GR29;
-    public static final IA64Register GR30;
-    public static final IA64Register GR31;
-    public static final IA64Register GR32;
-    public static final IA64Register GR33;
-    public static final IA64Register GR34;
-    public static final IA64Register GR35;
-    public static final IA64Register GR36;
-    public static final IA64Register GR37;
-    public static final IA64Register GR38;
-    public static final IA64Register GR39;
-    public static final IA64Register GR40;
-    public static final IA64Register GR41;
-    public static final IA64Register GR42;
-    public static final IA64Register GR43;
-    public static final IA64Register GR44;
-    public static final IA64Register GR45;
-    public static final IA64Register GR46;
-    public static final IA64Register GR47;
-    public static final IA64Register GR48;
-    public static final IA64Register GR49;
-    public static final IA64Register GR50;
-    public static final IA64Register GR51;
-    public static final IA64Register GR52;
-    public static final IA64Register GR53;
-    public static final IA64Register GR54;
-    public static final IA64Register GR55;
-    public static final IA64Register GR56;
-    public static final IA64Register GR57;
-    public static final IA64Register GR58;
-    public static final IA64Register GR59;
-    public static final IA64Register GR60;
-    public static final IA64Register GR61;
-    public static final IA64Register GR62;
-    public static final IA64Register GR63;
-    public static final IA64Register GR64;
-    public static final IA64Register GR65;
-    public static final IA64Register GR66;
-    public static final IA64Register GR67;
-    public static final IA64Register GR68;
-    public static final IA64Register GR69;
-    public static final IA64Register GR70;
-    public static final IA64Register GR71;
-    public static final IA64Register GR72;
-    public static final IA64Register GR73;
-    public static final IA64Register GR74;
-    public static final IA64Register GR75;
-    public static final IA64Register GR76;
-    public static final IA64Register GR77;
-    public static final IA64Register GR78;
-    public static final IA64Register GR79;
-    public static final IA64Register GR80;
-    public static final IA64Register GR81;
-    public static final IA64Register GR82;
-    public static final IA64Register GR83;
-    public static final IA64Register GR84;
-    public static final IA64Register GR85;
-    public static final IA64Register GR86;
-    public static final IA64Register GR87;
-    public static final IA64Register GR88;
-    public static final IA64Register GR89;
-    public static final IA64Register GR90;
-    public static final IA64Register GR91;
-    public static final IA64Register GR92;
-    public static final IA64Register GR93;
-    public static final IA64Register GR94;
-    public static final IA64Register GR95;
-    public static final IA64Register GR96;
-    public static final IA64Register GR97;
-    public static final IA64Register GR98;
-    public static final IA64Register GR99;
-    public static final IA64Register GR100;
-    public static final IA64Register GR101;
-    public static final IA64Register GR102;
-    public static final IA64Register GR103;
-    public static final IA64Register GR104;
-    public static final IA64Register GR105;
-    public static final IA64Register GR106;
-    public static final IA64Register GR107;
-    public static final IA64Register GR108;
-    public static final IA64Register GR109;
-    public static final IA64Register GR110;
-    public static final IA64Register GR111;
-    public static final IA64Register GR112;
-    public static final IA64Register GR113;
-    public static final IA64Register GR114;
-    public static final IA64Register GR115;
-    public static final IA64Register GR116;
-    public static final IA64Register GR117;
-    public static final IA64Register GR118;
-    public static final IA64Register GR119;
-    public static final IA64Register GR120;
-    public static final IA64Register GR121;
-    public static final IA64Register GR122;
-    public static final IA64Register GR123;
-    public static final IA64Register GR124;
-    public static final IA64Register GR125;
-    public static final IA64Register GR126;
-    public static final IA64Register GR127;
-
-    public static final IA64Register AR_BSP;
-
-    public static final int NUM_REGISTERS = 129;
-    private static final IA64Register registers[];
-
-    static {
-     GR0 = new IA64Register(0);
-     GR1 = new IA64Register(1);
-     GR2 = new IA64Register(2);
-     GR3 = new IA64Register(3);
-     GR4 = new IA64Register(4);
-     GR5 = new IA64Register(5);
-     GR6 = new IA64Register(6);
-     GR7 = new IA64Register(7);
-     GR8 = new IA64Register(8);
-     GR9 = new IA64Register(9);
-     GR10 = new IA64Register(10);
-     GR11 = new IA64Register(11);
-     GR12 = new IA64Register(12);
-     GR13 = new IA64Register(13);
-     GR14 = new IA64Register(14);
-     GR15 = new IA64Register(15);
-     GR16 = new IA64Register(16);
-     GR17 = new IA64Register(17);
-     GR18 = new IA64Register(18);
-     GR19 = new IA64Register(19);
-     GR20 = new IA64Register(20);
-     GR21 = new IA64Register(21);
-     GR22 = new IA64Register(22);
-     GR23 = new IA64Register(23);
-     GR24 = new IA64Register(24);
-     GR25 = new IA64Register(25);
-     GR26 = new IA64Register(26);
-     GR27 = new IA64Register(27);
-     GR28 = new IA64Register(28);
-     GR29 = new IA64Register(29);
-     GR30 = new IA64Register(30);
-     GR31 = new IA64Register(31);
-     GR32 = new IA64Register(32);
-     GR33 = new IA64Register(33);
-     GR34 = new IA64Register(34);
-     GR35 = new IA64Register(35);
-     GR36 = new IA64Register(36);
-     GR37 = new IA64Register(37);
-     GR38 = new IA64Register(38);
-     GR39 = new IA64Register(39);
-     GR40 = new IA64Register(40);
-     GR41 = new IA64Register(41);
-     GR42 = new IA64Register(42);
-     GR43 = new IA64Register(43);
-     GR44 = new IA64Register(44);
-     GR45 = new IA64Register(45);
-     GR46 = new IA64Register(46);
-     GR47 = new IA64Register(47);
-     GR48 = new IA64Register(48);
-     GR49 = new IA64Register(49);
-     GR50 = new IA64Register(50);
-     GR51 = new IA64Register(51);
-     GR52 = new IA64Register(52);
-     GR53 = new IA64Register(53);
-     GR54 = new IA64Register(54);
-     GR55 = new IA64Register(55);
-     GR56 = new IA64Register(56);
-     GR57 = new IA64Register(57);
-     GR58 = new IA64Register(58);
-     GR59 = new IA64Register(59);
-     GR60 = new IA64Register(60);
-     GR61 = new IA64Register(61);
-     GR62 = new IA64Register(62);
-     GR63 = new IA64Register(63);
-     GR64 = new IA64Register(64);
-     GR65 = new IA64Register(65);
-     GR66 = new IA64Register(66);
-     GR67 = new IA64Register(67);
-     GR68 = new IA64Register(68);
-     GR69 = new IA64Register(69);
-     GR70 = new IA64Register(70);
-     GR71 = new IA64Register(71);
-     GR72 = new IA64Register(72);
-     GR73 = new IA64Register(73);
-     GR74 = new IA64Register(74);
-     GR75 = new IA64Register(75);
-     GR76 = new IA64Register(76);
-     GR77 = new IA64Register(77);
-     GR78 = new IA64Register(78);
-     GR79 = new IA64Register(79);
-     GR80 = new IA64Register(80);
-     GR81 = new IA64Register(81);
-     GR82 = new IA64Register(82);
-     GR83 = new IA64Register(83);
-     GR84 = new IA64Register(84);
-     GR85 = new IA64Register(85);
-     GR86 = new IA64Register(86);
-     GR87 = new IA64Register(87);
-     GR88 = new IA64Register(88);
-     GR89 = new IA64Register(89);
-     GR90 = new IA64Register(90);
-     GR91 = new IA64Register(91);
-     GR92 = new IA64Register(92);
-     GR93 = new IA64Register(93);
-     GR94 = new IA64Register(94);
-     GR95 = new IA64Register(95);
-     GR96 = new IA64Register(96);
-     GR97 = new IA64Register(97);
-     GR98 = new IA64Register(98);
-     GR99 = new IA64Register(99);
-     GR100 = new IA64Register(100);
-     GR101 = new IA64Register(101);
-     GR102 = new IA64Register(102);
-     GR103 = new IA64Register(103);
-     GR104 = new IA64Register(104);
-     GR105 = new IA64Register(105);
-     GR106 = new IA64Register(106);
-     GR107 = new IA64Register(107);
-     GR108 = new IA64Register(108);
-     GR109 = new IA64Register(109);
-     GR110 = new IA64Register(110);
-     GR111 = new IA64Register(111);
-     GR112 = new IA64Register(112);
-     GR113 = new IA64Register(113);
-     GR114 = new IA64Register(114);
-     GR115 = new IA64Register(115);
-     GR116 = new IA64Register(116);
-     GR117 = new IA64Register(117);
-     GR118 = new IA64Register(118);
-     GR119 = new IA64Register(119);
-     GR120 = new IA64Register(120);
-     GR121 = new IA64Register(121);
-     GR122 = new IA64Register(122);
-     GR123 = new IA64Register(123);
-     GR124 = new IA64Register(124);
-     GR125 = new IA64Register(125);
-     GR126 = new IA64Register(126);
-     GR127 = new IA64Register(127);
-
-     AR_BSP = new IA64Register(128);
-
-        registers = (new IA64Register[] {
-            GR0, GR1, GR2, GR3, GR4, GR5, GR6, GR7, GR8, GR9,
-            GR10, GR11, GR12, GR13, GR14, GR15, GR16, GR17, GR18, GR19,
-            GR20, GR21, GR22, GR23, GR24, GR25, GR26, GR27, GR28, GR29,
-            GR30, GR31, GR32, GR33, GR34, GR35, GR36, GR37, GR38, GR39,
-            GR40, GR41, GR42, GR43, GR44, GR45, GR46, GR47, GR48, GR49,
-            GR50, GR51, GR52, GR53, GR54, GR55, GR56, GR57, GR58, GR59,
-            GR60, GR61, GR62, GR63, GR64, GR65, GR66, GR67, GR68, GR69,
-            GR70, GR71, GR72, GR73, GR74, GR75, GR76, GR77, GR78, GR79,
-            GR80, GR81, GR82, GR83, GR84, GR85, GR86, GR87, GR88, GR89,
-            GR90, GR91, GR92, GR93, GR94, GR95, GR96, GR97, GR98, GR99,
-            GR100, GR101, GR102, GR103, GR104, GR105, GR106, GR107, GR108, GR109,
-            GR110, GR111, GR112, GR113, GR114, GR115, GR116, GR117, GR118, GR119,
-            GR120, GR121, GR122, GR123, GR124, GR125, GR126, GR127, AR_BSP
-        });
-
-  }
-
-  public static final IA64Register FP = AR_BSP;
-  public static final IA64Register SP = GR12;
-
-
-  /** Prefer to use this instead of the constant above */
-  public static int getNumRegisters() {
-    return NUM_REGISTERS;
-  }
-
-
-  public static String getRegisterName(int regNum) {
-    if (regNum < 0 || regNum >= NUM_REGISTERS) {
-      return "[Illegal register " + regNum + "]";
-    }
-
-    if (Assert.ASSERTS_ENABLED) {
-      Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid integer register number!");
-    }
-
-    if (regNum == 128 ) {
-      return "BSP";
-    }
-
-    if (regNum == 12) {
-      return "SP";
-    }
-
-    return "R" + regNum;
-
-  }
-
-  public static IA64Register getRegister(int regNum) {
-    if (Assert.ASSERTS_ENABLED) {
-      Assert.that(regNum > -1 && regNum < NUM_REGISTERS, "invalid register number!");
-    }
-
-    return registers[regNum];
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/AlternateSpaceLdstubDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class AlternateSpaceLdstubDecoder extends LdstubDecoder {
-    AlternateSpaceLdstubDecoder(int op3, String name, int dataType) {
-        super(op3, name, dataType);
-    }
-
-    Instruction decodeMemoryInstruction(int instruction,
-                                               SPARCRegisterIndirectAddress addr,
-                                               SPARCRegister rd,
-                                               SPARCInstructionFactory factory) {
-        setAddressSpace(instruction, addr);
-        return factory.newLdstubInstruction(name, addr, rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/AlternateSpaceLoadDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class AlternateSpaceLoadDecoder extends LoadDecoder {
-    AlternateSpaceLoadDecoder(int op3, String name, int dataType) {
-        super(op3, name, dataType);
-    }
-
-    Instruction decodeMemoryInstruction(int instruction,
-                                     SPARCRegisterIndirectAddress addr,
-                                     SPARCRegister rd,
-                                     SPARCInstructionFactory factory) {
-        setAddressSpace(instruction, addr);
-        return factory.newLoadInstruction(name, op3, addr, rd, dataType);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/AlternateSpaceStoreDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class AlternateSpaceStoreDecoder extends StoreDecoder {
-    AlternateSpaceStoreDecoder(int op3, String name, int dataType) {
-        super(op3, name, dataType);
-    }
-
-    protected Instruction decodeMemoryInstruction(int instruction,
-                                               SPARCRegisterIndirectAddress addr,
-                                               SPARCRegister rd,
-                                               SPARCInstructionFactory factory) {
-        setAddressSpace(instruction, addr);
-        return factory.newStoreInstruction(name, op3, addr, rd, dataType);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/AlternateSpaceSwapDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class AlternateSpaceSwapDecoder extends SwapDecoder {
-    AlternateSpaceSwapDecoder(int op3, String name, int dataType) {
-        super(op3, name, dataType);
-    }
-
-    Instruction decodeMemoryInstruction(int instruction,
-                                     SPARCRegisterIndirectAddress addr,
-                                     SPARCRegister rd,
-                                     SPARCInstructionFactory factory) {
-        setAddressSpace(instruction, addr);
-        return factory.newSwapInstruction(name, addr, rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/ArithmeticDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class ArithmeticDecoder extends Format3ADecoder {
-    ArithmeticDecoder(int op3, String name, int rtlOperation) {
-        super(op3, name, rtlOperation);
-    }
-
-    Instruction decodeFormat3AInstruction(int instruction,
-                                       SPARCRegister rs1,
-                                       ImmediateOrRegister operand2,
-                                       SPARCRegister rd,
-                                       SPARCInstructionFactory factory) {
-        return factory.newArithmeticInstruction(name, op3, rtlOperation, rs1, operand2, rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/BranchDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-abstract class BranchDecoder extends InstructionDecoder {
-
-    // format 2 - condition code names.
-    // Appendix F - Opcodes and Condition Codes - Page 231 - Table F-7.
-    static final String integerConditionNames[] = {
-        "bn", "be", "ble", "bl", "bleu", "bcs", "bneg", "bvs",
-        "ba", "bne", "bg", "bge", "bgu", "bcc", "bpos", "bvc"
-    };
-
-    static final String integerAnnuledConditionNames[] = {
-        "bn,a", "be,a", "ble,a", "bl,a", "bleu,a", "bcs,a", "bneg,a", "bvs,a",
-        "ba,a", "bne,a", "bg,a", "bge,a", "bgu,a", "bcc,a", "bpos,a", "bvc,a"
-    };
-
-    // format 2 - condition code names.
-    // Appendix F - Opcodes and Condition Codes - Page 231 - Table F-7.
-    static final String floatConditionNames[] = {
-        "fbn", "fbne", "fblg", "fbul", "fbl", "fbug", "fbg", "fbu",
-        "fba", "fbe",  "fbue", "fbge", "fbuge", "fble", "fbule", "fbo"
-    };
-
-    static final String floatAnnuledConditionNames[] = {
-        "fbn,a", "fbne,a", "fblg,a", "fbul,a", "fbl,a", "fbug,a", "fbg,a", "fbu,a",
-        "fba,a", "fbe,a",  "fbue,a", "fbge,a", "fbuge,a", "fble,a", "fbule,a", "fbo,a"
-    };
-
-    static boolean getAnnuledBit(int instruction) {
-        return (instruction & ANNUL_MASK) != 0;
-    }
-
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        boolean isAnnuled = getAnnuledBit(instruction);
-        int conditionCode = getConditionCode(instruction);
-        String conditionName = getConditionName(conditionCode, isAnnuled);
-        int offset = extractSignedIntFromNBits(instruction, 22);
-        // word align the offset by right shifting 2 bits
-        offset <<= 2;
-        PCRelativeAddress addr = new PCRelativeAddress(offset);
-        return factory.newBranchInstruction(conditionName, addr, isAnnuled, conditionCode);
-    }
-
-    abstract String getConditionName(int conditionCode, boolean isAnnuled);
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/CallDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class CallDecoder extends InstructionDecoder {
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        // sign extend, word align the offset
-        int offset = (instruction & DISP_30_MASK) << 2;
-        return factory.newCallInstruction(new PCRelativeAddress(offset));
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/CoprocessorBranchDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-// format 2 - condition code names.
-// Appendix F - Opcodes and Condition Codes - Page 231 - Table F-7.
-
-class CoprocessorBranchDecoder extends BranchDecoder {
-    private static final String coprocessorConditionNames[] = {
-        "cbn", "cb123", "cb12", "cb13", "cb1", "cb23", "cb2", "cb3",
-        "cba", "cb0",  "cb03", "cb02", "cb023", "cb01", "cb013", "cb012"
-    };
-
-    private static final String coprocessorAnnuledConditionNames[] = {
-        "cbn,a", "cb123,a", "cb12,a", "cb13,a", "cb1,a", "cb23,a", "cb2,a", "cb3,a",
-        "cba,a", "cb0,a",  "cb03,a", "cb02,a", "cb023,a", "cb01,a", "cb013,a", "cb012,a"
-    };
-
-    String getConditionName(int conditionCode, boolean isAnnuled) {
-        return isAnnuled ? coprocessorAnnuledConditionNames[conditionCode]
-                         : coprocessorConditionNames[conditionCode];
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/CoprocessorDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class CoprocessorDecoder extends InstructionDecoder {
-    private int op3;
-    CoprocessorDecoder(int op3) {
-        this.op3 = op3;
-    }
-
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        int rs1Num = getSourceRegister1(instruction);
-        int rs2Num = getSourceRegister2(instruction);
-        int rdNum = getDestinationRegister(instruction);
-
-        return factory.newCoprocessorInstruction(instruction, op3,
-                                     (instruction & OPC_MASK) >> OPF_START_BIT,
-                                     rs1Num, rs2Num, rdNum);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FP2RegisterDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-import sun.jvm.hotspot.utilities.Assert;
-
-class FP2RegisterDecoder extends FloatDecoder {
-
-    FP2RegisterDecoder(int opf, String name, int srcType, int resultType) {
-        super(opf, name, srcType, resultType);
-    }
-
-    Instruction decodeFloatInstruction(int instruction,
-                                       SPARCRegister rs1, SPARCRegister rs2,
-                                       SPARCRegister rd,
-                                       SPARCInstructionFactory factory) {
-        if (Assert.ASSERTS_ENABLED)
-            Assert.that(rs2.isFloat() && rd.isFloat(), "rs2, rd have to be float registers");
-
-        return factory.newFP2RegisterInstruction(name, opf, (SPARCFloatRegister)rs2, (SPARCFloatRegister)rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FPArithmeticDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-import sun.jvm.hotspot.utilities.Assert;
-
-class FPArithmeticDecoder extends FloatDecoder {
-    private final int rtlOperation;
-
-    FPArithmeticDecoder(int opf, String name, int rtlOperation,
-                        int src1Type, int src2Type, int resultType) {
-       super(opf, name, src1Type, src2Type, resultType);
-       this.rtlOperation = rtlOperation;
-    }
-
-    Instruction decodeFloatInstruction(int instruction,
-                       SPARCRegister rs1, SPARCRegister rs2,
-                       SPARCRegister rd,
-                       SPARCInstructionFactory factory) {
-        if (Assert.ASSERTS_ENABLED)
-            Assert.that(rs1.isFloat() && rs2.isFloat() && rd.isFloat(), "rs1, rs2 and rd must be floats");
-        return factory.newFPArithmeticInstruction(name, opf, rtlOperation,
-                                                 (SPARCFloatRegister)rs1,
-                                                 (SPARCFloatRegister)rs2,
-                                                 (SPARCFloatRegister)rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FPMoveDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-import sun.jvm.hotspot.utilities.Assert;
-
-class FPMoveDecoder extends FloatDecoder {
-
-    FPMoveDecoder(int opf, String name, int srcType, int resultType) {
-        super(opf, name, srcType, resultType);
-    }
-
-    Instruction decodeFloatInstruction(int instruction,
-                                       SPARCRegister rs1, SPARCRegister rs2,
-                                       SPARCRegister rd,
-                                       SPARCInstructionFactory factory) {
-        if (Assert.ASSERTS_ENABLED)
-            Assert.that(rs2.isFloat() && rd.isFloat(), "rs2, rd have to be float registers");
-
-        return factory.newFPMoveInstruction(name, opf, (SPARCFloatRegister)rs2, (SPARCFloatRegister)rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FPopDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-abstract class FPopDecoder extends InstructionDecoder {
-    abstract InstructionDecoder getOpfDecoder(int opf);
-
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        int opf = getOpf(instruction);
-        InstructionDecoder decoder = getOpfDecoder(opf);
-        return (decoder == null) ? factory.newIllegalInstruction(instruction)
-                                 : decoder.decode(instruction, factory);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FloatBranchDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-class FloatBranchDecoder extends BranchDecoder {
-    String getConditionName(int conditionCode, boolean isAnnuled) {
-        return isAnnuled ? floatAnnuledConditionNames[conditionCode]
-                         : floatConditionNames[conditionCode];
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FloatDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-abstract class FloatDecoder extends InstructionDecoder {
-    final int    opf;
-    final String name;
-    final int    numSources; // 1 or 2;
-    final int    src1Type;   // RTLDT_FL_SINGLE, _DOUBLE, _QUAD
-    final int    src2Type;   // RTLDT_FL_SINGLE, _DOUBLE, _QUAD
-    final int    resultType; // RTLDT_FL_SINGLE, _DOUBLE, _QUAD
-
-    FloatDecoder(int opf, String name, int src1Type, int src2Type, int resultType) {
-        this.opf = opf;
-        this.name = name;
-        numSources = 2;
-        this.src1Type = src1Type;
-        this.src2Type = src2Type;
-        this.resultType = resultType;
-    }
-
-    FloatDecoder(int opf, String name, int src2Type, int resultType) {
-        this.opf = opf;
-        this.name = name;
-        numSources = 1;
-        this.src1Type = RTLOP_UNKNOWN;
-        this.src2Type = src2Type;
-        this.resultType = resultType;
-    }
-
-    abstract Instruction decodeFloatInstruction(int instruction,
-                               SPARCRegister rs1, SPARCRegister rs2, SPARCRegister rd,
-                               SPARCInstructionFactory factory);
-
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        int rs1Num = getSourceRegister1(instruction);
-        int rs2Num = getSourceRegister2(instruction);
-        int rdNum = getDestinationRegister(instruction);
-
-        SPARCRegister rs1 = null;
-        if (numSources == 2) {
-           rs1 = RegisterDecoder.decode(src1Type, rs1Num);
-           if (rs1 == null) {
-              return factory.newIllegalInstruction(instruction);
-           }
-        }
-
-        SPARCRegister rd = RegisterDecoder.decode(resultType, rdNum);
-        SPARCRegister rs2 = RegisterDecoder.decode(src2Type, rs2Num);
-        if (rd == null || rs2 == null) {
-           return factory.newIllegalInstruction(instruction);
-        }
-
-        return decodeFloatInstruction(instruction, rs1, rs2, rd, factory);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/FlushDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class FlushDecoder extends MemoryInstructionDecoder {
-    FlushDecoder() {
-        super(FLUSH, "flush", RTLDT_UNKNOWN);
-    }
-
-    Instruction decodeMemoryInstruction(int instruction, SPARCRegisterIndirectAddress addr,
-                      SPARCRegister rd, SPARCInstructionFactory factory) {
-        return factory.newFlushInstruction(addr);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/Format3ADecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-abstract class Format3ADecoder extends InstructionDecoder
-                           implements /* imports */ RTLOperations {
-    final int op3;
-    final String name;
-    final int rtlOperation;
-
-    Format3ADecoder(int op3, String name, int rtlOperation) {
-        this.op3 = op3;
-        this.name = name;
-        this.rtlOperation = rtlOperation;
-    }
-
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        SPARCRegister rs1 = SPARCRegisters.getRegister(getSourceRegister1(instruction));
-        SPARCRegister rd = SPARCRegisters.getRegister(getDestinationRegister(instruction));
-        ImmediateOrRegister operand2 = getOperand2(instruction);
-        return decodeFormat3AInstruction(instruction, rs1, operand2, rd, factory);
-    }
-
-    abstract Instruction decodeFormat3AInstruction(int instruction,
-                                       SPARCRegister rs1,
-                                       ImmediateOrRegister operand2,
-                                       SPARCRegister rd,
-                                       SPARCInstructionFactory factory);
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/IllegalInstructionDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class IllegalInstructionDecoder extends InstructionDecoder {
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        return factory.newIllegalInstruction(instruction);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/InstructionDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-// basic instruction decoder class
-abstract class InstructionDecoder implements /* imports */ SPARCOpcodes , RTLDataTypes, RTLOperations {
-    // some general utility functions - for format 2, 3 & 3A instructions
-
-    static int extractSignedIntFromNBits(int value, int num_bits) {
-        return (value << (32 - num_bits)) >> (32 - num_bits);
-    }
-
-    // "rs1"
-    static int getSourceRegister1(int instruction) {
-        return (instruction & RS1_MASK) >>> RS1_START_BIT;
-    }
-
-    // "rs2"
-    static int getSourceRegister2(int instruction) {
-        return (instruction & RS2_MASK);
-    }
-
-    // "rd"
-    static int getDestinationRegister(int instruction) {
-        return (instruction & RD_MASK) >>> RD_START_BIT;
-    }
-
-    static int getConditionCode(int instruction) {
-        return (instruction & CONDITION_CODE_MASK) >>> CONDITION_CODE_START_BIT;
-    }
-
-    // "i" bit - used to indicate whether second component in an indirect
-    // address is immediate value or a register. (format 3 & 3A).
-
-    static boolean isIBitSet(int instruction) {
-        return (instruction & I_MASK) != 0;
-    }
-
-    static ImmediateOrRegister getOperand2(int instruction) {
-        boolean iBit = isIBitSet(instruction);
-        ImmediateOrRegister operand2 = null;
-        if (iBit) {
-           operand2 = new Immediate(new Short((short)extractSignedIntFromNBits(instruction, 13)));
-        } else {
-           operand2 = SPARCRegisters.getRegister(getSourceRegister2(instruction));
-        }
-        return operand2;
-    }
-
-    // "opf" - floating point operation code.
-    static int getOpf(int instruction) {
-        return (instruction & OPF_MASK) >>> OPF_START_BIT;
-    }
-
-    abstract Instruction decode(int instruction, SPARCInstructionFactory factory);
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/IntegerBranchDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-class IntegerBranchDecoder extends BranchDecoder {
-    String getConditionName(int conditionCode, boolean isAnnuled) {
-        return isAnnuled ? integerAnnuledConditionNames[conditionCode]
-                         : integerConditionNames[conditionCode];
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/JmplDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class JmplDecoder extends MemoryInstructionDecoder {
-    JmplDecoder() {
-        super(JMPL, "jmpl", RTLDT_UNSIGNED_WORD);
-    }
-
-    Instruction decodeMemoryInstruction(int instruction, SPARCRegisterIndirectAddress addr,
-                       SPARCRegister rd,  SPARCInstructionFactory factory) {
-        // this may be most probably indirect call or ret or retl
-        Instruction instr = null;
-        if (rd == SPARCRegisters.O7) {
-            instr = factory.newIndirectCallInstruction(addr, rd);
-        } else if (rd == SPARCRegisters.G0) {
-            int disp = (int) addr.getDisplacement();
-            Register base = addr.getBase();
-            if (base == SPARCRegisters.I7 && disp == 8) {
-                instr = factory.newReturnInstruction(addr, rd, false /* not leaf */);
-            } else if (base == SPARCRegisters.O7 && disp == 8) {
-                instr = factory.newReturnInstruction(addr, rd, true /* leaf */);
-            } else {
-                instr = factory.newJmplInstruction(addr, rd);
-            }
-        } else {
-            instr = factory.newJmplInstruction(addr, rd);
-        }
-        return instr;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/LdstubDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class LdstubDecoder extends MemoryInstructionDecoder {
-    LdstubDecoder(int op3, String name, int dataType) {
-        super(op3, name, dataType);
-    }
-
-    Instruction decodeMemoryInstruction(int instruction,
-                                     SPARCRegisterIndirectAddress addr,
-                                     SPARCRegister rd,
-                                     SPARCInstructionFactory factory) {
-        return factory.newLdstubInstruction(name, addr, rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/LoadDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class LoadDecoder extends MemoryInstructionDecoder {
-    LoadDecoder(int op3, String name, int dataType) {
-        super(op3, name, dataType);
-    }
-
-    Instruction decodeMemoryInstruction(int instruction,
-                                     SPARCRegisterIndirectAddress addr,
-                                     SPARCRegister rd,
-                                     SPARCInstructionFactory factory) {
-        return factory.newLoadInstruction(name, op3, addr, rd, dataType);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/LogicDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class LogicDecoder extends Format3ADecoder {
-    LogicDecoder(int op3, String name, int rtlOperation) {
-        super(op3, name, rtlOperation);
-    }
-
-    Instruction decodeFormat3AInstruction(int instruction,
-                                           SPARCRegister rs1,
-                                           ImmediateOrRegister operand2,
-                                           SPARCRegister rd,
-                                           SPARCInstructionFactory factory) {
-        Instruction instr = null;
-        if (op3 == OR && rs1 == SPARCRegisters.G0 && rd != SPARCRegisters.G0) {
-            instr = factory.newMoveInstruction(name, op3, operand2, rd);
-        } else {
-            instr = factory.newLogicInstruction(name, op3, rtlOperation, rs1, operand2, rd);
-        }
-        return instr;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/MemoryInstructionDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-abstract class MemoryInstructionDecoder extends InstructionDecoder {
-    final int    op3;
-    final String name;
-    final int    dataType;
-
-    SPARCRegisterIndirectAddress newRegisterIndirectAddress(SPARCRegister rs1, SPARCRegister rs2) {
-        return new SPARCRegisterIndirectAddress(rs1, rs2);
-    }
-
-    SPARCRegisterIndirectAddress newRegisterIndirectAddress(SPARCRegister rs1, int offset) {
-        return new SPARCRegisterIndirectAddress(rs1, offset);
-    }
-
-    static void setAddressSpace(int instruction, SPARCRegisterIndirectAddress addr) {
-        int asi = (instruction & ASI_MASK) >>> ASI_START_BIT;
-        addr.setAddressSpace(asi);
-    }
-
-    SPARCRegisterIndirectAddress getRegisterIndirectAddress(int instruction) {
-        SPARCRegister rs1 = SPARCRegisters.getRegister(getSourceRegister1(instruction));
-        boolean iBit = isIBitSet(instruction);
-        SPARCRegisterIndirectAddress addr = null;
-        if (iBit) {
-            int simm13 = extractSignedIntFromNBits(instruction, 13);
-            addr = newRegisterIndirectAddress(rs1,simm13);
-        } else {
-            SPARCRegister rs2 = SPARCRegisters.getRegister(getSourceRegister2(instruction));
-            addr = newRegisterIndirectAddress(rs1,rs2);
-        }
-        return addr;
-    }
-
-    MemoryInstructionDecoder(int op3, String name, int dataType) {
-        this.op3 = op3;
-        this.name = name;
-        this.dataType = dataType;
-    }
-
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        SPARCRegisterIndirectAddress addr = getRegisterIndirectAddress(instruction);
-        SPARCRegister rd = getDestination(instruction);
-        boolean isV9Okay = (factory instanceof SPARCV9InstructionFactory);
-        if ( (rd == null) || (! isV9Okay && rd.isV9Only()) )
-            return factory.newIllegalInstruction(instruction);
-
-        return decodeMemoryInstruction(instruction, addr, rd, factory);
-    }
-
-    SPARCRegister getDestination(int instruction) {
-        int rdNum = getDestinationRegister(instruction);
-        SPARCRegister rd = RegisterDecoder.decode(dataType, rdNum);
-        return rd;
-    }
-
-    abstract Instruction decodeMemoryInstruction(int instruction,
-                                   SPARCRegisterIndirectAddress addr,
-                                   SPARCRegister rd, SPARCInstructionFactory factory);
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/ReadDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class ReadDecoder extends ReadWriteDecoder {
-    ReadDecoder(int specialRegNum) {
-        super(specialRegNum);
-    }
-
-    Instruction decodeReadWrite(int instruction, SPARCInstructionFactory factory,
-                                int rs1Num, int rdNum) {
-        Instruction instr = null;
-        int specialReg = specialRegNum;
-        if (rs1Num == 0)
-            specialReg = SPARCSpecialRegisters.Y;
-        if (rs1Num == 15 && rdNum == 0) {
-            instr = factory.newStbarInstruction();
-        } else {
-            instr = factory.newReadInstruction(specialReg, rs1Num,
-                                  SPARCRegisters.getRegister(rdNum));
-        }
-        return instr;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/ReadWriteDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-abstract class ReadWriteDecoder extends InstructionDecoder {
-    final int specialRegNum;
-
-    abstract Instruction decodeReadWrite(int instruction,
-                               SPARCInstructionFactory factory,
-                               int rs1Num, int rdNum);
-
-    ReadWriteDecoder(int specialRegNum) {
-        this.specialRegNum = specialRegNum;
-    }
-
-    Instruction decode(int instruction, SPARCInstructionFactory factory) {
-        Instruction instr = null;
-        int rs1Num = getSourceRegister1(instruction);
-        int rdNum = getDestinationRegister(instruction);
-        return decodeReadWrite(instruction, factory, rs1Num, rdNum);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/RegisterDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.RTLDataTypes;
-
-class RegisterDecoder implements /* imports */ RTLDataTypes {
-    // refer to page 40 - section 5.1.4.1 - Floating-point Register Number Encoding
-    private static SPARCFloatRegister decodeDouble(int num) {
-        // 6 bit double precision registers are encoded in 5 bits as
-        // b<4> b<3> b<2> b<1> b<5>.
-
-        boolean lsb = (0x1 & num) != 0;
-        if (lsb)
-            num |= 0x20;  // 10000b
-
-        if ((num % 2) != 0)
-            return null;
-
-        return SPARCFloatRegisters.getRegister(num);
-    }
-
-    private static SPARCFloatRegister decodeQuad(int num) {
-        // 6 bit quad precision registers are encoded in 5 bits as
-        // b<4> b<3> b<2> 0 b<5>
-
-        boolean lsb = (0x1 & num) != 0;
-        if (lsb)
-            num |= 0x20; // 10000b
-
-        if ((num % 4) != 0)
-            return null;
-
-        return SPARCFloatRegisters.getRegister(num);
-    }
-
-    static SPARCRegister decode(int dataType, int regNum) {
-        regNum &= 0x1F; // mask out all but lsb 5 bits
-        SPARCRegister result = null;
-        switch (dataType) {
-            case RTLDT_FL_SINGLE:
-                result = SPARCFloatRegisters.getRegister(regNum);
-                break;
-
-            case RTLDT_FL_DOUBLE:
-                result = decodeDouble(regNum);
-                break;
-
-            case RTLDT_FL_QUAD:
-                result = decodeQuad(regNum);
-                break;
-
-            case RTLDT_UNKNOWN:
-                result = null;
-                break;
-
-            default: // some integer register
-                result = SPARCRegisters.getRegister(regNum);
-                break;
-        }
-        return result;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/RestoreDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class RestoreDecoder extends Format3ADecoder {
-    RestoreDecoder() {
-        super(RESTORE, "restore", RTLOP_UNKNOWN);
-    }
-
-    Instruction decodeFormat3AInstruction(int instruction,
-                                           SPARCRegister rs1,
-                                           ImmediateOrRegister operand2,
-                                           SPARCRegister rd,
-                                           SPARCInstructionFactory factory) {
-        return factory.newRestoreInstruction(rs1, operand2, rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/RettDecoder.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-class RettDecoder extends MemoryInstructionDecoder {
-    RettDecoder() {
-        super(RETT, "rett", RTLDT_UNKNOWN);
-    }
-
-    Instruction decodeMemoryInstruction(int instruction, SPARCRegisterIndirectAddress addr,
-                      SPARCRegister rd, SPARCInstructionFactory factory) {
-        return factory.newRettInstruction(addr);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCArithmeticInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCArithmeticInstruction extends SPARCFormat3AInstruction
-    implements ArithmeticInstruction {
-    final private int operation;
-
-    public SPARCArithmeticInstruction(String name, int opcode, int operation, SPARCRegister rs1,
-                                      ImmediateOrRegister operand2, SPARCRegister rd) {
-        super(name, opcode, rs1, operand2, rd);
-        this.operation = operation;
-    }
-
-    protected String getDescription() {
-        if (rd == rs1 && operand2.isImmediate()) {
-            int value = ((Immediate)operand2).getNumber().intValue();
-            StringBuffer buf = new StringBuffer();
-            switch (opcode) {
-                case ADD:
-                    buf.append("inc");
-                    break;
-                case ADDcc:
-                    buf.append("inccc");
-                    break;
-                case SUB:
-                    buf.append("dec");
-                    break;
-                case SUBcc:
-                    buf.append("deccc");
-                    break;
-                default:
-                    return super.getDescription();
-            }
-            buf.append(spaces);
-            if (value != 1) {
-                buf.append(getOperand2String()); buf.append(comma);
-            }
-            buf.append(rd.toString());
-            return buf.toString();
-        } else if (rd == SPARCRegisters.G0 && opcode == SUBcc) {
-            StringBuffer buf = new StringBuffer();
-            buf.append("cmp");
-            buf.append(spaces);
-            buf.append(rs1.toString());
-            buf.append(comma);
-            buf.append(getOperand2String());
-            return buf.toString();
-        } else if (rs1 == SPARCRegisters.G0 && opcode == SUB && operand2.isRegister()) {
-            StringBuffer buf = new StringBuffer();
-            buf.append("neg");
-            buf.append(spaces);
-            buf.append(operand2.toString());
-            if (operand2 != rd) {
-                buf.append(comma);
-                buf.append(rd.toString());
-            }
-            return buf.toString();
-        }
-
-        return super.getDescription();
-    }
-
-    public Operand getArithmeticDestination() {
-        return getDestinationRegister();
-    }
-
-    public Operand[] getArithmeticSources() {
-        return (new Operand[] { rs1, operand2 });
-    }
-
-    public int getOperation() {
-        return operation;
-    }
-
-    public boolean isArithmetic() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCAtomicLoadStoreInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public abstract class SPARCAtomicLoadStoreInstruction extends SPARCInstruction
-                        implements LoadInstruction, StoreInstruction {
-    final protected SPARCRegisterIndirectAddress addr;
-    final protected SPARCRegister rd;
-    final protected Register[] regs = new Register[1];
-    final protected String description;
-
-    public SPARCAtomicLoadStoreInstruction(String name, SPARCRegisterIndirectAddress addr, SPARCRegister rd) {
-        super(name);
-        this.addr = addr;
-        this.rd = rd;
-        regs[0] = rd;
-        description = initDescription();
-    }
-
-    private String initDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(addr.toString());
-        buf.append(comma);
-        buf.append(rd.toString());
-        return buf.toString();
-    }
-
-    public Address getLoadSource() {
-        return addr;
-    }
-
-    public Address getStoreDestination() {
-        return addr;
-    }
-
-    public Register[] getLoadDestinations() {
-        return regs;
-    }
-
-    public Register[] getStoreSources() {
-        return regs;
-    }
-
-    public boolean isLoad() {
-        return true;
-    }
-
-    public boolean isStore() {
-        return true;
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return description;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCBranchInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCBranchInstruction extends SPARCInstruction
-    implements BranchInstruction {
-    final protected PCRelativeAddress addr;
-    final protected int conditionCode;
-    final protected boolean isAnnuled;
-
-    public SPARCBranchInstruction(String name, PCRelativeAddress addr, boolean isAnnuled, int conditionCode) {
-        super(name);
-        this.addr = addr;
-        this.conditionCode = conditionCode;
-        this.isAnnuled = isAnnuled;
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        long address = addr.getDisplacement() + currentPc;
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(symFinder.getSymbolFor(address));
-        return buf.toString();
-    }
-
-    public Address getBranchDestination() {
-        return addr;
-    }
-
-    public int getConditionCode() {
-        return conditionCode;
-    }
-
-    public boolean isAnnuledBranch() {
-        return isAnnuled;
-    }
-
-    public boolean isBranch() {
-        return true;
-    }
-
-    public boolean isConditional() {
-        return conditionCode != CONDITION_BN && conditionCode != CONDITION_BA;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCCallInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCCallInstruction extends SPARCInstruction
-    implements CallInstruction {
-    final private PCRelativeAddress addr;
-
-    public SPARCCallInstruction(PCRelativeAddress addr) {
-        super("call");
-        this.addr = addr;
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        long address = addr.getDisplacement() + currentPc;
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(symFinder.getSymbolFor(address));
-        return buf.toString();
-    }
-
-    public Address getBranchDestination() {
-        return addr;
-    }
-
-    public boolean isCall() {
-        return true;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCDisassembler.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-import java.io.*;
-import java.util.*;
-
-public abstract class SPARCDisassembler extends Disassembler
-                    implements /* imports */ SPARCOpcodes, RTLDataTypes, RTLOperations {
-
-    // instruction cache - Map<Integer, Instruction>.
-    protected static Map instructionCache = new HashMap();
-    protected final SPARCInstructionFactory factory;
-
-    public SPARCDisassembler(long startPc, byte[] code, SPARCInstructionFactory factory) {
-        super(startPc, code);
-        this.factory = factory;
-    }
-
-    protected static InstructionDecoder illegalDecoder = new IllegalInstructionDecoder();
-    protected static InstructionDecoder callDecoder = new CallDecoder();
-
-    // direct call instruction
-    protected Instruction decodeFormat1Instruction(int instruction) {
-        return callDecoder.decode(instruction, factory);
-    }
-
-    protected abstract InstructionDecoder getFormat2Decoder(int op2);
-
-    protected Instruction decodeFormat2Instruction(int instruction) {
-        int op2 = (instruction & OP_2_MASK) >>> OP_2_START_BIT;
-        InstructionDecoder decoder = getFormat2Decoder(op2);
-        return decoder.decode(instruction, factory);
-    }
-
-    // "op3" - used in format 3 & 3A instructions - 6 bits width
-
-    protected static int getOp3(int instruction) {
-        return (instruction & OP_3_MASK) >>> OP_3_START_BIT;
-    }
-
-    // op3 opcodes is broken up into column and row. MSB 2 bits form column.
-    // LSB 4 bits form row number.
-
-    protected static int getOp3Row(int op3) {
-        return op3 & 0xF;
-    }
-
-    protected static int getOp3Column(int op3) {
-        return (op3 >>> 4) & 0x3;
-    }
-
-    protected abstract InstructionDecoder getFormat3Decoder(int row, int column);
-
-    // memory instructions
-    protected Instruction decodeFormat3Instruction(int instruction) {
-        int op3 = getOp3(instruction);
-        int row = getOp3Row(op3);
-        int column = getOp3Column(op3);
-        return getFormat3Decoder(row, column).decode(instruction, factory);
-    }
-
-    protected abstract InstructionDecoder getFormat3ADecoder(int row, int column);
-
-    // arithmetic, logic, shift and the rest
-    protected Instruction decodeFormat3AInstruction(int instruction) {
-        int op3 = getOp3(instruction);
-        int row = getOp3Row(op3);
-        int column = getOp3Column(op3);
-        return getFormat3ADecoder(row, column).decode(instruction, factory);
-    }
-
-    public void decode(InstructionVisitor visitor) {
-        visitor.prologue();
-        try {
-            DataInputStream dis = new DataInputStream(new ByteArrayInputStream(code));
-            int instruction = -1;
-            int format = -1;
-            Instruction instr = null;
-            int len = 0;
-
-            while (len < code.length) {
-                instr = null;
-                instruction =  dis.readInt();
-                // check whether we have this in cache.
-                instr = (Instruction) instructionCache.get(new Integer(instruction));
-                if (instr == null) {
-                    format = (instruction & FORMAT_MASK) >>> FORMAT_START_BIT;
-
-                    switch (format) {
-                        case FORMAT_2:  // 0
-                            instr = decodeFormat2Instruction(instruction);
-                            break;
-
-                        case FORMAT_1:  // 1
-                            instr = decodeFormat1Instruction(instruction);
-                            break;
-
-                        case FORMAT_3A: // 2
-                            instr = decodeFormat3AInstruction(instruction);
-                            break;
-
-                        case FORMAT_3:  // 3
-                            instr = decodeFormat3Instruction(instruction);
-                            break;
-                    }
-
-                    // add the new instruction to cache.
-                    instructionCache.put(new Integer(instruction), instr);
-                }
-
-                visitor.visit(startPc + len, instr);
-                len += 4;
-            }
-        } catch (IOException ioExp) {
-            // ignore, can't happen
-        } finally {
-            visitor.epilogue();
-        }
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFP2RegisterInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCFP2RegisterInstruction extends SPARCInstruction {
-    final SPARCFloatRegister rs;
-    final SPARCFloatRegister rd;
-    final int opf;
-
-    public SPARCFP2RegisterInstruction(String name, int opf, SPARCFloatRegister rs, SPARCFloatRegister rd) {
-        super(name);
-        this.rs = rs;
-        this.rd = rd;
-        this.opf = opf;
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return getDescription();
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(rs.toString());
-        buf.append(comma);
-        buf.append(rd.toString());
-
-        return buf.toString();
-    }
-
-    public boolean isFloat() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFPArithmeticInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCFPArithmeticInstruction extends SPARCFormat3AInstruction
-                    implements ArithmeticInstruction {
-    final private SPARCRegister rs2;
-    final private int rtlOperation;
-
-    public SPARCFPArithmeticInstruction(String name, int opcode, int rtlOperation,
-                                 SPARCRegister rs1, SPARCRegister rs2,
-                                 SPARCRegister rd) {
-        super(name, opcode, rs1, rs2, rd);
-        this.rs2 = rs2;
-        this.rtlOperation = rtlOperation;
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(rs1.toString());
-        buf.append(comma);
-        buf.append(rs2.toString());
-        buf.append(comma);
-        buf.append(rd.toString());
-        return buf.toString();
-    }
-
-    public int getOperation() {
-        return rtlOperation;
-    }
-
-    public Operand[] getArithmeticSources() {
-        return new Operand[] { rs1, rs2 };
-    }
-
-    public Operand getArithmeticDestination() {
-        return rd;
-    }
-
-    public boolean isFloat() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFPMoveInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCFPMoveInstruction extends SPARCFP2RegisterInstruction
-    implements MoveInstruction {
-
-    public SPARCFPMoveInstruction(String name, int opf, SPARCFloatRegister rs, SPARCFloatRegister rd) {
-        super(name, opf, rs, rd);
-    }
-
-    public Register getMoveDestination() {
-        return rd;
-    }
-
-    public ImmediateOrRegister getMoveSource() {
-        return rs;
-    }
-
-    public int getMoveOpcode() {
-        return opf;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-
-    public boolean isMove() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFloatRegister.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.Register;
-import sun.jvm.hotspot.utilities.Assert;
-
-public class SPARCFloatRegister extends SPARCRegister {
-
-    public SPARCFloatRegister(int number) {
-        super(number);
-    }
-
-    public int getNumber() {
-        return number;
-    }
-
-    public static final int SINGLE_PRECISION = 1;
-    public static final int DOUBLE_PRECISION = 2;
-    public static final int QUAD_PRECISION = 3;
-
-    public int getNumber(int width) {
-        switch (width) {
-        case SINGLE_PRECISION:
-            Assert.that(number < 32, "bad single-prec fp register");
-            return number;
-
-        case DOUBLE_PRECISION:
-            Assert.that(number < 64 && (number & 1) == 0, "bad double-prec fp register");
-            return number & 0x1e | (number & 0x20) >> 5;
-
-        case QUAD_PRECISION:
-            Assert.that(number < 64 && (number & 3) == 0, "bad quad-prec fp register");
-            return number & 0x1c | (number & 0x20) >> 5;
-        }
-        throw new RuntimeException("Invalid floating point width supplied");
-    }
-
-    private static final int nofRegisters = 63;
-    public int getNumberOfRegisters() {
-        return nofRegisters;
-    }
-
-    public boolean isFloat() {
-        return true;
-    }
-
-    public boolean isFramePointer() {
-        return false;
-    }
-
-    public boolean isStackPointer() {
-        return false;
-    }
-
-    public boolean isV9Only() {
-        return number > 31;
-    }
-
-    public boolean isValid() {
-        return number >= 0 && number < nofRegisters;
-    }
-
-    public String toString() {
-        return SPARCFloatRegisters.getRegisterName(number);
-    }
-
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFloatRegisters.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.utilities.Assert;
-
-public class SPARCFloatRegisters {
-    public static int getNumRegisters() {
-        return 64;
-    }
-
-    public static SPARCFloatRegister getRegister(int i) {
-        Assert.that(i >= 0 && i < 64, "float register number is invalid");
-        return registers[i];
-    }
-
-    public static String getRegisterName(int i) {
-        return "%f" + i;
-    }
-
-    public static final SPARCFloatRegister F0;
-    public static final SPARCFloatRegister F1;
-    public static final SPARCFloatRegister F2;
-    public static final SPARCFloatRegister F3;
-    public static final SPARCFloatRegister F4;
-    public static final SPARCFloatRegister F5;
-    public static final SPARCFloatRegister F6;
-    public static final SPARCFloatRegister F7;
-    public static final SPARCFloatRegister F8;
-    public static final SPARCFloatRegister F9;
-    public static final SPARCFloatRegister F10;
-    public static final SPARCFloatRegister F11;
-    public static final SPARCFloatRegister F12;
-    public static final SPARCFloatRegister F13;
-    public static final SPARCFloatRegister F14;
-    public static final SPARCFloatRegister F15;
-    public static final SPARCFloatRegister F16;
-    public static final SPARCFloatRegister F17;
-    public static final SPARCFloatRegister F18;
-    public static final SPARCFloatRegister F19;
-    public static final SPARCFloatRegister F20;
-    public static final SPARCFloatRegister F21;
-    public static final SPARCFloatRegister F22;
-    public static final SPARCFloatRegister F23;
-    public static final SPARCFloatRegister F24;
-    public static final SPARCFloatRegister F25;
-    public static final SPARCFloatRegister F26;
-    public static final SPARCFloatRegister F27;
-    public static final SPARCFloatRegister F28;
-    public static final SPARCFloatRegister F29;
-    public static final SPARCFloatRegister F30;
-    public static final SPARCFloatRegister F31;
-    public static final SPARCFloatRegister F32;
-    public static final SPARCFloatRegister F34;
-    public static final SPARCFloatRegister F36;
-    public static final SPARCFloatRegister F38;
-    public static final SPARCFloatRegister F40;
-    public static final SPARCFloatRegister F42;
-    public static final SPARCFloatRegister F44;
-    public static final SPARCFloatRegister F46;
-    public static final SPARCFloatRegister F48;
-    public static final SPARCFloatRegister F50;
-    public static final SPARCFloatRegister F52;
-    public static final SPARCFloatRegister F54;
-    public static final SPARCFloatRegister F56;
-    public static final SPARCFloatRegister F58;
-    public static final SPARCFloatRegister F60;
-    public static final SPARCFloatRegister F62;
-    public static final int NUM_REGISTERS = 64;
-    private static final SPARCFloatRegister registers[];
-
-    static {
-        F0 = new SPARCFloatRegister(0);
-        F1 = new SPARCFloatRegister(1);
-        F2 = new SPARCFloatRegister(2);
-        F3 = new SPARCFloatRegister(3);
-        F4 = new SPARCFloatRegister(4);
-        F5 = new SPARCFloatRegister(5);
-        F6 = new SPARCFloatRegister(6);
-        F7 = new SPARCFloatRegister(7);
-        F8 = new SPARCFloatRegister(8);
-        F9 = new SPARCFloatRegister(9);
-        F10 = new SPARCFloatRegister(10);
-        F11 = new SPARCFloatRegister(11);
-        F12 = new SPARCFloatRegister(12);
-        F13 = new SPARCFloatRegister(13);
-        F14 = new SPARCFloatRegister(14);
-        F15 = new SPARCFloatRegister(15);
-        F16 = new SPARCFloatRegister(16);
-        F17 = new SPARCFloatRegister(17);
-        F18 = new SPARCFloatRegister(18);
-        F19 = new SPARCFloatRegister(19);
-        F20 = new SPARCFloatRegister(20);
-        F21 = new SPARCFloatRegister(21);
-        F22 = new SPARCFloatRegister(22);
-        F23 = new SPARCFloatRegister(23);
-        F24 = new SPARCFloatRegister(24);
-        F25 = new SPARCFloatRegister(25);
-        F26 = new SPARCFloatRegister(26);
-        F27 = new SPARCFloatRegister(27);
-        F28 = new SPARCFloatRegister(28);
-        F29 = new SPARCFloatRegister(29);
-        F30 = new SPARCFloatRegister(30);
-        F31 = new SPARCFloatRegister(31);
-        F32 = new SPARCFloatRegister(32);
-        F34 = new SPARCFloatRegister(34);
-        F36 = new SPARCFloatRegister(36);
-        F38 = new SPARCFloatRegister(38);
-        F40 = new SPARCFloatRegister(40);
-        F42 = new SPARCFloatRegister(42);
-        F44 = new SPARCFloatRegister(44);
-        F46 = new SPARCFloatRegister(46);
-        F48 = new SPARCFloatRegister(48);
-        F50 = new SPARCFloatRegister(50);
-        F52 = new SPARCFloatRegister(52);
-        F54 = new SPARCFloatRegister(54);
-        F56 = new SPARCFloatRegister(56);
-        F58 = new SPARCFloatRegister(58);
-        F60 = new SPARCFloatRegister(60);
-        F62 = new SPARCFloatRegister(62);
-        registers = (new SPARCFloatRegister[] {
-            F0, F2, F3, F4, F5, F6, F7, F8, F9, F10,
-            F11, F12, F13, F14, F15, F16, F17, F18, F19, F20,
-            F21, F22, F23, F24, F25, F26, F27, F28, F29, F30,
-            F31, F32, null, F34, null, F36, null, F38, null, F40,
-            null, F42, null, F44, null, F46, null, F48, null, F50,
-            null, F52, null, F54, null, F56, null, F58, null, F60,
-            null, F62, null
-        });
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFlushInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCFlushInstruction extends SPARCInstruction {
-    final protected SPARCRegisterIndirectAddress addr;
-    final String description;
-
-    public SPARCFlushInstruction(SPARCRegisterIndirectAddress addr) {
-        super("flush");
-        this.addr = addr;
-        description = initDescription();
-    }
-
-    private String initDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(addr.toString());
-        return buf.toString();
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return description;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCFormat3AInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public abstract class SPARCFormat3AInstruction extends SPARCInstruction {
-    final protected int opcode;
-    final protected SPARCRegister rs1;
-    final protected ImmediateOrRegister operand2;
-    final protected SPARCRegister rd;
-
-    public SPARCFormat3AInstruction(String name, int opcode, SPARCRegister rs1,
-                                    ImmediateOrRegister operand2, SPARCRegister rd) {
-        super(name);
-        this.opcode = opcode;
-        this.rs1 = rs1;
-        this.operand2 = operand2;
-        this.rd = rd;
-    }
-
-    protected String getOperand2String() {
-        StringBuffer buf = new StringBuffer();
-        if (operand2.isRegister()) {
-            buf.append(operand2.toString());
-        } else {
-            Number number = ((Immediate)operand2).getNumber();
-            buf.append("0x");
-            buf.append(Integer.toHexString(number.intValue()));
-        }
-        return buf.toString();
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(rs1.toString());
-        buf.append(comma);
-        buf.append(getOperand2String());
-        buf.append(comma);
-        buf.append(rd.toString());
-        return buf.toString();
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return getDescription();
-    }
-
-    public int getOpcode() {
-        return opcode;
-    }
-
-    public SPARCRegister getDestinationRegister() {
-        return rd;
-    }
-
-    public ImmediateOrRegister getOperand2() {
-        return operand2;
-    }
-
-    public SPARCRegister getSourceRegister1() {
-        return rs1;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCHelper.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCHelper implements CPUHelper {
-   public Disassembler createDisassembler(long startPc, byte[] code) {
-      return new SPARCV9Disassembler(startPc, code);
-   }
-
-   public Register getIntegerRegister(int num) {
-      return SPARCRegisters.getRegister(num);
-   }
-
-   public Register getFloatRegister(int num) {
-      return SPARCFloatRegisters.getRegister(num);
-   }
-
-   public Register getStackPointer() {
-      return SPARCRegisters.O7;
-   }
-
-   public Register getFramePointer() {
-      return SPARCRegisters.I7;
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCIllegalInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.SymbolFinder;
-
-public final class SPARCIllegalInstruction extends SPARCInstruction {
-    final private int instruction;
-    final private String description;
-
-    public SPARCIllegalInstruction(int instruction) {
-        super("illegal");
-        this.instruction = instruction;
-        description = "bad opcode - " + Integer.toHexString(instruction);
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return description;
-    }
-
-    public int getInstruction() {
-        return instruction;
-    }
-
-    public boolean isIllegal() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCIndirectCallInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCIndirectCallInstruction extends SPARCJmplInstruction
-    implements CallInstruction {
-
-    public SPARCIndirectCallInstruction(SPARCRegisterIndirectAddress addr, SPARCRegister rd) {
-        super("call", addr, rd);
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        // remove '[' & ']' from jmp address
-        String addrStr = addr.toString();
-        buf.append(addrStr.substring(1, addrStr.length() - 1));
-        return buf.toString();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public abstract class SPARCInstruction
-                      extends AbstractInstruction
-                      implements /* imports */ SPARCOpcodes {
-    public SPARCInstruction(String name) {
-        super(name);
-    }
-
-    public int getSize() {
-        return 4;
-    }
-
-    protected static String comma = ", ";
-    protected static String spaces = "\t";
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCInstructionFactory.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public interface SPARCInstructionFactory {
-    public SPARCInstruction newCallInstruction(PCRelativeAddress addr);
-
-    public SPARCInstruction newNoopInstruction();
-
-    public SPARCInstruction newSethiInstruction(int imm22, SPARCRegister rd);
-
-    public SPARCInstruction newUnimpInstruction(int const22);
-
-    public SPARCInstruction newBranchInstruction(String name, PCRelativeAddress addr, boolean isAnnuled, int conditionCode);
-
-    public SPARCInstruction newSpecialLoadInstruction(String name, int specialReg, int cregNum,
-                                      SPARCRegisterIndirectAddress addr);
-
-    public SPARCInstruction newSpecialStoreInstruction(String name, int specialReg, int cregNum,
-                                      SPARCRegisterIndirectAddress addr);
-
-    public SPARCInstruction newLoadInstruction(String name, int opcode,
-                                  SPARCRegisterIndirectAddress addr, SPARCRegister rd,
-                                  int dataType);
-
-    public SPARCInstruction newStoreInstruction(String name, int opcode,
-                                  SPARCRegisterIndirectAddress addr, SPARCRegister rd,
-                                  int dataType);
-
-    public SPARCInstruction newStbarInstruction();
-
-    public SPARCInstruction newReadInstruction(int specialReg, int asrRegNum, SPARCRegister rd);
-
-    public SPARCInstruction newWriteInstruction(int specialReg, int asrRegNum, SPARCRegister rs1,
-                                             ImmediateOrRegister operand2);
-
-    public SPARCInstruction newIllegalInstruction(int instruction);
-
-    public SPARCInstruction newIndirectCallInstruction(SPARCRegisterIndirectAddress addr,
-                                  SPARCRegister rd);
-
-    public SPARCInstruction newReturnInstruction(SPARCRegisterIndirectAddress addr,
-                                  SPARCRegister rd, boolean isLeaf);
-
-    public SPARCInstruction newJmplInstruction(SPARCRegisterIndirectAddress addr,
-                                  SPARCRegister rd);
-
-    public SPARCInstruction newFP2RegisterInstruction(String name, int opf, SPARCFloatRegister rs, SPARCFloatRegister rd);
-
-    public SPARCInstruction newFPMoveInstruction(String name, int opf, SPARCFloatRegister rs, SPARCFloatRegister rd);
-
-    public SPARCInstruction newFPArithmeticInstruction(String name, int opf, int rtlOperation,
-                                                     SPARCFloatRegister rs1, SPARCFloatRegister rs2,
-                                                     SPARCFloatRegister rd);
-
-    public SPARCInstruction newFlushInstruction(SPARCRegisterIndirectAddress addr);
-
-    public SPARCInstruction newSaveInstruction(SPARCRegister rs1, ImmediateOrRegister operand2, SPARCRegister rd);
-
-    public SPARCInstruction newRestoreInstruction(SPARCRegister rs1, ImmediateOrRegister operand2, SPARCRegister rd);
-
-    public SPARCInstruction newTrapInstruction(String name, int conditionCode);
-
-    public SPARCInstruction newRettInstruction(SPARCRegisterIndirectAddress addr);
-
-    public SPARCInstruction newArithmeticInstruction(String name, int opcode, int rtlOperation,
-                                                     SPARCRegister rs1, ImmediateOrRegister operand2,
-                                                     SPARCRegister rd);
-
-    public SPARCInstruction newLogicInstruction(String name, int opcode, int rtlOperation,
-                                                SPARCRegister rs1, ImmediateOrRegister operand2,
-                                                SPARCRegister rd);
-
-    public SPARCInstruction newMoveInstruction(String name, int opcode,
-                                               ImmediateOrRegister operand2,
-                                               SPARCRegister rd);
-
-    public SPARCInstruction newShiftInstruction(String name, int opcode, int rtlOperation,
-                                                     SPARCRegister rs1, ImmediateOrRegister operand2,
-                                                     SPARCRegister rd);
-
-    public SPARCInstruction newCoprocessorInstruction(int instruction, int cpopcode, int opc,
-                                                     int rs1Num, int rs2Num, int rdNum);
-    public SPARCInstruction newSwapInstruction(String name, SPARCRegisterIndirectAddress addr, SPARCRegister rd);
-    public SPARCInstruction newLdstubInstruction(String name, SPARCRegisterIndirectAddress addr, SPARCRegister rd);
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCInstructionFactoryImpl.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCInstructionFactoryImpl implements SPARCInstructionFactory {
-    public SPARCInstruction newCallInstruction(PCRelativeAddress addr) {
-        return new SPARCCallInstruction(addr);
-    }
-
-    public SPARCInstruction newNoopInstruction() {
-        return new SPARCNoopInstruction();
-    }
-
-    public SPARCInstruction newSethiInstruction(int imm22, SPARCRegister rd) {
-        return new SPARCSethiInstruction(imm22, rd);
-    }
-
-    public SPARCInstruction newUnimpInstruction(int const22) {
-        return new SPARCUnimpInstruction(const22);
-    }
-
-    public SPARCInstruction newBranchInstruction(String name, PCRelativeAddress addr, boolean isAnnuled, int conditionCode) {
-        return new SPARCBranchInstruction(name, addr, isAnnuled, conditionCode);
-    }
-
-    public SPARCInstruction newSpecialLoadInstruction(String name, int specialReg, int cregNum,
-                                      SPARCRegisterIndirectAddress addr) {
-        return new SPARCSpecialLoadInstruction(name, specialReg, cregNum, addr);
-    }
-
-
-    public SPARCInstruction newSpecialStoreInstruction(String name, int specialReg, int cregNum,
-                                      SPARCRegisterIndirectAddress addr) {
-        return new SPARCSpecialStoreInstruction(name, specialReg, cregNum, addr);
-    }
-
-    public SPARCInstruction newLoadInstruction(String name, int opcode,
-                                  SPARCRegisterIndirectAddress addr, SPARCRegister rd,
-                                  int dataType) {
-        return new SPARCLoadInstruction(name, opcode, addr, rd, dataType);
-    }
-
-    public SPARCInstruction newStoreInstruction(String name, int opcode,
-                                  SPARCRegisterIndirectAddress addr, SPARCRegister rd,
-                                  int dataType) {
-        return new SPARCStoreInstruction(name, opcode, addr, rd, dataType);
-    }
-
-    public SPARCInstruction newStbarInstruction() {
-        return new SPARCStbarInstruction();
-    }
-
-    public SPARCInstruction newReadInstruction(int specialReg, int asrRegNum, SPARCRegister rd) {
-        return new SPARCReadInstruction(specialReg, asrRegNum, rd);
-    }
-
-    public SPARCInstruction newWriteInstruction(int specialReg, int asrRegNum, SPARCRegister rs1,
-                                             ImmediateOrRegister operand2) {
-        return new SPARCWriteInstruction(specialReg, asrRegNum, rs1,operand2);
-    }
-
-    public SPARCInstruction newIllegalInstruction(int instruction) {
-        return new SPARCIllegalInstruction(instruction);
-    }
-
-
-    public SPARCInstruction newIndirectCallInstruction(SPARCRegisterIndirectAddress addr,
-                                  SPARCRegister rd) {
-        return new SPARCIndirectCallInstruction(addr, rd);
-    }
-
-    public SPARCInstruction newReturnInstruction(SPARCRegisterIndirectAddress addr,
-                                  SPARCRegister rd, boolean isLeaf) {
-        return new SPARCReturnInstruction(addr, rd, isLeaf);
-    }
-
-    public SPARCInstruction newJmplInstruction(SPARCRegisterIndirectAddress addr,
-                                  SPARCRegister rd) {
-        return new SPARCJmplInstruction(addr, rd);
-    }
-
-    public SPARCInstruction newFPArithmeticInstruction(String name, int opf, int rtlOperation,
-                                  SPARCFloatRegister rs1, SPARCFloatRegister rs2,
-                                  SPARCFloatRegister rd) {
-        return new SPARCFPArithmeticInstruction(name, opf, rtlOperation, rs1, rs2, rd);
-    }
-
-    public SPARCInstruction newFPMoveInstruction(String name, int opf, SPARCFloatRegister rs, SPARCFloatRegister rd) {
-        return new SPARCFPMoveInstruction(name, opf, rs, rd);
-    }
-
-    public SPARCInstruction newFP2RegisterInstruction(String name, int opf, SPARCFloatRegister rs, SPARCFloatRegister rd) {
-        return new SPARCFP2RegisterInstruction(name, opf, rs, rd);
-    }
-
-    public SPARCInstruction newFlushInstruction(SPARCRegisterIndirectAddress addr) {
-        return new SPARCFlushInstruction(addr);
-    }
-
-    public SPARCInstruction newSaveInstruction(SPARCRegister rs1, ImmediateOrRegister operand2, SPARCRegister rd) {
-        return new SPARCSaveInstruction(rs1, operand2, rd);
-    }
-
-    public SPARCInstruction newRestoreInstruction(SPARCRegister rs1, ImmediateOrRegister operand2, SPARCRegister rd) {
-        return new SPARCRestoreInstruction(rs1, operand2, rd);
-    }
-
-    public SPARCInstruction newTrapInstruction(String name, int conditionCode) {
-        return new SPARCTrapInstruction(name, conditionCode);
-    }
-
-    public SPARCInstruction newRettInstruction(SPARCRegisterIndirectAddress addr) {
-        return new SPARCRettInstruction(addr);
-    }
-
-    public SPARCInstruction newArithmeticInstruction(String name, int opcode, int rtlOperation,
-                                                     SPARCRegister rs1, ImmediateOrRegister operand2,
-                                                     SPARCRegister rd) {
-        return new SPARCArithmeticInstruction(name, opcode, rtlOperation, rs1, operand2, rd);
-    }
-
-    public SPARCInstruction newLogicInstruction(String name, int opcode, int rtlOperation,
-                                                     SPARCRegister rs1, ImmediateOrRegister operand2,
-                                                     SPARCRegister rd) {
-        return new SPARCLogicInstruction(name, opcode, rtlOperation, rs1, operand2, rd);
-    }
-
-    public SPARCInstruction newMoveInstruction(String name, int opcode,
-                                               ImmediateOrRegister operand2,
-                                               SPARCRegister rd) {
-        return new SPARCMoveInstruction(name, opcode, operand2, rd);
-    }
-
-    public SPARCInstruction newShiftInstruction(String name, int opcode, int rtlOperation,
-                                                     SPARCRegister rs1, ImmediateOrRegister operand2,
-                                                     SPARCRegister rd) {
-        return new SPARCShiftInstruction(name, opcode, rtlOperation, rs1, operand2, rd);
-    }
-
-    public SPARCInstruction newCoprocessorInstruction(int instruction, int cpopcode, int opcode,
-                                                     int rs1Num, int rs2Num, int rd) {
-        return new SPARCIllegalInstruction(instruction);
-    }
-
-    public SPARCInstruction newSwapInstruction(String name, SPARCRegisterIndirectAddress addr, SPARCRegister rd) {
-       return new SPARCSwapInstruction(name, addr, rd);
-    }
-
-    public SPARCInstruction newLdstubInstruction(String name, SPARCRegisterIndirectAddress addr, SPARCRegister rd) {
-       return new SPARCLdstubInstruction(name, addr, rd);
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCJmplInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCJmplInstruction extends SPARCInstruction
-    implements BranchInstruction {
-    final protected SPARCRegisterIndirectAddress addr;
-    final protected SPARCRegister rd;
-
-    protected SPARCJmplInstruction(String name, SPARCRegisterIndirectAddress addr, SPARCRegister rd) {
-        super(name);
-        this.addr = addr;
-        this.rd = rd;
-    }
-
-    public SPARCJmplInstruction(SPARCRegisterIndirectAddress addr, SPARCRegister rd) {
-        this("jmpl", addr, rd);
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        String addrStr = addr.toString();
-        // remove '[' & ']' from address
-        addrStr = addrStr.substring(1, addrStr.length() - 1);
-        if (rd == SPARCRegisters.G0) {
-            buf.append("jmp");
-            buf.append(spaces);
-            buf.append(addrStr);
-        } else {
-            buf.append(getName());
-            buf.append(spaces);
-            buf.append(addrStr);
-            buf.append(comma);
-            buf.append(rd.toString());
-        }
-
-        return buf.toString();
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return getDescription();
-    }
-
-    public Address getBranchDestination() {
-        return addr;
-    }
-
-    public SPARCRegister getReturnAddressRegister() {
-        return rd;
-    }
-
-    public boolean isAnnuledBranch() {
-        return false;
-    }
-
-    public boolean isBranch() {
-        return true;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCLdstubInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCLdstubInstruction extends SPARCAtomicLoadStoreInstruction {
-    public SPARCLdstubInstruction(String name, SPARCRegisterIndirectAddress addr, SPARCRegister rd) {
-        super(name, addr, rd);
-    }
-
-    public int getDataType() {
-        return RTLDT_UNSIGNED_BYTE;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCLoadInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCLoadInstruction extends SPARCMemoryInstruction
-    implements LoadInstruction {
-    final protected SPARCRegister register2; // used for double word load instructions
-    final protected Register[] loadDestinations;
-
-    public SPARCLoadInstruction(String name, int opcode, SPARCRegisterIndirectAddress address, SPARCRegister register, int dataType) {
-        super(name, opcode,address, register, dataType);
-        if (opcode == LDD || opcode == LDDA) {
-            int nextRegNum = (register.getNumber() + 1) % SPARCRegisters.NUM_REGISTERS;
-            register2 = SPARCRegisters.getRegister(nextRegNum);
-            loadDestinations = new Register[2];
-            loadDestinations[0] = register;
-            loadDestinations[1] = register2;
-        } else {
-            register2 = null;
-            loadDestinations = new Register[1];
-            loadDestinations[0] = register;
-        }
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(address.toString());
-        buf.append(comma);
-        buf.append(register.toString());
-        return buf.toString();
-    }
-
-    public Register[] getLoadDestinations() {
-        return loadDestinations;
-    }
-
-    public Address getLoadSource() {
-        return address;
-    }
-
-    public boolean isLoad() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCLogicInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCLogicInstruction extends SPARCFormat3AInstruction
-    implements LogicInstruction {
-    final private int operation;
-
-    public SPARCLogicInstruction(String name, int opcode, int operation, SPARCRegister rs1,
-                                 ImmediateOrRegister operand2, SPARCRegister rd) {
-        super(name, opcode, rs1, operand2, rd);
-        this.operation = operation;
-    }
-
-    protected String getDescription() {
-        SPARCRegister G0 = SPARCRegisters.G0;
-        if (opcode == ORcc && rd == G0 && rd == operand2) {
-            StringBuffer buf = new StringBuffer();
-            buf.append("tst");
-            buf.append(spaces);
-            buf.append(getOperand2String());
-            return buf.toString();
-        } else if (opcode == XNOR && G0 == operand2) {
-            StringBuffer buf = new StringBuffer();
-            buf.append("not");
-            buf.append(spaces);
-            buf.append(rs1.toString());
-            if (rs1 != rd) {
-                buf.append(comma);
-                buf.append(rd.toString());
-            }
-            return buf.toString();
-        } else if (opcode == ANDcc && rd == G0) {
-            StringBuffer buf = new StringBuffer();
-            buf.append("btst");
-            buf.append(spaces);
-            buf.append(getOperand2String());
-            buf.append(comma);
-            buf.append(rd.toString());
-            return buf.toString();
-        } else if (rs1 == rd) {
-            StringBuffer buf = new StringBuffer();
-            switch (opcode) {
-                case OR:
-                    buf.append("bset");
-                    break;
-                case ANDN:
-                    buf.append("bclr");
-                    break;
-                case XOR:
-                    buf.append("btog");
-                    break;
-                default:
-                    return super.getDescription();
-            }
-            buf.append(spaces);
-            buf.append(getOperand2String());
-            buf.append(comma);
-            buf.append(rd.toString());
-            return buf.toString();
-        } else {
-            return super.getDescription();
-        }
-    }
-
-    public Operand getLogicDestination() {
-        return getDestinationRegister();
-    }
-
-    public Operand[] getLogicSources() {
-        return (new Operand[] { rs1, operand2 });
-    }
-
-    public int getOperation() {
-        return operation;
-    }
-
-    public boolean isLogic() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCMemoryInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.MemoryInstruction;
-import sun.jvm.hotspot.asm.SymbolFinder;
-
-public abstract class SPARCMemoryInstruction extends SPARCInstruction
-    implements MemoryInstruction {
-    final protected SPARCRegisterIndirectAddress address;
-    final protected SPARCRegister register;
-    final protected int dataType;
-    final protected int opcode;
-
-    public SPARCMemoryInstruction(String name, int opcode, SPARCRegisterIndirectAddress address, SPARCRegister register, int dataType) {
-        super(name);
-        this.address = address;
-        this.register = register;
-        this.dataType = dataType;
-        this.opcode = opcode;
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(address.toString());
-        buf.append(comma);
-        buf.append(register.toString());
-        return buf.toString();
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return getDescription();
-    }
-
-    public int getDataType() {
-        return dataType;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-
-    public int getOpcode() {
-        return opcode;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCMoveInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCMoveInstruction extends SPARCFormat3AInstruction
-    implements MoveInstruction, RTLOperations {
-
-    public SPARCMoveInstruction(String name, int opcode, ImmediateOrRegister operand2, SPARCRegister rd) {
-        super(name, opcode, null, operand2, rd);
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        if (operand2 == SPARCRegisters.G0) {
-            buf.append("clr");
-            buf.append(spaces);
-            buf.append(rd.toString());
-        } else {
-            buf.append("mov");
-            buf.append(spaces);
-            buf.append(getOperand2String());
-            buf.append(comma);
-            buf.append(rd.toString());
-        }
-
-        return buf.toString();
-    }
-
-    public Register getMoveDestination() {
-        return getDestinationRegister();
-    }
-
-    public ImmediateOrRegister getMoveSource() {
-        return operand2;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-
-    public boolean isMove() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCNoopInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCNoopInstruction extends SPARCInstruction {
-    public SPARCNoopInstruction() {
-        super("nop");
-    }
-
-    public boolean isNoop() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCOpcodes.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,354 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-// Please refer to "The SPARC Architecture Manual - Version 8"
-
-public interface SPARCOpcodes {
-
-   // format type is coded in 2 bits - primary opcode - "op"
-   public static final int FORMAT_START_BIT = 30;
-   public static final int FORMAT_MASK = 3 << FORMAT_START_BIT;
-
-   // sparc instruction formats
-
-   // PC Relative CALL
-   public static final int FORMAT_1 = 1;
-
-   // Bicc, FBfcc, CBccc, SETHI
-   public static final int FORMAT_2 = 0;
-
-   // memory instructions
-   public static final int FORMAT_3 = 3;
-
-   // arithmetic, logical, shift and remaining
-   public static final int FORMAT_3A = 2;
-
-   // disp 30 - used in pc relative call
-   public static final int DISP_30_MASK = 0x3FFFFFFF;
-
-   // secondary opcode "op2" used in FORMAT_2 instructions - 3 bits.
-   public static final int OP_2_START_BIT = 22;
-   public static final int OP_2_MASK = 7 << OP_2_START_BIT;
-
-   // various "op2" masks
-   public static final int OP_2_UNIMP = 0;
-   public static final int OP_2_Bicc  = 2;
-   public static final int OP_2_SETHI = 4;
-   public static final int OP_2_FBfcc = 6;
-   public static final int OP_2_CBccc = 7;
-
-   // condition codes are encoded in 4 bits.
-   public static final int CONDITION_CODE_START_BIT = 25;
-   public static final int CONDITION_CODE_MASK = 0xF << CONDITION_CODE_START_BIT;
-
-   // branch condition codes
-   public static final int CONDITION_BN   = 0;
-   public static final int CONDITION_FBN  = CONDITION_BN;
-   public static final int CONDITION_CBN  = CONDITION_BN;
-   public static final int CONDITION_TN   = CONDITION_BN;
-
-   public static final int CONDITION_BE   = 1;
-   public static final int CONDITION_FBNE = CONDITION_BE;
-   public static final int CONDITION_CB123= CONDITION_BE;
-   public static final int CONDITION_TE   = CONDITION_BE;
-
-   public static final int CONDITION_BLE  = 2;
-   public static final int CONDITION_FBLG = CONDITION_BLE;
-   public static final int CONDITION_CB12 = CONDITION_BLE;
-   public static final int CONDITION_TLE  = CONDITION_BLE;
-
-   public static final int CONDITION_BL   = 3;
-   public static final int CONDITION_FBUL = CONDITION_BL;
-   public static final int CONDITION_CB13 = CONDITION_BL;
-   public static final int CONDITION_TL   = CONDITION_BL;
-
-   public static final int CONDITION_BLEU = 4;
-   public static final int CONDITION_FBL  = CONDITION_BLEU;
-   public static final int CONDITION_CB1  = CONDITION_BLEU;
-   public static final int CONDITION_TLEU = CONDITION_BLEU;
-
-   public static final int CONDITION_BCS  = 5;
-   public static final int CONDITION_FBUG = CONDITION_BCS;
-   public static final int CONDITION_CB23  = CONDITION_BCS;
-   public static final int CONDITION_TCS  = CONDITION_BCS;
-
-   public static final int CONDITION_BNEG = 6;
-   public static final int CONDITION_FBG  = CONDITION_BNEG;
-   public static final int CONDITION_CB2  = CONDITION_BNEG;
-   public static final int CONDITION_TNEG = CONDITION_BNEG;
-
-   public static final int CONDITION_BVS  = 7;
-   public static final int CONDITION_FBU  = CONDITION_BVS;
-   public static final int CONDITION_CB3  = CONDITION_BVS;
-   public static final int CONDITION_TVS  = CONDITION_BVS;
-
-   public static final int CONDITION_BA   = 8;
-   public static final int CONDITION_FBA  = CONDITION_BA;
-   public static final int CONDITION_CBA  = CONDITION_BA;
-   public static final int CONDITION_TA   = CONDITION_BA;
-
-   public static final int CONDITION_BNE  = 9;
-   public static final int CONDITION_FBE  = CONDITION_BNE;
-   public static final int CONDITION_CB0  = CONDITION_BNE;
-   public static final int CONDITION_TNE  = CONDITION_BNE;
-
-   public static final int CONDITION_BG   = 0xA;
-   public static final int CONDITION_FBUE = CONDITION_BG;
-   public static final int CONDITION_CB03 = CONDITION_BG;
-   public static final int CONDITION_TG   = CONDITION_BG;
-
-   public static final int CONDITION_BGE  = 0xB;
-   public static final int CONDITION_FBGE = CONDITION_BGE;
-   public static final int CONDITION_CB02 = CONDITION_BGE;
-   public static final int CONDITION_TGE  = CONDITION_BGE;
-
-   public static final int CONDITION_BGU  = 0xC;
-   public static final int CONDITION_FBUGE= CONDITION_BGU;
-   public static final int CONDITION_CB023= CONDITION_BGU;
-   public static final int CONDITION_TGU  = CONDITION_BGU;
-
-   public static final int CONDITION_BCC  = 0xD;
-   public static final int CONDITION_FBLE = CONDITION_BCC;
-   public static final int CONDITION_CB01 = CONDITION_BCC;
-   public static final int CONDITION_TCC  = CONDITION_BCC;
-
-   public static final int CONDITION_BPOS = 0xE;
-   public static final int CONDITION_FBULE= CONDITION_BPOS;
-   public static final int CONDITION_CB013= CONDITION_BPOS;
-   public static final int CONDITION_TPOS = CONDITION_BPOS;
-
-   public static final int CONDITION_BVC  = 0xF;
-   public static final int CONDITION_FBO  = CONDITION_BVC;
-   public static final int CONDITION_CB012= CONDITION_BVC;
-   public static final int CONDITION_TVC  = CONDITION_BVC;
-
-   // annul bit mask
-   public static final int ANNUL_MASK = 1 << 29;
-
-   // 22 bit displacement or immediate value - used in FORMAT_2 instructions.
-   public static final int DISP_22_MASK = 0x3FFFFF;
-   public static final int IMM_22_MASK  = DISP_22_MASK;
-
-   // second operand mask, called "i" bit
-   public static final int I_START_BIT = 13;
-   public static final int I_MASK = 1 << I_START_BIT;
-
-   // address space identifier - "asi" - 8 bits
-   public static final int ASI_START_BIT = 5;
-   public static final int ASI_MASK = 0xFF << ASI_START_BIT;
-
-   // signed immediate value 13 bits - "simm13"
-   public static final int SIMM_13_MASK = 0x1FFF;
-
-   // co-processor or floating point opcode field - "ocf/opf" - 9 bits
-   public static final int OPF_START_BIT = 5;
-   public static final int OPF_MASK = 0x1FF << OPF_START_BIT;
-   public static final int OPC_MASK = OPF_MASK;
-
-   // opcode part 3 - used in FORMAT_3 and FORMAT_3A instructions
-   // "op3" - 6 bits
-   public static final int OP_3_START_BIT = 19;
-   public static final int OP_3_MASK = 0x3F << OP_3_START_BIT;
-
-   // register masks
-   public static final int RD_START_BIT = 25;
-   public static final int RD_MASK  = 0x1F << RD_START_BIT; // "rd"
-   public static final int RS1_START_BIT = 14;
-   public static final int RS1_MASK = 0x1F << RS1_START_BIT; // "rs1"
-   public static final int RS2_MASK = 0x1F;       // "rs2"
-
-   // load/store instructions - op3 values - used with op=3 (FORMAT_3)
-   public static final int LD  = 0;
-   public static final int LDA = (1 << 4);
-   public static final int LDF = (2 << 4);
-   public static final int LDC = (3 << 4);
-
-   public static final int LDUB = 1;
-   public static final int LDUBA = (1 << 4) | 1;
-   public static final int LDFSR = (2 << 4) | 1;
-   public static final int LDCSR = (3 << 4) | 1;
-
-   public static final int LDUH  = 2;
-   public static final int LDUHA = (1 << 4) | 2;
-
-   public static final int LDD = 3;
-   public static final int LDDA = (1 << 4) | 3;
-   public static final int LDDF = (2 << 4) | 3;
-   public static final int LDDC = (3 << 4) | 3;
-
-   public static final int ST = 4;
-   public static final int STA = (1 << 4) | 4;
-   public static final int STF = (2 << 4) | 4;
-   public static final int STC = (3 << 4) | 4;
-
-   public static final int STB = 5;
-   public static final int STBA = (1 << 4) | 5;
-   public static final int STFSR = (2 << 4) | 5;
-   public static final int STCSR = (3 << 4) | 5;
-
-   public static final int STH = 6;
-   public static final int STHA = (1 << 4) | 6;
-   public static final int STDFQ = (2 << 4) | 6;
-   public static final int STDCQ = (3 << 4) | 6;
-
-   public static final int STD = 7;
-   public static final int STDA = (1 << 4) | 7;
-   public static final int STDF = (2 << 4) | 7;
-   public static final int STDC = (3 << 4) | 7;
-
-   public static final int LDSB = 9;
-   public static final int LDSBA = (1 << 4) | 9;
-
-   public static final int LDSH = 0xA;
-   public static final int LDSHA = (1 << 4) | 0xA;
-
-   public static final int LDSTUB = 0xD;
-   public static final int LDSTUBA = (1 << 4) | 0xD;
-
-   public static final int SWAP = 0xF;
-   public static final int SWAPA = (1 << 4) | 0xF;
-
-   // arithmetic, logic remaining - op3 with op=2 (FORMAT_3A)
-   public static final int ADD = 0;
-   public static final int ADDcc = (1 << 4);
-   public static final int TADDcc = (2 << 4);
-   public static final int WRASR  = (3 << 4);
-   public static final int WRY = WRASR;
-
-   public static final int AND = 1;
-   public static final int ANDcc = (1 << 4) | 1;
-   public static final int TSUBcc = (2 << 4) | 1;
-   public static final int WRPSR = (3 << 4) | 1;
-
-   public static final int OR = 2;
-   public static final int ORcc = (1 << 4) | 2;
-   public static final int TADDccTV = (2 << 4) | 2;
-   public static final int WRWIM = (3 << 4) | 2;
-
-   public static final int XOR = 3;
-   public static final int XORcc = (1 << 4) | 3;
-   public static final int TSUBccTV = (2 << 4) | 3;
-   public static final int WRTBR = (3 << 4) | 3;
-
-   public static final int SUB = 4;
-   public static final int SUBcc = (1 << 4) | 4;
-   public static final int MULScc = (2 << 4) | 4;
-   public static final int FPop1 = (3 << 4) | 4;
-
-   public static final int ANDN = 5;
-   public static final int ANDNcc = (1 << 4) | 5;
-   public static final int SLL = (2 << 4) | 5;
-   public static final int FPop2 = (3 << 4) | 5;
-
-   public static final int ORN = 6;
-   public static final int ORNcc = (1 << 4) | 6;
-   public static final int SRL = (2 << 4) | 6;
-   public static final int CPop1 = (3 << 4) | 6;
-
-   public static final int XNOR = 7;
-   public static final int XNORcc = (1 << 4) | 7;
-   public static final int SRA = (2 << 4) | 7;
-   public static final int CPop2 = (3 << 4) | 7;
-
-   public static final int ADDX = 8;
-   public static final int ADDXcc = (1 << 4) | 8;
-   public static final int RDASR = (2 << 4) | 8;
-   public static final int RDY = RDASR;
-   public static final int STBAR = RDASR;
-   public static final int JMPL = (3 << 4) | 8;
-
-   public static final int RDPSR = (2 << 4) | 9;
-   public static final int RETT = (3 << 4) | 9;
-
-   public static final int UMUL = 0xA;
-   public static final int UMULcc = (1 << 4) | 0xA;
-   public static final int RDWIM = (2 << 4) |  0xA;
-   public static final int Ticc  = (3 << 4) | 0xA;
-
-   public static final int SMUL = 0xB;
-   public static final int SMULcc = (1 << 4) | 0xB;
-   public static final int RDTBR = (2 << 4) | 0xB;
-   public static final int FLUSH = (3 << 4) | 0xB;
-
-   public static final int SUBX = 0xC;
-   public static final int SUBXcc = (1 << 4) | 0xC;
-   public static final int SAVE = (3 << 4) | 0xC;
-
-   public static final int RESTORE = (3 << 4) | 0xD;
-
-   public static final int UDIV = 0xE;
-   public static final int UDIVcc = (1 << 4) | 0xE;
-
-   public static final int SDIV = 0xF;
-   public static final int SDIVcc = (1 << 4) | 0xF;
-
-   // opf - 9 bits (op=2, op3=0x34=FPop1) - floating point arithmetic
-   public static final int FMOVs    = 0x01;
-   public static final int FNEGs    = 0x05;
-   public static final int FABSs    = 0x09;
-   public static final int FSQRTs   = 0x29;
-   public static final int FSQRTd   = 0x2A;
-   public static final int FSQRTq   = 0x2B;
-   public static final int FADDs    = 0x41;
-   public static final int FADDd    = 0x42;
-   public static final int FADDq    = 0x43;
-   public static final int FSUBs    = 0x45;
-   public static final int FSUBd    = 0x46;
-   public static final int FSUBq    = 0x47;
-   public static final int FMULs    = 0x49;
-   public static final int FMULd    = 0x4A;
-   public static final int FMULq    = 0x4B;
-   public static final int FDIVs    = 0x4D;
-   public static final int FDIVd    = 0x4E;
-   public static final int FDIVq    = 0x4F;
-   public static final int FsMULd   = 0x69;
-   public static final int FdMULq   = 0x6E;
-   public static final int FiTOs    = 0xC4;
-   public static final int FdTOs    = 0xC6;
-   public static final int FqTOs    = 0xC7;
-   public static final int FiTOd    = 0xC8;
-   public static final int FsTOd    = 0xC9;
-   public static final int FqTOd    = 0xCB;
-   public static final int FiTOq    = 0xCC;
-   public static final int FsTOq    = 0xCD;
-   public static final int FdTOq    = 0xCE;
-   public static final int FsTOi    = 0xD1;
-   public static final int FdTOi    = 0xD2;
-   public static final int FqTOi    = 0xD3;
-
-   // opf - 9 bits (op=2, op3=0x35=FPop2) - floating point comparisons
-   public static final int FCMPs    = 0x51;
-   public static final int FCMPd    = 0x52;
-   public static final int FCMPq    = 0x53;
-   public static final int FCMPEs   = 0x55;
-   public static final int FCMPEd   = 0x56;
-   public static final int FCMPEq   = 0x57;
-
-   // 5 bit shift count mask
-   public static final int SHIFT_COUNT_5_MASK = 0x1F;
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCReadInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.SymbolFinder;
-import sun.jvm.hotspot.utilities.Assert;
-
-public class SPARCReadInstruction extends SPARCSpecialRegisterInstruction {
-    final private int specialReg;
-    final private int asrRegNum;
-    final private SPARCRegister rd;
-
-    public SPARCReadInstruction(int specialReg, int asrRegNum, SPARCRegister rd) {
-        super("rd");
-        this.specialReg = specialReg;
-        this.asrRegNum = asrRegNum;
-        this.rd = rd;
-    }
-
-    public int getSpecialRegister() {
-        return specialReg;
-    }
-
-    public int getAncillaryRegister() {
-        if (Assert.ASSERTS_ENABLED)
-            Assert.that(specialReg == ASR, "not an ancillary register");
-        return asrRegNum;
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        if(specialReg == ASR)
-            buf.append("%asr" + asrRegNum);
-        else
-            buf.append(getSpecialRegisterName(specialReg));
-        buf.append(comma);
-        buf.append(rd.toString());
-        return buf.toString();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRegisterIndirectAddress.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.Address;
-import sun.jvm.hotspot.asm.BaseIndexScaleDispAddress;
-
-public class SPARCRegisterIndirectAddress extends BaseIndexScaleDispAddress {
-    protected int addressSpace = -1;
-
-    public SPARCRegisterIndirectAddress(SPARCRegister register, int offset) {
-        super(register, offset);
-    }
-
-    public SPARCRegisterIndirectAddress(SPARCRegister base, SPARCRegister index) {
-        super(base, index);
-    }
-
-    public int getAddressSpace() {
-        return addressSpace;
-    }
-
-    public void setAddressSpace(int addressSpace) {
-        this.addressSpace = addressSpace;
-    }
-
-    public String getAddressWithoutAsi() {
-        StringBuffer buf = new StringBuffer();
-        buf.append('[');
-        buf.append(getBase().toString());
-        sun.jvm.hotspot.asm.Register register = getIndex();
-        if (register != null) {
-            buf.append(" + ");
-            buf.append(register.toString());
-        } else {
-            long disp = getDisplacement();
-            if (disp < 0) {
-                buf.append(" - 0x");
-                disp = -disp;
-            } else {
-                buf.append(" + 0x");
-            }
-            buf.append(Long.toHexString(disp));
-        }
-        buf.append(']');
-        return buf.toString();
-    }
-
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getAddressWithoutAsi());
-        if(addressSpace != -1)
-            buf.append((new Integer(addressSpace)).toString());
-        return buf.toString();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRestoreInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCRestoreInstruction extends SPARCFormat3AInstruction {
-    final private boolean trivial;
-    public SPARCRestoreInstruction(SPARCRegister rs1, ImmediateOrRegister operand2, SPARCRegister rd) {
-        super("restore", RESTORE, rs1, operand2, rd);
-        SPARCRegister G0 = SPARCRegisters.G0;
-        trivial = (rs1 == G0 && operand2 == G0 && rd == G0);
-    }
-
-    public boolean isTrivial() {
-        return trivial;
-    }
-
-    protected String getDescription() {
-        return (trivial) ? getName() : super.getDescription();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCRettInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCRettInstruction extends SPARCInstruction
-    implements BranchInstruction {
-    final protected SPARCRegisterIndirectAddress addr;
-    final protected String description;
-
-    protected SPARCRettInstruction(String name, SPARCRegisterIndirectAddress addr) {
-        super(name);
-        this.addr = addr;
-        description = initDescription();
-    }
-
-    public SPARCRettInstruction(SPARCRegisterIndirectAddress addr) {
-        this("rett", addr);
-    }
-
-    private String initDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(addr.toString());
-        return buf.toString();
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return description;
-    }
-
-    public Address getBranchDestination() {
-        return addr;
-    }
-
-    public boolean isAnnuledBranch() {
-        return false;
-    }
-
-    public boolean isBranch() {
-        return true;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCReturnInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCReturnInstruction extends SPARCJmplInstruction
-    implements ReturnInstruction {
-
-    private final boolean leaf;
-
-    public SPARCReturnInstruction(SPARCRegisterIndirectAddress addr, SPARCRegister rd, boolean leaf) {
-        super(leaf? "retl" : "ret", addr, rd);
-        this.leaf = leaf;
-    }
-
-    public boolean isLeaf() {
-        return leaf;
-    }
-
-    protected String getDescription() {
-        return getName();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSaveInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCSaveInstruction extends SPARCFormat3AInstruction {
-    final private boolean trivial;
-    public SPARCSaveInstruction(SPARCRegister rs1, ImmediateOrRegister operand2, SPARCRegister rd) {
-        super("save", SAVE, rs1, operand2, rd);
-        SPARCRegister G0 = SPARCRegisters.G0;
-        trivial = (rs1 == G0 && operand2 == G0 && rd == G0);
-    }
-
-    public boolean isTrivial() {
-        return trivial;
-    }
-
-    protected String getOperand2String() {
-        StringBuffer buf = new StringBuffer();
-        if (operand2.isRegister()) {
-            buf.append(operand2.toString());
-        } else {
-            Number number = ((Immediate)operand2).getNumber();
-            int value = number.intValue();
-            if (value < 0) {
-                buf.append("-0x");
-                value = -value;
-            } else {
-                buf.append("0x");
-            }
-
-            buf.append(Integer.toHexString(value));
-        }
-        return buf.toString();
-    }
-
-    protected String getDescription() {
-        return (trivial) ? getName() : super.getDescription();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSethiInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCSethiInstruction extends SPARCInstruction
-    implements MoveInstruction {
-    final private SPARCRegister register;
-    final private ImmediateOrRegister value;
-    final private String description;
-
-    public SPARCSethiInstruction(int value, SPARCRegister register) {
-        super("sethi");
-        this.register = register;
-        value <<= 10;
-        this.value = new Immediate(new Integer(value));
-        description = initDescription(value);
-    }
-
-    private String initDescription(int val) {
-        if (val == 0 && register == SPARCRegisters.G0) {
-            return "nop";
-        } else {
-            StringBuffer buf = new StringBuffer();
-            buf.append(getName());
-            buf.append(spaces);
-            buf.append("%hi(0x");
-            buf.append(Integer.toHexString(val));
-            buf.append(')');
-            buf.append(comma);
-            buf.append(register.toString());
-            return buf.toString();
-        }
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return description;
-    }
-
-    public Register getMoveDestination() {
-        return register;
-    }
-
-    public ImmediateOrRegister getMoveSource() {
-        return value;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCShiftInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCShiftInstruction extends SPARCFormat3AInstruction
-    implements ShiftInstruction {
-    final private int operation;
-
-    public SPARCShiftInstruction(String name, int opcode, int operation, SPARCRegister rs1,
-                                 ImmediateOrRegister operand2, SPARCRegister rd) {
-        super(name, opcode, rs1, operand2, rd);
-        this.operation = operation;
-    }
-
-    public int getOperation() {
-        return operation;
-    }
-
-    public Operand getShiftDestination() {
-        return getDestinationRegister();
-    }
-
-    public Operand getShiftLength() {
-        return operand2;
-    }
-
-    public Operand getShiftSource() {
-        return rs1;
-    }
-
-    public boolean isShift() {
-        return true;
-    }
-
-    protected String getOperand2String() {
-        return operand2.toString();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSpecialLoadInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-import sun.jvm.hotspot.utilities.Assert;
-
-public class SPARCSpecialLoadInstruction
-                        extends SPARCSpecialRegisterInstruction
-                        implements /* imports */ SPARCSpecialRegisters {
-    final private int specialReg;
-    final private int cregNum;
-    final private SPARCRegisterIndirectAddress addr;
-
-    public SPARCSpecialLoadInstruction(String name, int specialReg, int cregNum,
-                                             SPARCRegisterIndirectAddress addr) {
-        super(name);
-        this.specialReg = specialReg;
-        this.cregNum = cregNum;
-        this.addr = addr;
-    }
-
-    public SPARCSpecialLoadInstruction(String name, int specialReg, SPARCRegisterIndirectAddress addr) {
-        this(name, specialReg, -1, addr);
-    }
-
-    public int getSpecialRegister() {
-        return specialReg;
-    }
-
-    public int getCoprocessorRegister() {
-        if (Assert.ASSERTS_ENABLED)
-            Assert.that(specialReg == CREG, "not a coprocesssor register");
-        return cregNum;
-    }
-
-    public Address getSource() {
-        return addr;
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(addr);
-        buf.append(comma);
-        if (specialReg == CREG) {
-           buf.append("creg" + cregNum);
-        } else {
-           buf.append(getSpecialRegisterName(specialReg));
-        }
-        return buf.toString();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSpecialRegisterInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public abstract class SPARCSpecialRegisterInstruction
-                       extends SPARCInstruction
-                       implements /* import */ SPARCSpecialRegisters {
-    protected SPARCSpecialRegisterInstruction(String name) {
-        super(name);
-    }
-
-    protected abstract String getDescription();
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return getDescription();
-    }
-
-    protected static String[] specialRegNames = new String[] {
-       "%y",
-       "%psr",
-       "%wim",
-       "%tbr",
-       "%asr",
-       "%fsr",
-       "%csr",
-       "%fq",
-       "%cq"
-    };
-
-    protected static String getSpecialRegisterName(int index) {
-       return specialRegNames[index];
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSpecialRegisters.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-public interface SPARCSpecialRegisters {
-    public static final int Y    = 0;
-    public static final int PSR  = 1;
-    public static final int WIM  = 2;
-    public static final int TBR  = 3;
-    public static final int ASR  = 4;
-    public static final int FSR  = 5;
-    public static final int CSR  = 6;
-    public static final int FQ   = 7;
-    public static final int CQ   = 8;
-    public static final int CREG = 9; // co-processor reg
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSpecialStoreInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-import sun.jvm.hotspot.utilities.Assert;
-
-public class SPARCSpecialStoreInstruction
-                        extends SPARCSpecialRegisterInstruction
-                        implements /* imports */ SPARCSpecialRegisters {
-    final private int specialReg;
-    final private int cregNum;
-    final private SPARCRegisterIndirectAddress addr;
-
-    public SPARCSpecialStoreInstruction(String name, int specialReg, int cregNum,
-                                             SPARCRegisterIndirectAddress addr) {
-        super(name);
-        this.specialReg = specialReg;
-        this.addr = addr;
-        this.cregNum = cregNum;
-    }
-
-    public SPARCSpecialStoreInstruction(String name, int specialReg,
-                                             SPARCRegisterIndirectAddress addr) {
-        this(name, specialReg, -1, addr);
-    }
-
-    public int getSpecialRegister() {
-        return specialReg;
-    }
-
-    public int getCoprocessorRegister() {
-        if (Assert.ASSERTS_ENABLED)
-            Assert.that(specialReg == CREG, "not a special register");
-        return cregNum;
-    }
-
-    public Address getDestination() {
-        return addr;
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer(getName());
-        buf.append(spaces);
-        if (specialReg == CREG) {
-            buf.append("creg" + cregNum);
-        } else {
-            buf.append(getSpecialRegisterName(specialReg));
-        }
-        buf.append(comma);
-        buf.append(addr.toString());
-        return buf.toString();
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCStbarInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.SymbolFinder;
-
-public class SPARCStbarInstruction extends SPARCInstruction {
-    public SPARCStbarInstruction() {
-        super("stbar");
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCStoreInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCStoreInstruction extends SPARCMemoryInstruction
-    implements StoreInstruction {
-    final protected SPARCRegister register2; // used by double word store instructions
-    final protected Register[] storeSources;
-
-    public SPARCStoreInstruction(String name, int opcode, SPARCRegisterIndirectAddress address, SPARCRegister register, int dataType) {
-        super(name, opcode, address, register, dataType);
-        if (opcode == STD || opcode == STDA) {
-            storeSources = new Register[2];
-            storeSources[0] = register;
-            int nextRegNum = (register.getNumber() + 1) % SPARCRegisters.NUM_REGISTERS;
-            register2 = SPARCRegisters.getRegister(nextRegNum);
-            storeSources[1] = register2;
-        } else {
-            storeSources = new Register[1];
-            storeSources[0] = register;
-            register2 = null;
-        }
-    }
-
-    private String defaultInitDescription(StringBuffer buf) {
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append(register.toString());
-        buf.append(comma);
-        buf.append(address.toString());
-        return buf.toString();
-    }
-
-    protected String getDescription() {
-        StringBuffer buf = new StringBuffer();
-        if (register == SPARCRegisters.G0) {
-            switch (opcode) {
-                case ST:
-                    buf.append("clr");
-                    break;
-                case STH:
-                    buf.append("clrh");
-                    break;
-                case STB:
-                    buf.append("clrb");
-                    break;
-                default:
-                    return defaultInitDescription(buf);
-            }
-            buf.append(spaces);
-            buf.append(address.toString());
-            return buf.toString();
-        } else {
-            return defaultInitDescription(buf);
-        }
-    }
-
-    public int getDataType() {
-        return dataType;
-    }
-
-    public Address getStoreDestination() {
-        return address;
-    }
-
-    public Register[] getStoreSources() {
-        return storeSources;
-    }
-
-    public boolean isStore() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCSwapInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCSwapInstruction extends SPARCAtomicLoadStoreInstruction {
-    public SPARCSwapInstruction(String name, SPARCRegisterIndirectAddress addr, SPARCRegister rd) {
-        super(name, addr, rd);
-    }
-
-    public int getDataType() {
-        return RTLDT_UNSIGNED_WORD;
-    }
-
-    public boolean isConditional() {
-        return false;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCTrapInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCTrapInstruction extends SPARCInstruction
-    implements BranchInstruction {
-    final protected int conditionCode;
-
-    public SPARCTrapInstruction(String name, int conditionCode) {
-        super(name);
-        this.conditionCode = conditionCode;
-    }
-
-    public Address getBranchDestination() {
-        return null;
-    }
-
-    public int getConditionCode() {
-        return conditionCode;
-    }
-
-    public boolean isConditional() {
-        return conditionCode != CONDITION_TN && conditionCode != CONDITION_TA;
-    }
-
-    public boolean isTrap() {
-        return true;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCUnimpInstruction.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-
-public class SPARCUnimpInstruction extends SPARCInstruction {
-    final private String description;
-    final private int const22;
-
-    protected SPARCUnimpInstruction(String name, int const22) {
-        super(name);
-        this.const22 = const22;
-        description = initDescription();
-    }
-
-    public SPARCUnimpInstruction(int const22) {
-        this("unimp", const22);
-    }
-
-    public int getConst22() {
-        return const22;
-    }
-
-    public boolean isIllegal() {
-        return true;
-    }
-
-    private String initDescription() {
-        StringBuffer buf = new StringBuffer();
-        buf.append(getName());
-        buf.append(spaces);
-        buf.append("0x");
-        buf.append(Integer.toHexString(const22));
-        return buf.toString();
-    }
-
-    public String asString(long currentPc, SymbolFinder symFinder) {
-        return description;
-    }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/asm/sparc/SPARCV8Disassembler.java	Thu Sep 20 03:49:15 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.asm.sparc;
-
-import sun.jvm.hotspot.asm.*;
-import java.io.*;
-import java.util.*;
-
-// Please refer to "The SPARC Architecture Manual - Version 8"
-
-public class SPARCV8Disassembler extends SPARCDisassembler {
-
-    public SPARCV8Disassembler(long startPc, byte[] code, SPARCInstructionFactory factory) {
-        super(startPc, code, factory);
-    }
-
-    public SPARCV8Disassembler(long startPc, byte[] code) {
-        this(startPc, code, new SPARCInstructionFactoryImpl());
-    }
-
-    // decoders for format 2 instructions
-    private static InstructionDecoder format2Decoders[] = {
-        new UnimpDecoder(),
-        illegalDecoder,
-        new IntegerBranchDecoder(),
-        illegalDecoder,
-        new SethiDecoder(),
-        illegalDecoder,
-        new FloatBranchDecoder(),
-        new CoprocessorBranchDecoder()
-    };
-
-    protected InstructionDecoder getFormat2Decoder(int op2) {
-        return format2Decoders[op2];
-    }
-
-    // op3 decoder table for op=3 (FORMAT_3) instructions - (memory instructions)
-    // Appendix F - Opcodes and Condition Codes - Page 229 - Table F-4
-
-    private static final InstructionDecoder format3Decoders[][] = {
-        {
-          new LoadDecoder(LD, "ld", RTLDT_UNSIGNED_WORD), new AlternateSpaceLoadDecoder(LDA, "lda", RTLDT_UNSIGNED_WORD),
-          new LoadDecoder(LDF,"ld", RTLDT_FL_SINGLE),     new SpecialLoadDecoder(LDC,"ld", SPARCSpecialRegisters.CREG)
-        },
-        {
-          new LoadDecoder(LDUB, "ldub", RTLDT_UNSIGNED_BYTE),   new AlternateSpaceLoadDecoder(LDUBA, "lduba", RTLDT_UNSIGNED_BYTE),
-          new SpecialLoadDecoder(LDFSR, "ld", SPARCSpecialRegisters.FSR), new SpecialLoadDecoder(LDCSR, "ld", SPARCSpecialRegisters.CSR)
-        },
-        {
-          new LoadDecoder(LDUH, "lduh", RTLDT_UNSIGNED_HALF),  new AlternateSpaceLoadDecoder(LDUHA, "lduha", RTLDT_UNSIGNED_HALF),
-          illegalDecoder, illegalDecoder
-        },
-        {
-          new LoadDecoder(LDD, "ldd", RTLDT_UNSIGNED_DWORD), new AlternateSpaceLoadDecoder(LDDA, "ldda", RTLDT_UNSIGNED_DWORD),
-          new LoadDecoder(LDDF, "ldd", RTLDT_FL_DOUBLE),  new SpecialLoadDecoder(LDDC, "ldd", SPARCSpecialRegisters.CREG)
-        },
-        {
-          new StoreDecoder(ST, "st", RTLDT_UNSIGNED_WORD), new AlternateSpaceStoreDecoder(STA, "sta", RTLDT_UNSIGNED_WORD),
-          new StoreDecoder(STF, "st", RTLDT_FL_SINGLE),   new SpecialStoreDecoder(STC, "st", SPARCSpecialRegisters.CREG)
-        },
-        {
-          new StoreDecoder(STB, "stb", RTLDT_UNSIGNED_BYTE), new AlternateSpaceStoreDecoder(STBA, "stba", RTLDT_UNSIGNED_BYTE),
-          new SpecialStoreDecoder(STFSR, "st", SPARCSpecialRegisters.FSR), new SpecialStoreDecoder(STCSR, "st", SPARCSpecialRegisters.CSR),
-        },
-        {
-          new StoreDecoder(STH, "sth", RTLDT_UNSIGNED_HALF), new AlternateSpaceStoreDecoder(STHA, "stha", RTLDT_UNSIGNED_HALF),
-          new SpecialStoreDecoder(STDFQ, "std", SPARCSpecialRegisters.FQ), new SpecialStoreDecoder(STDCQ, "std", SPARCSpecialRegisters.CQ),
-        },
-        {
-          new StoreDecoder(STD, "std", RTLDT_UNSIGNED_DWORD),  new AlternateSpaceStoreDecoder(STDA, "stda", RTLDT_UNSIGNED_DWORD),
-          new StoreDecoder(STDF, "std", RTLDT_FL_DOUBLE),  new SpecialStoreDecoder(STDC, "std", SPARCSpecialRegisters.CREG)
-        },
-        {
-          illegalDecoder, illegalDecoder,
-          illegalDecoder, illegalDecoder
-        },
-        {
-          new LoadDecoder(LDSB, "ldsb", RTLDT_SIGNED_BYTE), new AlternateSpaceLoadDecoder(LDSBA, "ldsba", RTLDT_UNSIGNED_BYTE),
-          illegalDecoder, illegalDecoder
-        },
-        {
-          new LoadDecoder(LDSH, "ldsh", RTLDT_SIGNED_HALF), new AlternateSpaceLoadDecoder(LDSHA, "ldsha", RTLDT_UNSIGNED_HALF),