JavaByteCodeProcessor.st
branchdevelopment
changeset 2731 13f5be2bf83b
parent 2711 a00302fe5083
parent 2678 c865275e48a7
child 3196 d617b4590431
equal deleted inserted replaced
2713:d87e89dd5276 2731:13f5be2bf83b
    67         Jan Vrany <jan.vrany@fit.cvut.cz>
    67         Jan Vrany <jan.vrany@fit.cvut.cz>
    68 
    68 
    69     [instance variables:]
    69     [instance variables:]
    70 
    70 
    71     [class variables:]
    71     [class variables:]
       
    72 
       
    73     [see also:]
       
    74         JavaByteCodeProcessorAdaptor
    72 
    75 
    73     [see also:]
    76     [see also:]
    74         JavaByteCodeProcessorAdaptor
    77         JavaByteCodeProcessorAdaptor
    75 
    78 
    76 
    79 
   357     
   360     
   358     ^ self subclassResponsibility
   361     ^ self subclassResponsibility
   359  "
   362  "
   360      Description
   363      Description
   361      The <n> must be an index into the local variable array of the
   364      The <n> must be an index into the local variable array of the
   362      current frame (§3.6). The local variable at <n> must contain a
   365      current frame (3.6). The local variable at <n> must contain a
   363      reference. The objectref in the local variable at index is pushed
   366      reference. The objectref in the local variable at index is pushed
   364      onto the operand stack.
   367      onto the operand stack.
   365 
   368 
   366      Notes
   369      Notes
   367      An aload_<n> instruction cannot be used to load a value of type
   370      An aload_<n> instruction cannot be used to load a value of type
   381     self aload: 0.
   384     self aload: 0.
   382 
   385 
   383     "
   386     "
   384      Description
   387      Description
   385      The <n> must be an index into the local variable array of the
   388      The <n> must be an index into the local variable array of the
   386      current frame (§3.6). The local variable at <n> must contain a
   389      current frame (3.6). The local variable at <n> must contain a
   387      reference. The objectref in the local variable at index is pushed
   390      reference. The objectref in the local variable at index is pushed
   388      onto the operand stack.
   391      onto the operand stack.
   389 
   392 
   390      Notes
   393      Notes
   391      An aload_<n> instruction cannot be used to load a value of type
   394      An aload_<n> instruction cannot be used to load a value of type
   648     "raise an error: must be redefined in concrete subclass(es)"
   651     "raise an error: must be redefined in concrete subclass(es)"
   649     
   652     
   650     ^ self subclassResponsibility
   653     ^ self subclassResponsibility
   651    "
   654    "
   652      Description
   655      Description
   653      Both <n> and <n> + 1 must be indices into the local variable array of the current frame (§3.6).
   656      Both <n> and <n> + 1 must be indices into the local variable array of the current frame (3.6).
   654      The local variable at <n> must contain a double. The value of the local variable at <n> is pushed
   657      The local variable at <n> must contain a double. The value of the local variable at <n> is pushed
   655      onto the operand stack.
   658      onto the operand stack.
   656 
   659 
   657      Notes
   660      Notes
   658      Each of the dload_<n> instructions is the same as dload with an index of <n>, except that the
   661      Each of the dload_<n> instructions is the same as dload with an index of <n>, except that the
   669     
   672     
   670     self dload: 0.
   673     self dload: 0.
   671 
   674 
   672     "
   675     "
   673      Description
   676      Description
   674      Both <n> and <n> + 1 must be indices into the local variable array of the current frame (§3.6).
   677      Both <n> and <n> + 1 must be indices into the local variable array of the current frame (3.6).
   675      The local variable at <n> must contain a double. The value of the local variable at <n> is pushed
   678      The local variable at <n> must contain a double. The value of the local variable at <n> is pushed
   676      onto the operand stack.
   679      onto the operand stack.
   677 
   680 
   678      Notes
   681      Notes
   679      Each of the dload_<n> instructions is the same as dload with an index of <n>, except that the
   682      Each of the dload_<n> instructions is the same as dload with an index of <n>, except that the
   745     
   748     
   746     ^ self subclassResponsibility
   749     ^ self subclassResponsibility
   747 "
   750 "
   748      Description
   751      Description
   749      Both <n> and <n> + 1 must be indices into the local variable array of the
   752      Both <n> and <n> + 1 must be indices into the local variable array of the
   750      current frame (§3.6). The value on the top of the operand stack must be of
   753      current frame (3.6). The value on the top of the operand stack must be of
   751      type double. It is popped from the operand stack and undergoes value set
   754      type double. It is popped from the operand stack and undergoes value set
   752      conversion (§3.8.3), resulting in value'. The local variables at <n> and
   755      conversion (3.8.3), resulting in value'. The local variables at <n> and
   753      <n> + 1 are set to value'.
   756      <n> + 1 are set to value'.
   754 
   757 
   755      Notes
   758      Notes
   756      Each of the dstore_<n> instructions is the same as dstore with an index
   759      Each of the dstore_<n> instructions is the same as dstore with an index
   757      of <n>, except that the operand <n> is implicit."
   760      of <n>, except that the operand <n> is implicit."
   768     self dstore: 0.
   771     self dstore: 0.
   769 
   772 
   770     "
   773     "
   771      Description
   774      Description
   772      Both <n> and <n> + 1 must be indices into the local variable array of the
   775      Both <n> and <n> + 1 must be indices into the local variable array of the
   773      current frame (§3.6). The value on the top of the operand stack must be of
   776      current frame (3.6). The value on the top of the operand stack must be of
   774      type double. It is popped from the operand stack and undergoes value set
   777      type double. It is popped from the operand stack and undergoes value set
   775      conversion (§3.8.3), resulting in value'. The local variables at <n> and
   778      conversion (3.8.3), resulting in value'. The local variables at <n> and
   776      <n> + 1 are set to value'.
   779      <n> + 1 are set to value'.
   777 
   780 
   778      Notes
   781      Notes
   779      Each of the dstore_<n> instructions is the same as dstore with an index
   782      Each of the dstore_<n> instructions is the same as dstore with an index
   780      of <n>, except that the operand <n> is implicit."
   783      of <n>, except that the operand <n> is implicit."
   791 
   794 
   792 self dstore: 1.
   795 self dstore: 1.
   793 "
   796 "
   794 Description
   797 Description
   795 Both <n> and <n> + 1 must be indices into the local variable array of the 
   798 Both <n> and <n> + 1 must be indices into the local variable array of the 
   796 current frame (§3.6). The value on the top of the operand stack must be of 
   799 current frame (3.6). The value on the top of the operand stack must be of 
   797 type double. It is popped from the operand stack and undergoes value set 
   800 type double. It is popped from the operand stack and undergoes value set 
   798 conversion (§3.8.3), resulting in value'. The local variables at <n> and 
   801 conversion (3.8.3), resulting in value'. The local variables at <n> and 
   799 <n> + 1 are set to value'.
   802 <n> + 1 are set to value'.
   800 
   803 
   801 Notes
   804 Notes
   802 Each of the dstore_<n> instructions is the same as dstore with an index 
   805 Each of the dstore_<n> instructions is the same as dstore with an index 
   803 of <n>, except that the operand <n> is implicit.
   806 of <n>, except that the operand <n> is implicit.
   815     self dstore: 2.
   818     self dstore: 2.
   816 
   819 
   817     "
   820     "
   818      Description
   821      Description
   819      Both <n> and <n> + 1 must be indices into the local variable array of the
   822      Both <n> and <n> + 1 must be indices into the local variable array of the
   820      current frame (§3.6). The value on the top of the operand stack must be of
   823      current frame (3.6). The value on the top of the operand stack must be of
   821      type double. It is popped from the operand stack and undergoes value set
   824      type double. It is popped from the operand stack and undergoes value set
   822      conversion (§3.8.3), resulting in value'. The local variables at <n> and
   825      conversion (3.8.3), resulting in value'. The local variables at <n> and
   823      <n> + 1 are set to value'.
   826      <n> + 1 are set to value'.
   824 
   827 
   825      Notes
   828      Notes
   826      Each of the dstore_<n> instructions is the same as dstore with an index
   829      Each of the dstore_<n> instructions is the same as dstore with an index
   827      of <n>, except that the operand <n> is implicit."
   830      of <n>, except that the operand <n> is implicit."
   838     self dstore: 3.
   841     self dstore: 3.
   839 
   842 
   840     "
   843     "
   841      Description
   844      Description
   842      Both <n> and <n> + 1 must be indices into the local variable array of the
   845      Both <n> and <n> + 1 must be indices into the local variable array of the
   843      current frame (§3.6). The value on the top of the operand stack must be of
   846      current frame (3.6). The value on the top of the operand stack must be of
   844      type double. It is popped from the operand stack and undergoes value set
   847      type double. It is popped from the operand stack and undergoes value set
   845      conversion (§3.8.3), resulting in value'. The local variables at <n> and
   848      conversion (3.8.3), resulting in value'. The local variables at <n> and
   846      <n> + 1 are set to value'.
   849      <n> + 1 are set to value'.
   847 
   850 
   848      Notes
   851      Notes
   849      Each of the dstore_<n> instructions is the same as dstore with an index
   852      Each of the dstore_<n> instructions is the same as dstore with an index
   850      of <n>, except that the operand <n> is implicit."
   853      of <n>, except that the operand <n> is implicit."
  1111     
  1114     
  1112     ^ self subclassResponsibility
  1115     ^ self subclassResponsibility
  1113     "
  1116     "
  1114      Description
  1117      Description
  1115      The index is an unsigned byte that must be an index into the local
  1118      The index is an unsigned byte that must be an index into the local
  1116      variable array of the current frame (§3.6). The value on the top of
  1119      variable array of the current frame (3.6). The value on the top of
  1117      the operand stack must be of type float. It is popped from the operand
  1120      the operand stack must be of type float. It is popped from the operand
  1118      stack and undergoes value set conversion (§3.8.3), resulting in value'.
  1121      stack and undergoes value set conversion (3.8.3), resulting in value'.
  1119      The value of the local variable at index is set to value'.
  1122      The value of the local variable at index is set to value'.
  1120 
  1123 
  1121      Notes
  1124      Notes
  1122      The fstore opcode can be used in conjunction with the wide instruction
  1125      The fstore opcode can be used in conjunction with the wide instruction
  1123          to access a local variable using a two-byte unsigned index."
  1126          to access a local variable using a two-byte unsigned index."
  1134     self fstore: 0.
  1137     self fstore: 0.
  1135 
  1138 
  1136     "
  1139     "
  1137      Description
  1140      Description
  1138      The index is an unsigned byte that must be an index into the local
  1141      The index is an unsigned byte that must be an index into the local
  1139      variable array of the current frame (§3.6). The value on the top of
  1142      variable array of the current frame (3.6). The value on the top of
  1140      the operand stack must be of type float. It is popped from the operand
  1143      the operand stack must be of type float. It is popped from the operand
  1141      stack and undergoes value set conversion (§3.8.3), resulting in value'.
  1144      stack and undergoes value set conversion (3.8.3), resulting in value'.
  1142      The value of the local variable at index is set to value'.
  1145      The value of the local variable at index is set to value'.
  1143 
  1146 
  1144      Notes
  1147      Notes
  1145      The fstore opcode can be used in conjunction with the wide instruction
  1148      The fstore opcode can be used in conjunction with the wide instruction
  1146      to access a local variable using a two-byte unsigned index."
  1149      to access a local variable using a two-byte unsigned index."
  1157     self fstore: 1.
  1160     self fstore: 1.
  1158 
  1161 
  1159     "
  1162     "
  1160      Description
  1163      Description
  1161      The index is an unsigned byte that must be an index into the local
  1164      The index is an unsigned byte that must be an index into the local
  1162      variable array of the current frame (§3.6). The value on the top of
  1165      variable array of the current frame (3.6). The value on the top of
  1163      the operand stack must be of type float. It is popped from the operand
  1166      the operand stack must be of type float. It is popped from the operand
  1164      stack and undergoes value set conversion (§3.8.3), resulting in value'.
  1167      stack and undergoes value set conversion (3.8.3), resulting in value'.
  1165      The value of the local variable at index is set to value'.
  1168      The value of the local variable at index is set to value'.
  1166 
  1169 
  1167      Notes
  1170      Notes
  1168      The fstore opcode can be used in conjunction with the wide instruction
  1171      The fstore opcode can be used in conjunction with the wide instruction
  1169      to access a local variable using a two-byte unsigned index."
  1172      to access a local variable using a two-byte unsigned index."
  1180     self fstore: 2.
  1183     self fstore: 2.
  1181 
  1184 
  1182     "
  1185     "
  1183      Description
  1186      Description
  1184      The index is an unsigned byte that must be an index into the local
  1187      The index is an unsigned byte that must be an index into the local
  1185      variable array of the current frame (§3.6). The value on the top of
  1188      variable array of the current frame (3.6). The value on the top of
  1186      the operand stack must be of type float. It is popped from the operand
  1189      the operand stack must be of type float. It is popped from the operand
  1187      stack and undergoes value set conversion (§3.8.3), resulting in value'.
  1190      stack and undergoes value set conversion (3.8.3), resulting in value'.
  1188      The value of the local variable at index is set to value'.
  1191      The value of the local variable at index is set to value'.
  1189 
  1192 
  1190      Notes
  1193      Notes
  1191      The fstore opcode can be used in conjunction with the wide instruction
  1194      The fstore opcode can be used in conjunction with the wide instruction
  1192      to access a local variable using a two-byte unsigned index."
  1195      to access a local variable using a two-byte unsigned index."
  1203     self fstore: 3.
  1206     self fstore: 3.
  1204 
  1207 
  1205     "
  1208     "
  1206      Description
  1209      Description
  1207      The index is an unsigned byte that must be an index into the local
  1210      The index is an unsigned byte that must be an index into the local
  1208      variable array of the current frame (§3.6). The value on the top of
  1211      variable array of the current frame (3.6). The value on the top of
  1209      the operand stack must be of type float. It is popped from the operand
  1212      the operand stack must be of type float. It is popped from the operand
  1210      stack and undergoes value set conversion (§3.8.3), resulting in value'.
  1213      stack and undergoes value set conversion (3.8.3), resulting in value'.
  1211      The value of the local variable at index is set to value'.
  1214      The value of the local variable at index is set to value'.
  1212 
  1215 
  1213      Notes
  1216      Notes
  1214      The fstore opcode can be used in conjunction with the wide instruction
  1217      The fstore opcode can be used in conjunction with the wide instruction
  1215      to access a local variable using a two-byte unsigned index."
  1218      to access a local variable using a two-byte unsigned index."
  1930     ^ self subclassResponsibility.
  1933     ^ self subclassResponsibility.
  1931 
  1934 
  1932     "
  1935     "
  1933      Description
  1936      Description
  1934      Both <n> and <n> + 1 must be indices into the local variable array of the
  1937      Both <n> and <n> + 1 must be indices into the local variable array of the
  1935      current frame (§3.6). The local variable at <n> must contain a long. The
  1938      current frame (3.6). The local variable at <n> must contain a long. The
  1936      value of the local variable at <n> is pushed onto the operand stack.
  1939      value of the local variable at <n> is pushed onto the operand stack.
  1937 
  1940 
  1938      Notes
  1941      Notes
  1939      Each of the lload_<n> instructions is the same as lload with an index
  1942      Each of the lload_<n> instructions is the same as lload with an index
  1940      of <n>, except that the operand <n> is implicit."
  1943      of <n>, except that the operand <n> is implicit."
  1951     self lload: 0.
  1954     self lload: 0.
  1952 
  1955 
  1953 "
  1956 "
  1954 Description
  1957 Description
  1955 Both <n> and <n> + 1 must be indices into the local variable array of the 
  1958 Both <n> and <n> + 1 must be indices into the local variable array of the 
  1956 current frame (§3.6). The local variable at <n> must contain a long. The 
  1959 current frame (3.6). The local variable at <n> must contain a long. The 
  1957 value of the local variable at <n> is pushed onto the operand stack.
  1960 value of the local variable at <n> is pushed onto the operand stack.
  1958 
  1961 
  1959 Notes
  1962 Notes
  1960 Each of the lload_<n> instructions is the same as lload with an index 
  1963 Each of the lload_<n> instructions is the same as lload with an index 
  1961 of <n>, except that the operand <n> is implicit.
  1964 of <n>, except that the operand <n> is implicit.
  2066     self lstore: 0.
  2069     self lstore: 0.
  2067 
  2070 
  2068     "
  2071     "
  2069      Description
  2072      Description
  2070      Both <n> and <n> + 1 must be indices into the local variable array of the
  2073      Both <n> and <n> + 1 must be indices into the local variable array of the
  2071      current frame (§3.6). The value on the top of the operand stack must be
  2074      current frame (3.6). The value on the top of the operand stack must be
  2072      of type long. It is popped from the operand stack, and the local variables
  2075      of type long. It is popped from the operand stack, and the local variables
  2073      at <n> and <n> + 1 are set to value.
  2076      at <n> and <n> + 1 are set to value.
  2074 
  2077 
  2075      Notes
  2078      Notes
  2076      Each of the lstore_<n> instructions is the same as lstore with an index
  2079      Each of the lstore_<n> instructions is the same as lstore with an index
  2087     self lstore: 1.
  2090     self lstore: 1.
  2088 
  2091 
  2089     "
  2092     "
  2090      Description
  2093      Description
  2091      Both <n> and <n> + 1 must be indices into the local variable array of the
  2094      Both <n> and <n> + 1 must be indices into the local variable array of the
  2092      current frame (§3.6). The value on the top of the operand stack must be
  2095      current frame (3.6). The value on the top of the operand stack must be
  2093      of type long. It is popped from the operand stack, and the local variables
  2096      of type long. It is popped from the operand stack, and the local variables
  2094      at <n> and <n> + 1 are set to value.
  2097      at <n> and <n> + 1 are set to value.
  2095 
  2098 
  2096      Notes
  2099      Notes
  2097      Each of the lstore_<n> instructions is the same as lstore with an index
  2100      Each of the lstore_<n> instructions is the same as lstore with an index
  2108     self lstore: 2.
  2111     self lstore: 2.
  2109 
  2112 
  2110     "
  2113     "
  2111      Description
  2114      Description
  2112      Both <n> and <n> + 1 must be indices into the local variable array of the
  2115      Both <n> and <n> + 1 must be indices into the local variable array of the
  2113      current frame (§3.6). The value on the top of the operand stack must be
  2116      current frame (3.6). The value on the top of the operand stack must be
  2114      of type long. It is popped from the operand stack, and the local variables
  2117      of type long. It is popped from the operand stack, and the local variables
  2115      at <n> and <n> + 1 are set to value.
  2118      at <n> and <n> + 1 are set to value.
  2116 
  2119 
  2117      Notes
  2120      Notes
  2118      Each of the lstore_<n> instructions is the same as lstore with an index
  2121      Each of the lstore_<n> instructions is the same as lstore with an index
  2129     self lstore: 3.
  2132     self lstore: 3.
  2130 
  2133 
  2131     "
  2134     "
  2132      Description
  2135      Description
  2133      Both <n> and <n> + 1 must be indices into the local variable array of the
  2136      Both <n> and <n> + 1 must be indices into the local variable array of the
  2134      current frame (§3.6). The value on the top of the operand stack must be
  2137      current frame (3.6). The value on the top of the operand stack must be
  2135      of type long. It is popped from the operand stack, and the local variables
  2138      of type long. It is popped from the operand stack, and the local variables
  2136      at <n> and <n> + 1 are set to value.
  2139      at <n> and <n> + 1 are set to value.
  2137 
  2140 
  2138      Notes
  2141      Notes
  2139      Each of the lstore_<n> instructions is the same as lstore with an index
  2142      Each of the lstore_<n> instructions is the same as lstore with an index
  2577 ! !
  2580 ! !
  2578 
  2581 
  2579 !JavaByteCodeProcessor class methodsFor:'documentation'!
  2582 !JavaByteCodeProcessor class methodsFor:'documentation'!
  2580 
  2583 
  2581 version
  2584 version
  2582     ^ '$Header: /cvs/stx/stx/libjava/JavaByteCodeProcessor.st,v 1.5 2013-02-25 11:15:31 vrany Exp $'
  2585     ^ '$Header: /cvs/stx/stx/libjava/JavaByteCodeProcessor.st,v 1.6 2013-09-06 00:41:14 vrany Exp $'
  2583 !
  2586 !
  2584 
  2587 
  2585 version_CVS
  2588 version_CVS
  2586     ^ '$Header$'
  2589     ^ '$Header: /cvs/stx/stx/libjava/JavaByteCodeProcessor.st,v 1.6 2013-09-06 00:41:14 vrany Exp $'
  2587 !
  2590 !
  2588 
  2591 
  2589 version_HG
  2592 version_HG
  2590 
  2593 
  2591     ^ '$Changeset: <not expanded> $'
  2594     ^ '$Changeset: <not expanded> $'
  2592 !
  2595 !
  2593 
  2596 
  2594 version_SVN
  2597 version_SVN
  2595     ^ '§Id§'
  2598     ^ 'Id'
  2596 ! !
  2599 ! !
  2597 
  2600 
  2598 
  2601 
  2599 JavaByteCodeProcessor initialize!
  2602 JavaByteCodeProcessor initialize!