From 25537e9cb269ac523856654bab1ec13e5e17ecfc Mon Sep 17 00:00:00 2001 From: Amos Shi <ashi@openjdk.org> Date: Fri, 16 Aug 2024 17:20:31 +0000 Subject: [PATCH] 8298596: vmTestbase/nsk/sysdict/vm/stress/chain/chain008/chain008.java fails with "NoClassDefFoundError: Could not initialize class java.util.concurrent.ThreadLocalRandom" Reviewed-by: mbaesken Backport-of: c3242ee452c25b5038283c68e65541122a10df0d --- .../vmTestbase/nsk/share/gc/gp/GarbageUtils.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java b/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java index dc5bc5e8b88..ee82d88f6fa 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -234,11 +234,21 @@ public final class GarbageUtils { long.class, OOM_TYPE.class); + private static MethodHandle eat; + + static { + try { + eat = MethodHandles.lookup().findStatic(GarbageUtils.class, "eatMemoryImpl", mt); + } catch (Exception nsme) { + // Can't run the test for some unexpected reason + throw new RuntimeException(nsme); + } + } + + public static int eatMemory(ExecutionController stresser, GarbageProducer gp, long initialFactor, long minMemoryChunk, long factor, OOM_TYPE type) { try { // Using a methodhandle invoke of eatMemoryImpl to prevent inlining of it - MethodHandles.Lookup lookup = MethodHandles.lookup(); - MethodHandle eat = lookup.findStatic(GarbageUtils.class, "eatMemoryImpl", mt); return (int) eat.invoke(stresser, gp, initialFactor, minMemoryChunk, factor, type); } catch (OutOfMemoryError e) { return numberOfOOMEs++; -- GitLab