Class JSOverloadedBinaryNode.DispatchBinaryOperatorNode
java.lang.Object
com.oracle.truffle.api.nodes.Node
com.oracle.truffle.js.nodes.JavaScriptBaseNode
com.oracle.truffle.js.nodes.binary.JSOverloadedBinaryNode.DispatchBinaryOperatorNode
- All Implemented Interfaces:
com.oracle.truffle.api.nodes.NodeInterface,Cloneable
- Enclosing class:
JSOverloadedBinaryNode
public abstract static class JSOverloadedBinaryNode.DispatchBinaryOperatorNode
extends JavaScriptBaseNode
This class implements the
DispatchBinaryOperator spec function. Its responsibility is
to call the correct operator overload. This node aims to perform the overload lookup at
compile-time and then use direct, inlinable function calls, guarded by shape checks and type
checks.-
Nested Class Summary
Nested classes/interfaces inherited from class com.oracle.truffle.api.nodes.Node
com.oracle.truffle.api.nodes.Node.Child, com.oracle.truffle.api.nodes.Node.Children -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDispatchBinaryOperatorNode(com.oracle.truffle.api.strings.TruffleString overloadedOperatorName) -
Method Summary
Modifier and TypeMethodDescriptionprotected ObjectdoBigIntOverloaded(BigInt left, JSOverloadedOperatorsObject right, int rightOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) protected ObjectdoGeneric(Object left, Object right, JSFunctionCallNode callNode) protected ObjectdoNumberOverloaded(Object left, JSOverloadedOperatorsObject right, int rightOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) protected ObjectdoOverloadedBigInt(JSOverloadedOperatorsObject left, BigInt right, int leftOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) protected ObjectdoOverloadedNumber(JSOverloadedOperatorsObject left, Object right, int leftOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) protected ObjectdoOverloadedOverloaded(JSOverloadedOperatorsObject left, JSOverloadedOperatorsObject right, int leftOperatorCounter, int rightOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) protected ObjectdoOverloadedString(JSOverloadedOperatorsObject left, Object right, int leftOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) protected Objectprotected ObjectdoStringOverloaded(Object left, JSOverloadedOperatorsObject right, int rightOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) protected Objectprotected abstract Objectprotected com.oracle.truffle.api.strings.TruffleStringprotected booleanprotected booleanMethods inherited from class com.oracle.truffle.js.nodes.JavaScriptBaseNode
copy, getJSContext, getLanguage, getLanguageOptions, getRealm, hasOverloadedOperators, onReplaceMethods inherited from class com.oracle.truffle.api.nodes.Node
accept, adoptChildren, atomic, atomic, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, getSourceSection, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, replace, replace, reportPolymorphicSpecialize, toString
-
Constructor Details
-
DispatchBinaryOperatorNode
protected DispatchBinaryOperatorNode(com.oracle.truffle.api.strings.TruffleString overloadedOperatorName)
-
-
Method Details
-
execute
-
doOverloadedOverloaded
protected Object doOverloadedOverloaded(JSOverloadedOperatorsObject left, JSOverloadedOperatorsObject right, int leftOperatorCounter, int rightOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) -
doOverloadedNumber
protected Object doOverloadedNumber(JSOverloadedOperatorsObject left, Object right, int leftOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) -
doOverloadedBigInt
protected Object doOverloadedBigInt(JSOverloadedOperatorsObject left, BigInt right, int leftOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) -
doOverloadedString
protected Object doOverloadedString(JSOverloadedOperatorsObject left, Object right, int leftOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) -
doOverloadedUnsupportedPrimitive
-
doNumberOverloaded
protected Object doNumberOverloaded(Object left, JSOverloadedOperatorsObject right, int rightOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) -
doBigIntOverloaded
protected Object doBigIntOverloaded(BigInt left, JSOverloadedOperatorsObject right, int rightOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) -
doStringOverloaded
protected Object doStringOverloaded(Object left, JSOverloadedOperatorsObject right, int rightOperatorCounter, Object operatorImplementation, JSFunctionCallNode callNode) -
doUnsupportedPrimitiveOverloaded
-
doGeneric
-
getOverloadedOperatorName
protected com.oracle.truffle.api.strings.TruffleString getOverloadedOperatorName() -
isAddition
protected boolean isAddition() -
isEquality
protected boolean isEquality()
-