Skip to content

Commit

Permalink
AArch64: Temporary implementation of table and lookup evaluators
Browse files Browse the repository at this point in the history
This commit enables tableEvaluator() and lookupEvaluator() for AArch64,
while the evaluators immediately call failCompilation().

Signed-off-by: KONNO Kazuhiro <konno@jp.ibm.com>
  • Loading branch information
knn-k committed Jul 26, 2019
1 parent c4a5982 commit 70668b7
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 10 deletions.
18 changes: 10 additions & 8 deletions compiler/aarch64/codegen/ControlFlowEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -467,17 +467,19 @@ OMR::ARM64::TreeEvaluator::acmpeqEvaluator(TR::Node *node, TR::CodeGenerator *cg

TR::Register *
OMR::ARM64::TreeEvaluator::lookupEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
// TODO:ARM64: Enable TR::TreeEvaluator::lookupEvaluator in compiler/aarch64/codegen/TreeEvaluatorTable.hpp when Implemented.
return OMR::ARM64::TreeEvaluator::unImpOpEvaluator(node, cg);
}
{
// Only temporary (#3963 implements this)
cg->comp()->failCompilation<TR::AssertionFailure>("lookupEvaluator");
return NULL;
}

TR::Register *
OMR::ARM64::TreeEvaluator::tableEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
// TODO:ARM64: Enable TR::TreeEvaluator::tableEvaluator in compiler/aarch64/codegen/TreeEvaluatorTable.hpp when Implemented.
return OMR::ARM64::TreeEvaluator::unImpOpEvaluator(node, cg);
}
{
// Only temporary (#3858 implements this)
cg->comp()->failCompilation<TR::AssertionFailure>("tableEvaluator");
return NULL;
}

TR::Register *
OMR::ARM64::TreeEvaluator::NULLCHKEvaluator(TR::Node *node, TR::CodeGenerator *cg)
Expand Down
4 changes: 2 additions & 2 deletions compiler/aarch64/codegen/OMRTreeEvaluatorTable.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -626,10 +626,10 @@
TR::TreeEvaluator::fbits2iEvaluator, // TR::fbits2i // type-coerce float to int
TR::TreeEvaluator::lbits2dEvaluator, // TR::lbits2d // type-coerce long to double
TR::TreeEvaluator::dbits2lEvaluator, // TR::dbits2l // type-coerce double to long
TR::TreeEvaluator::unImpOpEvaluator , // TODO:ARM64: Enable when Implemented: TR::TreeEvaluator::lookupEvaluator , // TR::lookup // lookupswitch (child1 is selector expression; child2 the default destination; subsequent children are case nodes
TR::TreeEvaluator::lookupEvaluator, // TR::lookup // lookupswitch (child1 is selector expression; child2 the default destination; subsequent children are case nodes
TR::TreeEvaluator::unImpOpEvaluator , // TODO:ARM64: Enable when Implemented: TR::TreeEvaluator::trtLookupEvaluator , // TR::trtLookup // special lookupswitch (child1 must be trt; child2 the default destination; subsequent children are case nodes) The internal control flow is similar to lookup; but each CASE represents a special semantics associated with a flag on it
TR::TreeEvaluator::unImpOpEvaluator , // TODO:ARM64: Enable when Implemented: TR::TreeEvaluator::CaseEvaluator , // TR::Case // case nodes that are children of TR_switch. Uses the branchdestination and the int const field
TR::TreeEvaluator::unImpOpEvaluator , // TODO:ARM64: Enable when Implemented: TR::TreeEvaluator::tableEvaluator , // TR::table // tableswitch (child1 is the selector; child2 the default destination; subsequent children are the branch targets (the last child may be a branch table address; use getCaseIndexUpperBound() when iterating over branch targets)
TR::TreeEvaluator::tableEvaluator, // TR::table // tableswitch (child1 is the selector; child2 the default destination; subsequent children are the branch targets (the last child may be a branch table address; use getCaseIndexUpperBound() when iterating over branch targets)
TR::TreeEvaluator::unImpOpEvaluator , // TODO:ARM64: Enable when Implemented: TR::TreeEvaluator::exceptionRangeFenceEvaluator , // TR::exceptionRangeFence // (J9) SymbolReference is the aliasing effect; initializer is where the code address gets put when binary is generated used for delimiting function; try blocks; catch clauses; finally clauses; etc.
TR::TreeEvaluator::unImpOpEvaluator , // TODO:ARM64: Enable when Implemented: TR::TreeEvaluator::dbgFenceEvaluator , // TR::dbgFence // used to delimit code (stmts) for debug info. Has no symbol reference.
TR::TreeEvaluator::unImpOpEvaluator , // TODO:ARM64: Enable when Implemented: TR::TreeEvaluator::NULLCHKEvaluator , // TR::NULLCHK // Null check a pointer. child 1 is indirect reference. Symbolref indicates failure action/destination
Expand Down

0 comments on commit 70668b7

Please sign in to comment.