mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8004903: VMThread::execute() calls Thread::check_for_valid_safepoint_state() on concurrent VM ops
Check_for_valid_safepoint_state() only applies to blocking VM ops Reviewed-by: acorn, dholmes, dice, sspitsyn
This commit is contained in:
parent
98c357abf8
commit
bc751c3469
1 changed files with 6 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2013, 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
|
||||
|
@ -570,7 +570,11 @@ void VMThread::execute(VM_Operation* op) {
|
|||
if (!t->is_VM_thread()) {
|
||||
SkipGCALot sgcalot(t); // avoid re-entrant attempts to gc-a-lot
|
||||
// JavaThread or WatcherThread
|
||||
t->check_for_valid_safepoint_state(true);
|
||||
bool concurrent = op->evaluate_concurrently();
|
||||
// only blocking VM operations need to verify the caller's safepoint state:
|
||||
if (!concurrent) {
|
||||
t->check_for_valid_safepoint_state(true);
|
||||
}
|
||||
|
||||
// New request from Java thread, evaluate prologue
|
||||
if (!op->doit_prologue()) {
|
||||
|
@ -582,7 +586,6 @@ void VMThread::execute(VM_Operation* op) {
|
|||
|
||||
// It does not make sense to execute the epilogue, if the VM operation object is getting
|
||||
// deallocated by the VM thread.
|
||||
bool concurrent = op->evaluate_concurrently();
|
||||
bool execute_epilog = !op->is_cheap_allocated();
|
||||
assert(!concurrent || op->is_cheap_allocated(), "concurrent => cheap_allocated");
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue