gecko-dev/js/js2/tests/class.xml
2001-01-20 00:44:51 +00:00

60 lines
1.6 KiB
XML

<class name="D">
<field name="f" type="Integer" />
<constructor name="D" static>
RETURN R0
</constructor>
<method name="bar" type="Void">
<parameter name="a" type="Integer"/> <!-- in R1 -->
<parameter name="b" type="Integer"/> <!-- in R2 -->
GENERIC_BINARY_OP R3, Add, R1, R2
SET_SLOT R0, 0, R3
RETURN_VOID
</method>
</class>
<class name="E" super="D">
<constructor name="E">
GET_STATIC R1, "D", 1
BIND_THIS R2, R0, R1
CALL R3, R2, () <!-- call to superclass constructor -->
RETURN R0
</constructor>
</class>
<function name="fn1" type="Void">
NEW_CLASS R2, "E"
GET_STATIC R3, "E", 1
BIND_THIS R4, R2, R3
CALL R1, R4, ()
LOAD_IMMEDIATE R2, 1
LOAD_IMMEDIATE R3, 4
GET_METHOD R4, R1, 0 <!-- virtual call to 'bar' in D -->
CALL R5, R4, (R2, R3)
GET_SLOT R2, R1, 0
LOAD_NAME R1, "print"
CALL R1, R1, (R2)
RETURN_VOID
</function>
<script>
LOAD_NAME R1, "fn1"
CALL R1, R1, ()
NEW_CLASS R2, "D"
GET_STATIC R3, "D", 1 <!-- 0'th static is __init__ -->
<!-- 1st static is D::D constructor -->
BIND_THIS R4, R2, R3
CALL R1, R4, ()
LOAD_IMMEDIATE R2, 1
LOAD_IMMEDIATE R3, 2
GET_METHOD R4, R1, 0 <!-- 0'th method is 'bar' above -->
CALL R5, R4, (R2, R3)
GET_SLOT R2, R1, 0
RETURN R2
</script>