< prev index next >

src/hotspot/share/opto/c2_CodeStubs.hpp

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 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
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.
--- 1,7 ---
  /*
!  * 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.

*** 95,10 ***
--- 95,30 ---
  
    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;

*** 108,11 ***
    Register monitor() { return _monitor; }
    Register tmp() { return _tmp; }
    int max_size() const;
    void emit(C2_MacroAssembler& masm);
  };
! #endif
  
  //-----------------------------C2GeneralStub-----------------------------------
  // A generalized stub that can be used to implement an arbitrary stub in a
  // type-safe manner. An example:
  //
--- 128,21 ---
    Register monitor() { return _monitor; }
    Register tmp() { return _tmp; }
    int max_size() const;
    void emit(C2_MacroAssembler& masm);
  };
! 
+ 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 >