Skip to content

Commit f31aaa2

Browse files
committed
Assert assumptions about array and index nodes
1 parent 7f13f6d commit f31aaa2

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

compiler/optimizer/OMRTransformUtil.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,10 @@ OMR::TransformUtil::generateDataAddrLoadTrees(TR::Compilation *comp, TR::Node *a
445445
TR::Compiler->om.isOffHeapAllocationEnabled(),
446446
"This helper shouldn't be called if off heap allocation is disabled.\n");
447447

448+
TR_ASSERT_FATAL_WITH_NODE(arrayObject,
449+
arrayObject->getDataType().isAddress(),
450+
"arrayObject must be address data type.\n");
451+
448452
TR::SymbolReference *dataAddrFieldOffset = comp->getSymRefTab()->findOrCreateContiguousArrayDataAddrFieldShadowSymRef();
449453
TR::Node *dataAddrField = TR::Node::createWithSymRef(TR::aloadi, 1, arrayObject, 0, dataAddrFieldOffset);
450454
dataAddrField->setIsInternalPointer(true);
@@ -463,6 +467,14 @@ OMR::TransformUtil::generateArrayElementAddressTrees(TR::Compilation *comp, TR::
463467
!TR::Compiler->om.canGenerateArraylets(),
464468
"This helper shouldn't be called if arraylets are enabled.\n");
465469

470+
TR_ASSERT_FATAL_WITH_NODE(arrayNode,
471+
arrayNode->getDataType().isAddress(),
472+
"arrayNode must be address data type.\n");
473+
474+
TR_ASSERT_FATAL_WITH_NODE(offsetNode,
475+
offsetNode == NULL || offsetNode->getDataType().isIntegral(),
476+
"offsetNode must be integeral data type.\n");
477+
466478
#if defined(OMR_GC_SPARSE_HEAP_ALLOCATION)
467479
if (TR::Compiler->om.isOffHeapAllocationEnabled())
468480
{
@@ -507,13 +519,25 @@ OMR::TransformUtil::generateArrayElementAddressTrees(TR::Compilation *comp, TR::
507519
TR::Node *
508520
OMR::TransformUtil::generateFirstArrayElementAddressTrees(TR::Compilation *comp, TR::Node *arrayObject)
509521
{
522+
TR_ASSERT_FATAL_WITH_NODE(arrayObject,
523+
arrayObject->getDataType().isAddress(),
524+
"arrayObject must be address data type.\n");
525+
510526
TR::Node *firstArrayElementNode = generateArrayElementAddressTrees(comp, arrayObject);
511527
return firstArrayElementNode;
512528
}
513529

514530
TR::Node *
515531
OMR::TransformUtil::generateConvertArrayElementIndexToOffsetTrees(TR::Compilation *comp, TR::Node *indexNode, TR::Node *elementSizeNode, int32_t elementSize, bool useShiftOpCode)
516532
{
533+
TR_ASSERT_FATAL_WITH_NODE(indexNode,
534+
indexNode->getDataType().isIntegral(),
535+
"indexNode must be integeral data type.\n");
536+
537+
TR_ASSERT_FATAL_WITH_NODE(elementSizeNode,
538+
elementSizeNode == NULL || elementSizeNode->getDataType().isIntegral(),
539+
"elementSizeNode must be integeral data type.\n");
540+
517541
TR::Node *offsetNode = indexNode->createLongIfNeeded();
518542
TR::Node *strideNode = elementSizeNode;
519543
if (strideNode)

0 commit comments

Comments
 (0)