###############################################################################
# Copyright IBM Corp. and others 2017
#
# This program and the accompanying materials are made available under
# the terms of the Eclipse Public License 2.0 which accompanies this
# distribution and is available at https://www.eclipse.org/legal/epl-2.0/
# or the Apache License, Version 2.0 which accompanies this distribution and
# is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# This Source Code may also be made available under the following
# Secondary Licenses when the conditions for such availability set
# forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
# General Public License, version 2 with the GNU Classpath
# Exception [1] and GNU General Public License, version 2 with the
# OpenJDK Assembly Exception [2].
#
# [1] https://www.gnu.org/software/classpath/license.html
# [2] https://openjdk.org/legal/assembly-exception.html
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 OR GPL-2.0-only WITH OpenJDK-assembly-exception-1.0
###############################################################################

# formats:
# opaquetype=TypeName
# fieldoverride.TypeName.FieldName=NewFieldName
# typeoverride.TypeName.FieldName=NewFieldType

# Opaque types.
opaquetype=J9SRP
opaquetype=J9WSRP
opaquetype=fj9object_t
opaquetype=iconv_t
opaquetype=j9objectclass_t
opaquetype=j9objectmonitor_t
opaquetype=UDATA

# Type overrides - mostly adding data to SRPs.
typeoverride.J9AnnotationInfo.defaultValues=J9SRP(J9AnnotationInfoEntry)
typeoverride.J9AnnotationInfo.firstAnnotation=J9SRP(J9AnnotationInfoEntry)
typeoverride.J9AnnotationInfo.firstClass=J9SRP(J9AnnotationInfoEntry)
typeoverride.J9AnnotationInfo.firstField=J9SRP(J9AnnotationInfoEntry)
typeoverride.J9AnnotationInfo.firstMethod=J9SRP(J9AnnotationInfoEntry)
typeoverride.J9AnnotationInfo.firstParameter=J9SRP(J9AnnotationInfoEntry)

typeoverride.J9AnnotationInfoEntry.annotationData=J9SRP(UDATA)
typeoverride.J9AnnotationInfoEntry.annotationType=J9SRP(J9UTF8)
typeoverride.J9AnnotationInfoEntry.memberName=J9SRP(J9UTF8)
typeoverride.J9AnnotationInfoEntry.memberSignature=J9SRP(J9UTF8)

# Retain the old type for compatibility with dumps from older VMs.
typeoverride.J9Class.ramConstantPool=UDATA*

typeoverride.J9MethodParameter.name=J9SRP(J9UTF8)

typeoverride.J9EnclosingObject.nameAndSignature=J9SRP(J9ROMNameAndSignature)

typeoverride.J9ROMClass.className=J9SRP(J9UTF8)
typeoverride.J9ROMClass.cpShapeDescription=J9SRP(U32)
typeoverride.J9ROMClass.enclosedInnerClasses=J9SRP(J9SRP(J9UTF8))
typeoverride.J9ROMClass.innerClasses=J9SRP(J9SRP(J9UTF8))
typeoverride.J9ROMClass.interfaces=J9SRP(J9SRP(J9UTF8))
typeoverride.J9ROMClass.intermediateClassData=J9WSRP(U_8)
typeoverride.J9ROMClass.optionalInfo=J9SRP(U32)
typeoverride.J9ROMClass.outerClassName=J9SRP(J9UTF8)
typeoverride.J9ROMClass.romFields=J9SRP(J9ROMFieldShape)
typeoverride.J9ROMClass.romMethods=J9SRP(J9ROMMethod)
typeoverride.J9ROMClass.specialSplitMethodRefIndexes=J9SRP(U16)
typeoverride.J9ROMClass.staticSplitMethodRefIndexes=J9SRP(U16)
typeoverride.J9ROMClass.superclassName=J9SRP(J9UTF8)

typeoverride.J9ROMArrayClass.className=J9SRP(J9UTF8)
typeoverride.J9ROMArrayClass.cpShapeDescription=J9SRP(U32)
typeoverride.J9ROMArrayClass.enclosedInnerClasses=J9SRP(J9SRP(J9UTF8))
typeoverride.J9ROMArrayClass.innerClasses=J9SRP(J9SRP(J9UTF8))
typeoverride.J9ROMArrayClass.interfaces=J9SRP(J9SRP(J9UTF8))
typeoverride.J9ROMArrayClass.intermediateClassData=J9WSRP(U_8)
typeoverride.J9ROMArrayClass.optionalInfo=J9SRP(U32)
typeoverride.J9ROMArrayClass.outerClassName=J9SRP(J9UTF8)
typeoverride.J9ROMArrayClass.romFields=J9SRP(J9ROMFieldShape)
typeoverride.J9ROMArrayClass.romMethods=J9SRP(J9ROMMethod)
typeoverride.J9ROMArrayClass.superclassName=J9SRP(J9UTF8)

typeoverride.J9ROMClassCfrConstantPoolInfo.bytes=J9SRP(U_8)

typeoverride.J9ROMStringRef.utf8Data=J9SRP(J9UTF8)

typeoverride.J9ROMStaticDoubleFieldShape.initialValuePointer=J9SRP

typeoverride.J9ROMClassCfrError.constantPool=J9SRP(J9ROMClassCfrConstantPoolInfo)
typeoverride.J9ROMClassCfrError.errorMember=J9SRP(J9ROMClassCfrMember)

typeoverride.J9SharedCacheHeader.corruptFlagPtr=J9WSRP(U_8)
typeoverride.J9SharedCacheHeader.lockedPtr=J9WSRP(U_32)
typeoverride.J9SharedCacheHeader.sharedStringHead=J9SRP(J9SharedInternSRPHashTableEntry)
typeoverride.J9SharedCacheHeader.sharedStringRoot=J9SRP
typeoverride.J9SharedCacheHeader.sharedStringTail=J9SRP(J9SharedInternSRPHashTableEntry)
typeoverride.J9SharedCacheHeader.updateCountPtr=J9WSRP(UDATA)

typeoverride.J9ROMClassRef.name=J9SRP(J9UTF8)

typeoverride.J9ROMClassTOCEntry.className=J9SRP(J9UTF8)
typeoverride.J9ROMClassTOCEntry.romClass=J9SRP(J9ROMClass)

typeoverride.J9ROMFieldRef.nameAndSignature=J9SRP(J9ROMNameAndSignature)

typeoverride.J9ROMImageHeader.aotPointer=J9SRP
typeoverride.J9ROMImageHeader.firstClass=J9SRP(J9ROMClass)
typeoverride.J9ROMImageHeader.jxePointer=J9SRP(UDATA)
typeoverride.J9ROMImageHeader.tableOfContents=J9SRP(J9ROMClassTOCEntry)

typeoverride.J9ROMMethodRef.nameAndSignature=J9SRP(J9ROMNameAndSignature)

typeoverride.J9PoolPuddleList.nextAvailablePuddle=J9WSRP(J9PoolPuddle)
typeoverride.J9PoolPuddleList.nextPuddle=J9WSRP(J9PoolPuddle)

typeoverride.J9PoolPuddle.firstElementAddress=J9SRP
typeoverride.J9PoolPuddle.firstFreeSlot=J9SRP(UDATA)
typeoverride.J9PoolPuddle.nextAvailablePuddle=J9WSRP(J9PoolPuddle)
typeoverride.J9PoolPuddle.nextPuddle=J9WSRP(J9PoolPuddle)
typeoverride.J9PoolPuddle.prevAvailablePuddle=J9WSRP(J9PoolPuddle)
typeoverride.J9PoolPuddle.prevPuddle=J9WSRP(J9PoolPuddle)

typeoverride.J9Pool.puddleList=J9WSRP(J9PoolPuddleList)

typeoverride.J9ROMNameAndSignature.name=J9SRP(J9UTF8)
typeoverride.J9ROMNameAndSignature.signature=J9SRP(J9UTF8)

typeoverride.J9ROMMethodTypeRef.signature=J9SRP(J9UTF8)

typeoverride.J9ROMConstantDynamicRef.nameAndSignature=J9SRP(J9ROMNameAndSignature)

# AVL leftChild and rightChild pointers aren't regular wide pointers.
# They have AVL balance data encoded in them - so treat
# them as IDATAs and handle them in the DDR AVL code.
typeoverride.J9AVLTreeNode.leftChild=IDATA
typeoverride.J9AVLTreeNode.rightChild=IDATA

typeoverride.J9MEMAVLTreeNode.leftChild=IDATA
typeoverride.J9MEMAVLTreeNode.rightChild=IDATA

typeoverride.J9MemorySegment.leftChild=IDATA
typeoverride.J9MemorySegment.rightChild=IDATA

typeoverride.J9JITHashTable.leftChild=IDATA
typeoverride.J9JITHashTable.rightChild=IDATA

typeoverride.J9ObjectMemorySegment.leftChild=IDATA
typeoverride.J9ObjectMemorySegment.rightChild=IDATA

typeoverride.CacheletWrapper.dataStart=I_32

typeoverride.J9MethodDebugInfo.srpToVarInfo=J9SRP(U_8)

# Type override for SRPs in shared string intern table.
typeoverride.J9SharedInternSRPHashTableEntry.nextNode=J9SRP(J9SharedInternSRPHashTableEntry)
typeoverride.J9SharedInternSRPHashTableEntry.prevNode=J9SRP(J9SharedInternSRPHashTableEntry)
typeoverride.J9SharedInternSRPHashTableEntry.utf8SRP=J9SRP(J9UTF8)
typeoverride.J9SRPHashTableInternal.nodePool=J9SRP(J9SimplePool)
typeoverride.J9SRPHashTableInternal.nodes=J9SRP(J9SRP)

# Type override for SRPs in J9SimplePoolFreeList.
typeoverride.J9SimplePoolFreeList.next=J9SRP(J9SimplePoolFreeList)
typeoverride.J9SimplePoolFreeList.simplePool=J9SRP(J9SimplePool)

# Type override for SRPs in J9SimplePool.
typeoverride.J9SimplePool.blockEnd=J9SRP(U_8)
typeoverride.J9SimplePool.firstFreeSlot=J9SRP(U_8)
typeoverride.J9SimplePool.freeList=J9SRP(J9SimplePoolFreeList)

# Type override for SharedClassCache (SH_CacheMap).
typeoverride.J9SharedClassConfig.sharedClassCache=SH_CacheMap*
