src/share/vm/interpreter/interpreterRuntime.cpp

Print this page

        

*** 1191,1203 **** --- 1191,1212 ---- } else { // set handler method->set_signature_handler(_handlers->at(handler_index)); } } + #ifdef ASSERT + { + // '_handlers' and '_fingerprints' are 'GrowableArray's and are NOT synchronized + // in any way if accessed from multiple threads. To avoid races with another + // thread which may change the arrays in the above, mutex protected block, we + // have to protect this read access here with the same mutex as well! + MutexLocker mu(SignatureHandlerLibrary_lock); assert(method->signature_handler() == Interpreter::slow_signature_handler() || _handlers->find(method->signature_handler()) == _fingerprints->find(Fingerprinter(method).fingerprint()), "sanity check"); + } + #endif } BufferBlob* SignatureHandlerLibrary::_handler_blob = NULL; address SignatureHandlerLibrary::_handler = NULL;