From a00b0b941af01dca81798cbe0740055631bcb7ae Mon Sep 17 00:00:00 2001 From: Christian Despres Date: Mon, 5 Dec 2022 14:47:36 +0000 Subject: [PATCH] Expose a new limitOption for OpenJ9 The option processing framework now includes a limitOption function overload that allows the user to specify a particular compilation filter set. Fixes: #eclipse-openj9/openj9#15399 Signed-off-by: Christian Despres --- compiler/ras/Debug.hpp | 1 + compiler/ras/LimitFile.cpp | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/compiler/ras/Debug.hpp b/compiler/ras/Debug.hpp index d2a6893f0f5..80827c16d7a 100644 --- a/compiler/ras/Debug.hpp +++ b/compiler/ras/Debug.hpp @@ -463,6 +463,7 @@ class TR_Debug virtual char * limitfileOption(char *, void *, TR::OptionTable *, TR::Options *, bool loadLimit, TR_PseudoRandomNumbersListElement **pseudoRandomListHeadPtr = 0); virtual char * inlinefileOption(char *, void *, TR::OptionTable *, TR::Options *); virtual char * limitOption(char *, void *, TR::OptionTable *, TR::Options *, bool loadLimit); + char * limitOption(char *, void *, TR::OptionTable *, TR::Options *, TR::CompilationFilters * &); virtual int32_t * loadCustomStrategy(char *optFileName); virtual bool methodCanBeCompiled(TR_Memory *mem, TR_ResolvedMethod *, TR_FilterBST * &); virtual bool methodCanBeRelocated(TR_Memory *mem, TR_ResolvedMethod *, TR_FilterBST * &); diff --git a/compiler/ras/LimitFile.cpp b/compiler/ras/LimitFile.cpp index 76f41eb976e..b33e202c5fc 100644 --- a/compiler/ras/LimitFile.cpp +++ b/compiler/ras/LimitFile.cpp @@ -612,12 +612,12 @@ TR_Debug::limitfileOption(char *option, void *base, TR::OptionTable *entry, TR:: } char * -TR_Debug::limitOption(char *option, void *base, TR::OptionTable *entry, TR::Options * cmdLineOptions, bool loadLimit) +TR_Debug::limitOption(char *option, void *base, TR::OptionTable *entry, TR::Options * cmdLineOptions, TR::CompilationFilters *&filters) { char *p = option; - // this use the old interface - TR_FilterBST *filter = addFilter(p, static_cast(entry->parm1), 0, 0, loadLimit); + filters = findOrCreateFilters(filters); + TR_FilterBST *filter = addFilter(p, static_cast(entry->parm1), 0, 0, filters); if (!filter) return option; @@ -682,6 +682,19 @@ TR_Debug::limitOption(char *option, void *base, TR::OptionTable *entry, TR::Opti return p; } +char * +TR_Debug::limitOption(char *option, void *base, TR::OptionTable *entry, TR::Options * cmdLineOptions, bool loadLimit) + { + if (loadLimit) + { + return limitOption(option, base, entry, cmdLineOptions, _relocationFilters); + } + else + { + return limitOption(option, base, entry, cmdLineOptions, _compilationFilters); + } + } + void * TR_FilterBST::operator new(size_t size, TR::PersistentAllocator &allocator) {