Mercurial > hg > truffle
diff truffle/com.oracle.truffle.tck/src/com/oracle/truffle/tck/ComplexNumbersColumnBased.java @ 22499:9bba3a7b34be
Check foreign arguments when accessing ComplexNumber/Sequence objects
author | Matthias Grimmer <grimmer@ssw.jku.at> |
---|---|
date | Mon, 14 Dec 2015 15:07:19 +0100 |
parents | b3569a53c24c |
children | 89db2519ef18 |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.tck/src/com/oracle/truffle/tck/ComplexNumbersColumnBased.java Mon Dec 14 14:30:41 2015 +0100 +++ b/truffle/com.oracle.truffle.tck/src/com/oracle/truffle/tck/ComplexNumbersColumnBased.java Mon Dec 14 15:07:19 2015 +0100 @@ -97,15 +97,15 @@ @Override public Object execute(VirtualFrame frame) { ComplexNumbersColumnBased complexNumbers = (ComplexNumbersColumnBased) ForeignAccess.getReceiver(frame); - Number index = (Number) ForeignAccess.getArguments(frame).get(0); - TruffleObject value = (TruffleObject) ForeignAccess.getArguments(frame).get(1); + Number index = TckLanguage.expectNumber(ForeignAccess.getArguments(frame).get(0)); + TruffleObject value = TckLanguage.expectTruffleObject(ForeignAccess.getArguments(frame).get(1)); if (readReal == null || readImag == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); this.readReal = insert(Message.READ.createNode()); this.readImag = insert(Message.READ.createNode()); } - Number realPart = (Number) ForeignAccess.execute(readReal, frame, value, new Object[]{ComplexNumber.REAL_IDENTIFIER}); - Number imagPart = (Number) ForeignAccess.execute(readImag, frame, value, new Object[]{ComplexNumber.IMAGINARY_IDENTIFIER}); + Number realPart = TckLanguage.expectNumber(ForeignAccess.execute(readReal, frame, value, new Object[]{ComplexNumber.REAL_IDENTIFIER})); + Number imagPart = TckLanguage.expectNumber(ForeignAccess.execute(readImag, frame, value, new Object[]{ComplexNumber.IMAGINARY_IDENTIFIER})); complexNumbers.reals[index.intValue()] = realPart.doubleValue(); complexNumbers.imags[index.intValue()] = imagPart.doubleValue(); @@ -121,7 +121,7 @@ @Override public Object execute(VirtualFrame frame) { ComplexNumbersColumnBased complexNumbers = (ComplexNumbersColumnBased) ForeignAccess.getReceiver(frame); - Number index = (Number) ForeignAccess.getArguments(frame).get(0); + Number index = TckLanguage.expectNumber(ForeignAccess.getArguments(frame).get(0)); return new ComplexNumberBEntry(complexNumbers, index.intValue()); } @@ -190,7 +190,7 @@ @Override public Object execute(VirtualFrame frame) { ComplexNumberBEntry complexNumber = (ComplexNumberBEntry) ForeignAccess.getReceiver(frame); - String name = (String) ForeignAccess.getArguments(frame).get(0); + String name = TckLanguage.expectString(ForeignAccess.getArguments(frame).get(0)); if (name.equals(ComplexNumber.IMAGINARY_IDENTIFIER)) { return complexNumber.numbers.imags[complexNumber.index]; } else if (name.equals(ComplexNumber.REAL_IDENTIFIER)) { @@ -209,8 +209,8 @@ @Override public Object execute(VirtualFrame frame) { ComplexNumberBEntry complexNumber = (ComplexNumberBEntry) ForeignAccess.getReceiver(frame); - String name = (String) ForeignAccess.getArguments(frame).get(0); - Number value = (Number) ForeignAccess.getArguments(frame).get(1); + String name = TckLanguage.expectString(ForeignAccess.getArguments(frame).get(0)); + Number value = TckLanguage.expectNumber(ForeignAccess.getArguments(frame).get(1)); if (name.equals(ComplexNumber.IMAGINARY_IDENTIFIER)) { complexNumber.numbers.imags[complexNumber.index] = value.doubleValue(); } else if (name.equals(ComplexNumber.REAL_IDENTIFIER)) {