< prev index next > src/hotspot/share/prims/jvmtiImpl.hpp
Print this page
/*
! * 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.
/*
! * 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.
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.
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 >