< prev index next >

src/hotspot/share/prims/jvmtiImpl.hpp

Print this page
@@ -1,7 +1,7 @@
  /*
-  * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved.
+  * Copyright (c) 1999, 2026, 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.

@@ -178,10 +178,11 @@
    BasicType   _type;
    jvalue      _value;
    javaVFrame* _jvf;
    bool        _set;
    bool        _self;
+   bool        _need_clone; // THIS object is in a value object constructor
  
    static const jvalue _DEFAULT_VALUE;
  
    // It is possible to get the receiver out of a non-static native wrapper
    // frame.  Use VM_GetReceiver to do this.

@@ -190,19 +191,21 @@
    jvmtiError  _result;
  
    virtual javaVFrame* get_java_vframe() = 0;
    bool check_slot_type_lvt(javaVFrame* vf);
    bool check_slot_type_no_lvt(javaVFrame* vf);
+   void check_and_clone_this_value_object();
  
  public:
    VM_BaseGetOrSetLocal(JavaThread* calling_thread, jint depth, jint index,
                         BasicType type, jvalue value, bool set, bool self);
  
    jvalue value()         { return _value; }
    jvmtiError result()    { return _result; }
  
    void doit();
+   void doit_epilogue();
    bool allow_nested_vm_operations() const;
    virtual const char* name() const = 0;
  
    // Check that the klass is assignable to a type with the given signature.
    static bool is_assignable(const char* ty_sign, Klass* klass, Thread* thread);
< prev index next >