@Resolve(message = "IS_NULL") abstract static class NullCheckNode extends Node { public Object access(JavaObject object) { return object.isNull(); } }
MessageGenerator(ProcessingEnvironment processingEnv, Resolve resolveAnnotation, MessageResolution messageResolutionAnnotation, TypeElement element, ForeignAccessFactoryGenerator containingForeignAccessFactory) { super(processingEnv, element, containingForeignAccessFactory); this.receiverClassName = Utils.getReceiverTypeFullClassName(messageResolutionAnnotation); this.messageName = resolveAnnotation.message(); String mName = messageName.substring(messageName.lastIndexOf('.') + 1); this.rootNodeName = mName + "RootNode"; }
@Resolve(message = "HAS_SIZE") abstract static class VarNamesHasSizeNode extends Node { public Object access(VariableNamesObject varNames) { return true; } }
@Resolve(message = "HAS_SIZE") abstract static class ArgsArrHasSizeNode extends Node { public Object access(ArgumentsArrayObject argsArr) { return true; } }
@Resolve(message = "HAS_KEYS") abstract static class VarsMapHasKeysNode extends Node { @SuppressWarnings("unused") public Object access(TopScopeObject ts) { return true; } }
@Resolve(message = "READ") abstract static class ClassNamesReadNode extends Node { @TruffleBoundary public Object access(ClassNamesObject varNames, int index) { try { return varNames.names.get(index); } catch (IndexOutOfBoundsException ioob) { throw UnknownIdentifierException.raise(Integer.toString(index)); } } }
@Resolve(message = "GET_SIZE") abstract static class ArgsArrGetSizeNode extends Node { public Object access(ArgumentsArrayObject argsArr) { return argsArr.args.length; } }
@Resolve(message = "HAS_KEYS") abstract static class SymbolsHasKeysNode extends Node { @SuppressWarnings("unused") public Object access(EmptyGlobalBindings obj) { return true; } }
@Resolve(message = "HAS_SIZE") abstract static class ArrayHasSizeNode extends Node { public Object access(HostObject receiver) { Object obj = receiver.obj; if (obj == null) { return false; } return obj.getClass().isArray() || obj instanceof List<?>; } }
@Resolve(message = "GET_SIZE") abstract static class ClassNamesGetSizeNode extends Node { public Object access(ClassNamesObject varNames) { return varNames.names.size(); } }
@Resolve(message = "IS_NULL") abstract static class IsNull extends Node { public Object access(@SuppressWarnings("unused") NullValue receiver) { return true; } }
@Resolve(message = "READ") abstract static class ReadNode extends Node { @TruffleBoundary @SuppressWarnings("unused") public Object access(EmptyGlobalBindings obj, String name) { throw UnknownIdentifierException.raise(name); } }
@Resolve(message = "GET_SIZE") abstract static class StructuredDataGetSizeNode extends Node { public Object access(StructuredData data) { return data.getSchema().length(); } }
@Resolve(message = "HAS_KEYS") abstract static class ComplexNumbersBEntryHasKeysNode extends Node { public Object access(ComplexNumberBEntry complexNumber) { assert complexNumber != null; return true; } }
@Resolve(message = "READ") abstract static class ComplexNumbersAEntryReadNode extends Node { public Object access(ComplexNumberAEntry complexNumber, String name) { if (name.equals(ComplexNumber.IMAGINARY_IDENTIFIER)) { return complexNumber.getNumbers().getData()[complexNumber.getIndex() * 2 + 1]; } else if (name.equals(ComplexNumber.REAL_IDENTIFIER)) { return complexNumber.getNumbers().getData()[complexNumber.getIndex() * 2]; } else { throw UnknownIdentifierException.raise(name); } } }
@Resolve(message = "READ") abstract static class RegexResultReadNode extends Node { @Child ReadCacheNode cache = ReadCacheNodeGen.create(); public Object access(RegexResult receiver, String symbol) { return cache.execute(receiver, symbol); } } }
@Resolve(message = "IS_EXECUTABLE") abstract static class RegexCompilerIsExecutableNode extends Node { @SuppressWarnings("unused") public boolean access(RegexCompiler receiver) { return true; } } }
@Resolve(message = "IS_EXECUTABLE") abstract static class RegexEngineIsExecutableNode extends Node { @SuppressWarnings("unused") public boolean access(RegexEngine receiver) { return true; } } }
@Resolve(message = "READ") abstract static class TruffleReadOnlyMapReadNode extends Node { @Child ReadCacheNode cache = ReadCacheNodeGen.create(); public Object access(TruffleReadOnlyMap o, String name) { return cache.execute(o, name); } } }
@Resolve(message = "READ") abstract static class VarNamesReadNode extends Node { @TruffleBoundary public Object access(VariableNamesObject varNames, int index) { try { return varNames.names.get(index); } catch (IndexOutOfBoundsException ioob) { throw UnknownIdentifierException.raise(Integer.toString(index)); } } }