303 * Returns true if this method has a {@code ForceInline} annotation. 304 * 305 * @return true if ForceInline annotation present, false otherwise 306 */ 307 public boolean isForceInline() { 308 return (getFlags() & config().methodFlagsForceInline) != 0; 309 } 310 311 /** 312 * Returns true if this method has a {@code ReservedStackAccess} annotation. 313 * 314 * @return true if ReservedStackAccess annotation present, false otherwise 315 */ 316 public boolean hasReservedStackAccess() { 317 return (getFlags() & config().methodFlagsReservedStackAccess) != 0; 318 } 319 320 /** 321 * Sets flags on {@code method} indicating that it should never be inlined or compiled by the VM. 322 */ 323 public void setNotInlineableOrCompileable() { 324 compilerToVM().setNotInlineableOrCompileable(this); 325 } 326 327 /** 328 * Returns true if this method is one of the special methods that is ignored by security stack 329 * walks. 330 * 331 * @return true if special method ignored by security stack walks, false otherwise 332 */ 333 public boolean ignoredBySecurityStackWalk() { 334 return compilerToVM().methodIsIgnoredBySecurityStackWalk(this); 335 } 336 337 @Override 338 public boolean isClassInitializer() { 339 if (isStatic()) { 340 final int nameIndex = UNSAFE.getChar(getConstMethod() + config().constMethodNameIndexOffset); 341 long nameSymbol = constantPool.getEntryAt(nameIndex); 342 long clinitSymbol = config().symbolClinit; 343 return nameSymbol == clinitSymbol; 344 } | 303 * Returns true if this method has a {@code ForceInline} annotation. 304 * 305 * @return true if ForceInline annotation present, false otherwise 306 */ 307 public boolean isForceInline() { 308 return (getFlags() & config().methodFlagsForceInline) != 0; 309 } 310 311 /** 312 * Returns true if this method has a {@code ReservedStackAccess} annotation. 313 * 314 * @return true if ReservedStackAccess annotation present, false otherwise 315 */ 316 public boolean hasReservedStackAccess() { 317 return (getFlags() & config().methodFlagsReservedStackAccess) != 0; 318 } 319 320 /** 321 * Sets flags on {@code method} indicating that it should never be inlined or compiled by the VM. 322 */ 323 public void setNotInlinableOrCompilable() { 324 compilerToVM().setNotInlinableOrCompilable(this); 325 } 326 327 /** 328 * Returns true if this method is one of the special methods that is ignored by security stack 329 * walks. 330 * 331 * @return true if special method ignored by security stack walks, false otherwise 332 */ 333 public boolean ignoredBySecurityStackWalk() { 334 return compilerToVM().methodIsIgnoredBySecurityStackWalk(this); 335 } 336 337 @Override 338 public boolean isClassInitializer() { 339 if (isStatic()) { 340 final int nameIndex = UNSAFE.getChar(getConstMethod() + config().constMethodNameIndexOffset); 341 long nameSymbol = constantPool.getEntryAt(nameIndex); 342 long clinitSymbol = config().symbolClinit; 343 return nameSymbol == clinitSymbol; 344 } |