< prev index next >

src/hotspot/cpu/arm/macroAssembler_arm.hpp


340   void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}                                            
341   void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line) {}                                             
342 
343 #define verify_oop(reg) _verify_oop(reg, "broken oop " #reg, __FILE__, __LINE__)                                                     
344 #define verify_oop_addr(addr) _verify_oop_addr(addr, "broken oop ", __FILE__, __LINE__)                                              
345 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)                                    
346 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)                                       
347 
348   void null_check(Register reg, Register tmp, int offset = -1);                                                                      
349   inline void null_check(Register reg) { null_check(reg, noreg, -1); } // for C1 lir_null_check                                      
350 
351   // Puts address of allocated object into register `obj` and end of allocated object into register `obj_end`.                       
352   void eden_allocate(Register obj, Register obj_end, Register tmp1, Register tmp2,                                                   
353                      RegisterOrConstant size_expression, Label& slow_case);                                                          
354   void tlab_allocate(Register obj, Register obj_end, Register tmp1,                                                                  
355                      RegisterOrConstant size_expression, Label& slow_case);                                                          
356 
357   void zero_memory(Register start, Register end, Register tmp);                                                                      
358 
359   static bool needs_explicit_null_check(intptr_t offset);                                                                            
                                                                                                                                     
360 
361   void arm_stack_overflow_check(int frame_size_in_bytes, Register tmp);                                                              
362   void arm_stack_overflow_check(Register Rsize, Register tmp);                                                                       
363 
364   void bang_stack_with_offset(int offset) {                                                                                          
365     ShouldNotReachHere();                                                                                                            
366   }                                                                                                                                  
367 
368   // Biased locking support                                                                                                          
369   // lock_reg and obj_reg must be loaded up with the appropriate values.                                                             
370   // swap_reg must be supplied.                                                                                                      
371   // tmp_reg must be supplied.                                                                                                       
372   // Optional slow case is for implementations (interpreter and C1) which branch to                                                  
373   // slow case directly. If slow_case is NULL, then leaves condition                                                                 
374   // codes set (for C2's Fast_Lock node) and jumps to done label.                                                                    
375   // Falls through for the fast locking attempt.                                                                                     
376   // Returns offset of first potentially-faulting instruction for null                                                               
377   // check info (currently consumed only by C1). If                                                                                  
378   // swap_reg_contains_mark is true then returns -1 as it is assumed                                                                 

340   void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
341   void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line) {}
342 
343 #define verify_oop(reg) _verify_oop(reg, "broken oop " #reg, __FILE__, __LINE__)
344 #define verify_oop_addr(addr) _verify_oop_addr(addr, "broken oop ", __FILE__, __LINE__)
345 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
346 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
347 
348   void null_check(Register reg, Register tmp, int offset = -1);
349   inline void null_check(Register reg) { null_check(reg, noreg, -1); } // for C1 lir_null_check
350 
351   // Puts address of allocated object into register `obj` and end of allocated object into register `obj_end`.
352   void eden_allocate(Register obj, Register obj_end, Register tmp1, Register tmp2,
353                      RegisterOrConstant size_expression, Label& slow_case);
354   void tlab_allocate(Register obj, Register obj_end, Register tmp1,
355                      RegisterOrConstant size_expression, Label& slow_case);
356 
357   void zero_memory(Register start, Register end, Register tmp);
358 
359   static bool needs_explicit_null_check(intptr_t offset);
360   static bool uses_implicit_null_check(void* address);
361 
362   void arm_stack_overflow_check(int frame_size_in_bytes, Register tmp);
363   void arm_stack_overflow_check(Register Rsize, Register tmp);
364 
365   void bang_stack_with_offset(int offset) {
366     ShouldNotReachHere();
367   }
368 
369   // Biased locking support
370   // lock_reg and obj_reg must be loaded up with the appropriate values.
371   // swap_reg must be supplied.
372   // tmp_reg must be supplied.
373   // Optional slow case is for implementations (interpreter and C1) which branch to
374   // slow case directly. If slow_case is NULL, then leaves condition
375   // codes set (for C2's Fast_Lock node) and jumps to done label.
376   // Falls through for the fast locking attempt.
377   // Returns offset of first potentially-faulting instruction for null
378   // check info (currently consumed only by C1). If
379   // swap_reg_contains_mark is true then returns -1 as it is assumed

1077 };                                                                                                                                   
1078 
1079 
1080 // The purpose of this class is to build several code fragments of the same size                                                     
1081 // in order to allow fast table branch.                                                                                              
1082 
1083 class FixedSizeCodeBlock {                                                                                                           
1084 public:                                                                                                                              
1085   FixedSizeCodeBlock(MacroAssembler* masm, int size_in_instrs, bool enabled);                                                        
1086   ~FixedSizeCodeBlock();                                                                                                             
1087 
1088 private:                                                                                                                             
1089   MacroAssembler* _masm;                                                                                                             
1090   address _start;                                                                                                                    
1091   int _size_in_instrs;                                                                                                               
1092   bool _enabled;                                                                                                                     
1093 };                                                                                                                                   
1094 
1095 
1096 #endif // CPU_ARM_VM_MACROASSEMBLER_ARM_HPP                                                                                          
1097                                                                                                                                      

1078 };
1079 
1080 
1081 // The purpose of this class is to build several code fragments of the same size
1082 // in order to allow fast table branch.
1083 
1084 class FixedSizeCodeBlock {
1085 public:
1086   FixedSizeCodeBlock(MacroAssembler* masm, int size_in_instrs, bool enabled);
1087   ~FixedSizeCodeBlock();
1088 
1089 private:
1090   MacroAssembler* _masm;
1091   address _start;
1092   int _size_in_instrs;
1093   bool _enabled;
1094 };
1095 
1096 
1097 #endif // CPU_ARM_VM_MACROASSEMBLER_ARM_HPP

< prev index next >