< prev index next > src/java.base/share/classes/jdk/internal/classfile/impl/MethodImpl.java
Print this page
/*
- * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 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. Oracle designates this
public final class MethodImpl
extends AbstractElement
implements MethodModel, MethodInfo, Util.Writable {
- private final ClassReader reader;
+ private final ClassReaderImpl reader;
private final int startPos, endPos, attributesPos;
private List<Attribute<?>> attributes;
private int[] parameterSlots;
- public MethodImpl(ClassReader reader, int startPos, int endPos, int attrStart) {
+ public MethodImpl(ClassReaderImpl reader, int startPos, int endPos, int attrStart) {
this.reader = reader;
this.startPos = startPos;
this.endPos = endPos;
this.attributesPos = attrStart;
}
@Override
public AccessFlags flags() {
- return new AccessFlagsImpl(AccessFlag.Location.METHOD, reader.readU2(startPos));
+ return new AccessFlagsImpl(AccessFlag.Location.METHOD, reader.readU2(startPos), reader.classFileVersion());
}
@Override
public Optional<ClassModel> parent() {
if (reader instanceof ClassReaderImpl cri)
return attributes;
}
@Override
public void writeTo(BufWriterImpl buf) {
- if (buf.canWriteDirect(reader)) {
+ if (Util.canSkipMethodInflation(reader, this, buf)) {
reader.copyBytesTo(buf, startPos, endPos - startPos);
}
else {
buf.writeU2U2U2(flags().flagsMask(),
buf.cpIndex(methodName()),
< prev index next >