36 #ifdef TARGET_ARCH_x86 37 # include "register_x86.hpp" 38 # include "vm_version_x86.hpp" 39 #endif 40 #ifdef TARGET_ARCH_sparc 41 # include "register_sparc.hpp" 42 # include "vm_version_sparc.hpp" 43 #endif 44 #ifdef TARGET_ARCH_zero 45 # include "register_zero.hpp" 46 # include "vm_version_zero.hpp" 47 #endif 48 #ifdef TARGET_ARCH_arm 49 # include "register_arm.hpp" 50 # include "vm_version_arm.hpp" 51 #endif 52 #ifdef TARGET_ARCH_ppc 53 # include "register_ppc.hpp" 54 # include "vm_version_ppc.hpp" 55 #endif 56 57 // This file contains platform-independent assembler declarations. 58 59 class MacroAssembler; 60 class AbstractAssembler; 61 class Label; 62 63 /** 64 * Labels represent destinations for control transfer instructions. Such 65 * instructions can accept a Label as their target argument. A Label is 66 * bound to the current location in the code stream by calling the 67 * MacroAssembler's 'bind' method, which in turn calls the Label's 'bind' 68 * method. A Label may be referenced by an instruction before it's bound 69 * (i.e., 'forward referenced'). 'bind' stores the current code offset 70 * in the Label object. 71 * 72 * If an instruction references a bound Label, the offset field(s) within 73 * the instruction are immediately filled in based on the Label's code 74 * offset. If an instruction references an unbound label, that 75 * instruction is put on a list of instructions that must be patched 430 431 // Bang stack to trigger StackOverflowError at a safe location 432 // implementation delegates to machine-specific bang_stack_with_offset 433 void generate_stack_overflow_check( int frame_size_in_bytes ); 434 virtual void bang_stack_with_offset(int offset) = 0; 435 436 437 /** 438 * A platform-dependent method to patch a jump instruction that refers 439 * to this label. 440 * 441 * @param branch the location of the instruction to patch 442 * @param masm the assembler which generated the branch 443 */ 444 void pd_patch_instruction(address branch, address target); 445 446 }; 447 448 #ifdef TARGET_ARCH_x86 449 # include "assembler_x86.hpp" 450 #endif 451 #ifdef TARGET_ARCH_sparc 452 # include "assembler_sparc.hpp" 453 #endif 454 #ifdef TARGET_ARCH_zero 455 # include "assembler_zero.hpp" 456 #endif 457 #ifdef TARGET_ARCH_arm 458 # include "assembler_arm.hpp" 459 #endif 460 #ifdef TARGET_ARCH_ppc 461 # include "assembler_ppc.hpp" 462 #endif 463 464 465 #endif // SHARE_VM_ASM_ASSEMBLER_HPP | 36 #ifdef TARGET_ARCH_x86 37 # include "register_x86.hpp" 38 # include "vm_version_x86.hpp" 39 #endif 40 #ifdef TARGET_ARCH_sparc 41 # include "register_sparc.hpp" 42 # include "vm_version_sparc.hpp" 43 #endif 44 #ifdef TARGET_ARCH_zero 45 # include "register_zero.hpp" 46 # include "vm_version_zero.hpp" 47 #endif 48 #ifdef TARGET_ARCH_arm 49 # include "register_arm.hpp" 50 # include "vm_version_arm.hpp" 51 #endif 52 #ifdef TARGET_ARCH_ppc 53 # include "register_ppc.hpp" 54 # include "vm_version_ppc.hpp" 55 #endif 56 #ifdef TARGET_ARCH_aarch64 57 # include "register_aarch64.hpp" 58 # include "vm_version_aarch64.hpp" 59 #endif 60 61 // This file contains platform-independent assembler declarations. 62 63 class MacroAssembler; 64 class AbstractAssembler; 65 class Label; 66 67 /** 68 * Labels represent destinations for control transfer instructions. Such 69 * instructions can accept a Label as their target argument. A Label is 70 * bound to the current location in the code stream by calling the 71 * MacroAssembler's 'bind' method, which in turn calls the Label's 'bind' 72 * method. A Label may be referenced by an instruction before it's bound 73 * (i.e., 'forward referenced'). 'bind' stores the current code offset 74 * in the Label object. 75 * 76 * If an instruction references a bound Label, the offset field(s) within 77 * the instruction are immediately filled in based on the Label's code 78 * offset. If an instruction references an unbound label, that 79 * instruction is put on a list of instructions that must be patched 434 435 // Bang stack to trigger StackOverflowError at a safe location 436 // implementation delegates to machine-specific bang_stack_with_offset 437 void generate_stack_overflow_check( int frame_size_in_bytes ); 438 virtual void bang_stack_with_offset(int offset) = 0; 439 440 441 /** 442 * A platform-dependent method to patch a jump instruction that refers 443 * to this label. 444 * 445 * @param branch the location of the instruction to patch 446 * @param masm the assembler which generated the branch 447 */ 448 void pd_patch_instruction(address branch, address target); 449 450 }; 451 452 #ifdef TARGET_ARCH_x86 453 # include "assembler_x86.hpp" 454 #endif 455 #ifdef TARGET_ARCH_aarch64 456 # include "assembler_aarch64.hpp" 457 #endif 458 #ifdef TARGET_ARCH_sparc 459 # include "assembler_sparc.hpp" 460 #endif 461 #ifdef TARGET_ARCH_zero 462 # include "assembler_zero.hpp" 463 #endif 464 #ifdef TARGET_ARCH_arm 465 # include "assembler_arm.hpp" 466 #endif 467 #ifdef TARGET_ARCH_ppc 468 # include "assembler_ppc.hpp" 469 #endif 470 471 472 #endif // SHARE_VM_ASM_ASSEMBLER_HPP |