< prev index next >

src/share/vm/asm/assembler.hpp

Print this page




  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
< prev index next >