/* * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2020 SAP SE. 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. *
*/
// In order to implement set_locals for compiled vframes we must // store updated locals in a data structure that contains enough // information to recognize equality with a vframe and to store // any updated locals.
class StackValueCollection;
class jvmtiDeferredLocalVariableSet : public CHeapObj<mtCompiler> { friendclass compiledVFrame;
private:
Method* _method; int _bci;
intptr_t* _id; int _vframe_id;
GrowableArray<jvmtiDeferredLocalVariable*>* _locals; bool _objects_are_deoptimized;
void update_value(StackValueCollection* locals, BasicType type, int index, jvalue value);
// Relocking has to be deferred if the lock owning thread is currently waiting on the monitor. staticint get_and_reset_relock_count_after_wait(JavaThread* jt); staticvoid inc_relock_count_after_wait(JavaThread* thread);
// Delete deferred updates for the compiled frame with id 'frame_id' on the // given thread's stack. The thread's JvmtiDeferredUpdates instance will be // deleted too if no updates remain. staticvoid delete_updates_for_frame(JavaThread* jt, intptr_t* frame_id);
// Number of deferred updates int count() const { return _deferred_locals_updates.length() + (_relock_count_after_wait > 0 ? 1 : 0);
}
};
#endif// SHARE_PRIMS_JVMTIDEFERREDUPDATES_HPP
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.