< prev index next > src/hotspot/share/opto/c2_CodeStubs.hpp
Print this page
/*
- * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2024, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
int max_size() const;
void emit(C2_MacroAssembler& masm);
};
+ class C2FastUnlockLightweightStub : public C2CodeStub {
+ private:
+ Register _obj;
+ Register _mark;
+ Register _t;
+ Register _thread;
+ Label _push_and_slow_path;
+ Label _check_successor;
+ Label _unlocked_continuation;
+ public:
+ C2FastUnlockLightweightStub(Register obj, Register mark, Register t, Register thread) : C2CodeStub(),
+ _obj(obj), _mark(mark), _t(t), _thread(thread) {}
+ int max_size() const;
+ void emit(C2_MacroAssembler& masm);
+ Label& push_and_slow_path() { return _push_and_slow_path; }
+ Label& check_successor() { return _check_successor; }
+ Label& unlocked_continuation() { return _unlocked_continuation; }
+ Label& slow_path_continuation() { return continuation(); }
+ };
+
#ifdef _LP64
class C2HandleAnonOMOwnerStub : public C2CodeStub {
private:
Register _monitor;
Register _tmp;
Register monitor() { return _monitor; }
Register tmp() { return _tmp; }
int max_size() const;
void emit(C2_MacroAssembler& masm);
};
- #endif
+
+ class C2LoadNKlassStub : public C2CodeStub {
+ private:
+ Register _dst;
+ public:
+ C2LoadNKlassStub(Register dst) : C2CodeStub(), _dst(dst) {}
+ Register dst() { return _dst; }
+ int max_size() const;
+ void emit(C2_MacroAssembler& masm);
+ };
+ #endif // _LP64
//-----------------------------C2GeneralStub-----------------------------------
// A generalized stub that can be used to implement an arbitrary stub in a
// type-safe manner. An example:
//
< prev index next >