Skip to content

Commit 0a1a1f0

Browse files
committed
Add list.__reversed__
1 parent b6be359 commit 0a1a1f0

File tree

1 file changed

+13
-1
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/list

1 file changed

+13
-1
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/list/ListBuiltins.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import static com.oracle.graal.python.nodes.SpecialMethodNames.__MUL__;
4646
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NE__;
4747
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REPR__;
48+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REVERSED__;
4849
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RMUL__;
4950
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SETITEM__;
5051
import static com.oracle.graal.python.runtime.exception.PythonErrorType.MemoryError;
@@ -1005,7 +1006,6 @@ boolean doPList(VirtualFrame frame, PList left, PList right,
10051006
/**
10061007
* This is a fix for the bpo-38588 bug. See
10071008
* {@code test_list.py: ListTest.test_equal_operator_modifying_operand}
1008-
*
10091009
*/
10101010
@Specialization(guards = "isObjectStorage(left, right)")
10111011
boolean doPListObjectStorage(VirtualFrame frame, PList left, PList right,
@@ -1161,4 +1161,16 @@ static Object doGeneric(@SuppressWarnings("unused") Object self) {
11611161
return PNone.NONE;
11621162
}
11631163
}
1164+
1165+
@Builtin(name = __REVERSED__, minNumOfPositionalArgs = 1)
1166+
@GenerateNodeFactory
1167+
abstract static class ReverseNode extends PythonUnaryBuiltinNode {
1168+
@Specialization
1169+
Object reverse(PList self,
1170+
@Cached SequenceNodes.GetSequenceStorageNode getSequenceStorageNode,
1171+
@Cached SequenceStorageNodes.LenNode lenNode) {
1172+
int len = lenNode.execute(getSequenceStorageNode.execute(self));
1173+
return factory().createSequenceReverseIterator(PythonBuiltinClassType.PReverseIterator, self, len);
1174+
}
1175+
}
11641176
}

0 commit comments

Comments
 (0)