Skip to content
Permalink
Browse files
8168304: Make all of DependencyContext_test available in product mode
Enable the utility inspection function `DependencyContext::is_dependent_method` and therefore the test in the product mode.

Reviewed-by: phh
Backport-of: 66c8794
  • Loading branch information
shipilev committed Aug 4, 2021
1 parent cf2cf25 commit 35fcac65dc317d97f5c14427ea493e619f47d3ce
Showing 3 changed files with 10 additions and 13 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2022, 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
@@ -246,6 +246,7 @@ void DependencyContext::print_dependent_nmethods(bool verbose) {
}
}
}
#endif //PRODUCT

bool DependencyContext::is_dependent_nmethod(nmethod* nm) {
for (nmethodBucket* b = dependencies(); b != NULL; b = b->next()) {
@@ -267,8 +268,6 @@ bool DependencyContext::find_stale_entries() {
return false;
}

#endif //PRODUCT

int nmethodBucket::decrement() {
return Atomic::sub(1, &_count);
}
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2020, 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
@@ -147,8 +147,8 @@ class DependencyContext : public StackObj {

#ifndef PRODUCT
void print_dependent_nmethods(bool verbose);
#endif //PRODUCT
bool is_dependent_nmethod(nmethod* nm);
bool find_stale_entries();
#endif //PRODUCT
};
#endif // SHARE_VM_CODE_DEPENDENCYCONTEXT_HPP
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2016, 2020, 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
@@ -58,32 +58,30 @@ class TestDependencyContext {
return ctx.has_stale_entries();
}

#ifndef PRODUCT
static bool find_stale_entries(DependencyContext ctx) {
return ctx.find_stale_entries();
}
#endif
};

static void test_remove_dependent_nmethod(int id, bool delete_immediately) {
TestDependencyContext c;
DependencyContext depContext = c.dependencies();
NOT_PRODUCT(ASSERT_FALSE(TestDependencyContext::find_stale_entries(depContext)));
ASSERT_FALSE(TestDependencyContext::find_stale_entries(depContext));
ASSERT_FALSE(TestDependencyContext::has_stale_entries(depContext));

nmethod* nm = c._nmethods[id];
depContext.remove_dependent_nmethod(nm, delete_immediately);

if (!delete_immediately) {
NOT_PRODUCT(ASSERT_TRUE(TestDependencyContext::find_stale_entries(depContext)));
ASSERT_TRUE(TestDependencyContext::find_stale_entries(depContext));
ASSERT_TRUE(TestDependencyContext::has_stale_entries(depContext));
NOT_PRODUCT(ASSERT_TRUE(depContext.is_dependent_nmethod(nm)));
ASSERT_TRUE(depContext.is_dependent_nmethod(nm));
depContext.expunge_stale_entries();
}

NOT_PRODUCT(ASSERT_FALSE(TestDependencyContext::find_stale_entries(depContext)));
ASSERT_FALSE(TestDependencyContext::find_stale_entries(depContext));
ASSERT_FALSE(TestDependencyContext::has_stale_entries(depContext));
NOT_PRODUCT(ASSERT_FALSE(depContext.is_dependent_nmethod(nm)));
ASSERT_FALSE(depContext.is_dependent_nmethod(nm));
}

TEST_VM(code, dependency_context) {

1 comment on commit 35fcac6

@openjdk-notifier
Copy link

@openjdk-notifier openjdk-notifier bot commented on 35fcac6 Aug 4, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.