Optimize java.io.UnixFileSystem to avoid ErrnoException churn.#2762
Open
copybara-service[bot] wants to merge 1 commit into
Open
Optimize java.io.UnixFileSystem to avoid ErrnoException churn.#2762copybara-service[bot] wants to merge 1 commit into
copybara-service[bot] wants to merge 1 commit into
Conversation
Replace Libcore.os.access with Libcore.os.canAccess in UnixFileSystem.checkAccess(). Libcore.os.access throws ErrnoException on failure (e.g. when a file does not exist), which must be caught and handled. On iOS, throwing ObjC exceptions has a significant performance cost (stack unwinding, runtime locks) and also litters "Earlier exception" logs in Crashpad/Breakpad crash reports, obscuring real errors. Libcore.os.canAccess performs the same POSIX access check but returns a boolean (false on failure) without throwing any exceptions, completely eliminating the exception churn for File.exists(), File.canRead(), and File.canWrite() checks that return false. PiperOrigin-RevId: 922403915
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Optimize java.io.UnixFileSystem to avoid ErrnoException churn.
Replace Libcore.os.access with Libcore.os.canAccess in UnixFileSystem.checkAccess().
Libcore.os.access throws ErrnoException on failure (e.g. when a file does not exist), which must be caught and handled. On iOS, throwing ObjC exceptions has a significant performance cost (stack unwinding, runtime locks) and also litters "Earlier exception" logs in Crashpad/Breakpad crash reports, obscuring real errors.
Libcore.os.canAccess performs the same POSIX access check but returns a boolean (false on failure) without throwing any exceptions, completely eliminating the exception churn for File.exists(), File.canRead(), and File.canWrite() checks that return false.