< prev index next >

src/hotspot/share/prims/jvmtiImpl.hpp

Print this page
*** 1,7 ***
  /*
!  * Copyright (c) 1999, 2025, 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) 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 >