Skip to content

Commit

Permalink
Merge pull request #7223 from a7ehuo/recognized-methods-not-access-fl…
Browse files Browse the repository at this point in the history
…attened-array

Add API to recognize methods that do not access flattened arrays
  • Loading branch information
hzongaro authored Jan 16, 2024
2 parents 1960192 + b8e2991 commit 4574b93
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 33 deletions.
1 change: 1 addition & 0 deletions compiler/il/OMRMethodSymbol.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ class OMR_EXTENSIBLE MethodSymbol : public TR::Symbol
bool safeToSkipCheckCasts() { return false; }
bool safeToSkipArrayStoreChecks() { return false; }
bool safeToSkipNonNullableArrayNullStoreCheck() { return false; }
bool safeToSkipFlattenableArrayElementNonHelperCall() { return false; }
bool safeToSkipZeroInitializationOnNewarrays() { return false; }
bool safeToSkipChecksOnArrayCopies() { return false; }

Expand Down
17 changes: 9 additions & 8 deletions compiler/il/OMRResolvedMethodSymbol.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -194,14 +194,15 @@ OMR::ResolvedMethodSymbol::ResolvedMethodSymbol(TR_ResolvedMethod * method, TR::

self()->setParameterList();

_properties.set(CanSkipNullChecks , self()->safeToSkipNullChecks());
_properties.set(CanSkipBoundChecks , self()->safeToSkipBoundChecks());
_properties.set(CanSkipCheckCasts , self()->safeToSkipCheckCasts());
_properties.set(CanSkipDivChecks , self()->safeToSkipDivChecks());
_properties.set(CanSkipArrayStoreChecks , self()->safeToSkipArrayStoreChecks());
_properties.set(CanSkipNonNullableArrayNullStoreCheck, self()->safeToSkipNonNullableArrayNullStoreCheck());
_properties.set(CanSkipChecksOnArrayCopies , self()->safeToSkipChecksOnArrayCopies());
_properties.set(CanSkipZeroInitializationOnNewarrays , self()->safeToSkipZeroInitializationOnNewarrays());
_properties.set(CanSkipNullChecks , self()->safeToSkipNullChecks());
_properties.set(CanSkipBoundChecks , self()->safeToSkipBoundChecks());
_properties.set(CanSkipCheckCasts , self()->safeToSkipCheckCasts());
_properties.set(CanSkipDivChecks , self()->safeToSkipDivChecks());
_properties.set(CanSkipArrayStoreChecks , self()->safeToSkipArrayStoreChecks());
_properties.set(CanSkipNonNullableArrayNullStoreCheck , self()->safeToSkipNonNullableArrayNullStoreCheck());
_properties.set(CanSkipFlattenableArrayElementNonHelperCall, self()->safeToSkipFlattenableArrayElementNonHelperCall());
_properties.set(CanSkipChecksOnArrayCopies , self()->safeToSkipChecksOnArrayCopies());
_properties.set(CanSkipZeroInitializationOnNewarrays , self()->safeToSkipZeroInitializationOnNewarrays());
}


Expand Down
52 changes: 27 additions & 25 deletions compiler/il/OMRResolvedMethodSymbol.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -263,14 +263,15 @@ class OMR_EXTENSIBLE ResolvedMethodSymbol : public TR::MethodSymbol
bool canReplaceWithHWInstr() { return _properties.testAny(CanReplaceWithHWInstr); }
void setCanReplaceWithHWInstr(bool b) { _properties.set(CanReplaceWithHWInstr,b); }

bool skipNullChecks() { return _properties.testAny(CanSkipNullChecks); }
bool skipBoundChecks() { return _properties.testAny(CanSkipBoundChecks); }
bool skipCheckCasts() { return _properties.testAny(CanSkipCheckCasts); }
bool skipDivChecks() { return _properties.testAny(CanSkipDivChecks); }
bool skipArrayStoreChecks() { return _properties.testAny(CanSkipArrayStoreChecks); }
bool skipNonNullableArrayNullStoreCheck() { return _properties.testAny(CanSkipNonNullableArrayNullStoreCheck); }
bool skipChecksOnArrayCopies() { return _properties.testAny(CanSkipChecksOnArrayCopies); }
bool skipZeroInitializationOnNewarrays() { return _properties.testAny(CanSkipZeroInitializationOnNewarrays); }
bool skipNullChecks() { return _properties.testAny(CanSkipNullChecks); }
bool skipBoundChecks() { return _properties.testAny(CanSkipBoundChecks); }
bool skipCheckCasts() { return _properties.testAny(CanSkipCheckCasts); }
bool skipDivChecks() { return _properties.testAny(CanSkipDivChecks); }
bool skipArrayStoreChecks() { return _properties.testAny(CanSkipArrayStoreChecks); }
bool skipNonNullableArrayNullStoreCheck() { return _properties.testAny(CanSkipNonNullableArrayNullStoreCheck); }
bool skipFlattenableArrayElementNonHelperCall() { return _properties.testAny(CanSkipFlattenableArrayElementNonHelperCall); }
bool skipChecksOnArrayCopies() { return _properties.testAny(CanSkipChecksOnArrayCopies); }
bool skipZeroInitializationOnNewarrays() { return _properties.testAny(CanSkipZeroInitializationOnNewarrays); }

bool hasSnapshots() { return _properties.testAny(HasSnapshots); }
void setHasSnapshots(bool v=true) { _properties.set(HasSnapshots,v); }
Expand Down Expand Up @@ -329,23 +330,24 @@ class OMR_EXTENSIBLE ResolvedMethodSymbol : public TR::MethodSymbol
protected:
enum Properties
{
CanSkipNullChecks = 1 << 0,
CanSkipBoundChecks = 1 << 1,
CanSkipCheckCasts = 1 << 2,
CanSkipDivChecks = 1 << 3,
CanSkipChecksOnArrayCopies = 1 << 4,
CanSkipZeroInitializationOnNewarrays = 1 << 5,
CanSkipArrayStoreChecks = 1 << 6,
HasSnapshots = 1 << 7,
CanSkipNonNullableArrayNullStoreCheck = 1 << 8,
CanDirectNativeCall = 1 << 9,
CanReplaceWithHWInstr = 1 << 10,
IsSideEffectFree = 1 << 12,
IsLeaf = 1 << 13,
FoundThrow = 1 << 14,
HasExceptionHandlers = 1 << 15,
MayHaveVirtualCallProfileInfo = 1 << 16,
AggressivelyInlineThrows = 1 << 18,
CanSkipNullChecks = 1 << 0,
CanSkipBoundChecks = 1 << 1,
CanSkipCheckCasts = 1 << 2,
CanSkipDivChecks = 1 << 3,
CanSkipChecksOnArrayCopies = 1 << 4,
CanSkipZeroInitializationOnNewarrays = 1 << 5,
CanSkipArrayStoreChecks = 1 << 6,
HasSnapshots = 1 << 7,
CanSkipNonNullableArrayNullStoreCheck = 1 << 8,
CanDirectNativeCall = 1 << 9,
CanReplaceWithHWInstr = 1 << 10,
CanSkipFlattenableArrayElementNonHelperCall = 1 << 11,
IsSideEffectFree = 1 << 12,
IsLeaf = 1 << 13,
FoundThrow = 1 << 14,
HasExceptionHandlers = 1 << 15,
MayHaveVirtualCallProfileInfo = 1 << 16,
AggressivelyInlineThrows = 1 << 18,
LastProperty = AggressivelyInlineThrows,
};

Expand Down

0 comments on commit 4574b93

Please sign in to comment.