annotate src/share/vm/interpreter/bytecodes.cpp @ 1721:413ad0331a0c

6977924: Changes for 6975078 produce build error with certain gcc versions Summary: The changes introduced for 6975078 assign badHeapOopVal to the _allocation field in the ResourceObj class. In 32 bit linux builds with certain versions of gcc this assignment will be flagged as an error while compiling allocation.cpp. In 32 bit builds the constant value badHeapOopVal (which is cast to an intptr_t) is negative. The _allocation field is typed as an unsigned intptr_t and gcc catches this as an error. Reviewed-by: jcoomes, ysr, phh
author johnc
date Wed, 18 Aug 2010 10:59:06 -0700
parents 136b78722a08
children f95d63e2154a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
1579
jrose
parents: 1552 1570
diff changeset
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1527
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1527
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1527
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 #include "incls/_precompiled.incl"
a61af66fc99e Initial load
duke
parents:
diff changeset
26 #include "incls/_bytecodes.cpp.incl"
a61af66fc99e Initial load
duke
parents:
diff changeset
27
a61af66fc99e Initial load
duke
parents:
diff changeset
28
1526
daf617c34be6 6953588: hotspot\src\share\vm\interpreter\bytecodes.cpp doesn't compile with VS2010 on AMD64
prr
parents: 1135
diff changeset
29 #if defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER < 1600))
0
a61af66fc99e Initial load
duke
parents:
diff changeset
30 // Windows AMD64 Compiler Hangs compiling this file
a61af66fc99e Initial load
duke
parents:
diff changeset
31 // unless optimization is off
a61af66fc99e Initial load
duke
parents:
diff changeset
32 #ifdef _M_AMD64
a61af66fc99e Initial load
duke
parents:
diff changeset
33 #pragma optimize ("", off)
a61af66fc99e Initial load
duke
parents:
diff changeset
34 #endif
1526
daf617c34be6 6953588: hotspot\src\share\vm\interpreter\bytecodes.cpp doesn't compile with VS2010 on AMD64
prr
parents: 1135
diff changeset
35 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
36
a61af66fc99e Initial load
duke
parents:
diff changeset
37
a61af66fc99e Initial load
duke
parents:
diff changeset
38 bool Bytecodes::_is_initialized = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
39 const char* Bytecodes::_name [Bytecodes::number_of_codes];
a61af66fc99e Initial load
duke
parents:
diff changeset
40 BasicType Bytecodes::_result_type [Bytecodes::number_of_codes];
a61af66fc99e Initial load
duke
parents:
diff changeset
41 s_char Bytecodes::_depth [Bytecodes::number_of_codes];
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
42 u_char Bytecodes::_lengths [Bytecodes::number_of_codes];
0
a61af66fc99e Initial load
duke
parents:
diff changeset
43 Bytecodes::Code Bytecodes::_java_code [Bytecodes::number_of_codes];
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
44 u_short Bytecodes::_flags [(1<<BitsPerByte)*2];
0
a61af66fc99e Initial load
duke
parents:
diff changeset
45
a61af66fc99e Initial load
duke
parents:
diff changeset
46
a61af66fc99e Initial load
duke
parents:
diff changeset
47 Bytecodes::Code Bytecodes::code_at(methodOop method, int bci) {
a61af66fc99e Initial load
duke
parents:
diff changeset
48 return code_at(method->bcp_from(bci), method);
a61af66fc99e Initial load
duke
parents:
diff changeset
49 }
a61af66fc99e Initial load
duke
parents:
diff changeset
50
a61af66fc99e Initial load
duke
parents:
diff changeset
51 Bytecodes::Code Bytecodes::non_breakpoint_code_at(address bcp, methodOop method) {
a61af66fc99e Initial load
duke
parents:
diff changeset
52 if (method == NULL) method = methodOopDesc::method_from_bcp(bcp);
a61af66fc99e Initial load
duke
parents:
diff changeset
53 return method->orig_bytecode_at(method->bci_from(bcp));
a61af66fc99e Initial load
duke
parents:
diff changeset
54 }
a61af66fc99e Initial load
duke
parents:
diff changeset
55
413
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
56 int Bytecodes::special_length_at(address bcp, address end) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
57 Code code = code_at(bcp);
a61af66fc99e Initial load
duke
parents:
diff changeset
58 switch (code) {
a61af66fc99e Initial load
duke
parents:
diff changeset
59 case _wide:
413
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
60 if (end != NULL && bcp + 1 >= end) {
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
61 return -1; // don't read past end of code buffer
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
62 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
63 return wide_length_for(cast(*(bcp + 1)));
a61af66fc99e Initial load
duke
parents:
diff changeset
64 case _tableswitch:
a61af66fc99e Initial load
duke
parents:
diff changeset
65 { address aligned_bcp = (address)round_to((intptr_t)bcp + 1, jintSize);
413
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
66 if (end != NULL && aligned_bcp + 3*jintSize >= end) {
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
67 return -1; // don't read past end of code buffer
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
68 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
69 jlong lo = (jint)Bytes::get_Java_u4(aligned_bcp + 1*jintSize);
a61af66fc99e Initial load
duke
parents:
diff changeset
70 jlong hi = (jint)Bytes::get_Java_u4(aligned_bcp + 2*jintSize);
a61af66fc99e Initial load
duke
parents:
diff changeset
71 jlong len = (aligned_bcp - bcp) + (3 + hi - lo + 1)*jintSize;
a61af66fc99e Initial load
duke
parents:
diff changeset
72 // only return len if it can be represented as a positive int;
a61af66fc99e Initial load
duke
parents:
diff changeset
73 // return -1 otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
74 return (len > 0 && len == (int)len) ? len : -1;
a61af66fc99e Initial load
duke
parents:
diff changeset
75 }
a61af66fc99e Initial load
duke
parents:
diff changeset
76
a61af66fc99e Initial load
duke
parents:
diff changeset
77 case _lookupswitch: // fall through
a61af66fc99e Initial load
duke
parents:
diff changeset
78 case _fast_binaryswitch: // fall through
a61af66fc99e Initial load
duke
parents:
diff changeset
79 case _fast_linearswitch:
a61af66fc99e Initial load
duke
parents:
diff changeset
80 { address aligned_bcp = (address)round_to((intptr_t)bcp + 1, jintSize);
413
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
81 if (end != NULL && aligned_bcp + 2*jintSize >= end) {
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
82 return -1; // don't read past end of code buffer
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
83 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
84 jlong npairs = (jint)Bytes::get_Java_u4(aligned_bcp + jintSize);
a61af66fc99e Initial load
duke
parents:
diff changeset
85 jlong len = (aligned_bcp - bcp) + (2 + 2*npairs)*jintSize;
a61af66fc99e Initial load
duke
parents:
diff changeset
86 // only return len if it can be represented as a positive int;
a61af66fc99e Initial load
duke
parents:
diff changeset
87 // return -1 otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
88 return (len > 0 && len == (int)len) ? len : -1;
a61af66fc99e Initial load
duke
parents:
diff changeset
89 }
a61af66fc99e Initial load
duke
parents:
diff changeset
90 }
1570
de91a2f25c7e 6956164: nightly regressions from 6939207
jrose
parents: 1565
diff changeset
91 // Note: Length functions must return <=0 for invalid bytecodes.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
92 return 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
93 }
a61af66fc99e Initial load
duke
parents:
diff changeset
94
a61af66fc99e Initial load
duke
parents:
diff changeset
95 // At a breakpoint instruction, this returns the breakpoint's length,
a61af66fc99e Initial load
duke
parents:
diff changeset
96 // otherwise, it's the same as special_length_at(). This is used by
a61af66fc99e Initial load
duke
parents:
diff changeset
97 // the RawByteCodeStream, which wants to see the actual bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
98 // values (including breakpoint). RawByteCodeStream is used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
99 // verifier when reading in bytecode to verify. Other mechanisms that
a61af66fc99e Initial load
duke
parents:
diff changeset
100 // run at runtime (such as generateOopMaps) need to iterate over the code
a61af66fc99e Initial load
duke
parents:
diff changeset
101 // and don't expect to see breakpoints: they want to see the instruction
413
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
102 // which was replaced so that they can get the correct length and find
0
a61af66fc99e Initial load
duke
parents:
diff changeset
103 // the next bytecode.
413
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
104 //
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
105 // 'end' indicates the end of the code buffer, which we should not try to read
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
106 // past.
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
107 int Bytecodes::raw_special_length_at(address bcp, address end) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
108 Code code = code_or_bp_at(bcp);
a61af66fc99e Initial load
duke
parents:
diff changeset
109 if (code == _breakpoint) {
a61af66fc99e Initial load
duke
parents:
diff changeset
110 return 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
111 } else {
413
c7ec737733a6 6756528: Bytecodes::special_length_at reads past end of code buffer
kamg
parents: 0
diff changeset
112 return special_length_at(bcp, end);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
113 }
a61af66fc99e Initial load
duke
parents:
diff changeset
114 }
a61af66fc99e Initial load
duke
parents:
diff changeset
115
a61af66fc99e Initial load
duke
parents:
diff changeset
116
a61af66fc99e Initial load
duke
parents:
diff changeset
117
a61af66fc99e Initial load
duke
parents:
diff changeset
118 void Bytecodes::def(Code code, const char* name, const char* format, const char* wide_format, BasicType result_type, int depth, bool can_trap) {
a61af66fc99e Initial load
duke
parents:
diff changeset
119 def(code, name, format, wide_format, result_type, depth, can_trap, code);
a61af66fc99e Initial load
duke
parents:
diff changeset
120 }
a61af66fc99e Initial load
duke
parents:
diff changeset
121
a61af66fc99e Initial load
duke
parents:
diff changeset
122
a61af66fc99e Initial load
duke
parents:
diff changeset
123 void Bytecodes::def(Code code, const char* name, const char* format, const char* wide_format, BasicType result_type, int depth, bool can_trap, Code java_code) {
a61af66fc99e Initial load
duke
parents:
diff changeset
124 assert(wide_format == NULL || format != NULL, "short form must exist if there's a wide form");
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
125 int len = (format != NULL ? (int) strlen(format) : 0);
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
126 int wlen = (wide_format != NULL ? (int) strlen(wide_format) : 0);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
127 _name [code] = name;
a61af66fc99e Initial load
duke
parents:
diff changeset
128 _result_type [code] = result_type;
a61af66fc99e Initial load
duke
parents:
diff changeset
129 _depth [code] = depth;
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
130 _lengths [code] = (wlen << 4) | (len & 0xF);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
131 _java_code [code] = java_code;
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
132 int bc_flags = 0;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
133 if (can_trap) bc_flags |= _bc_can_trap;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
134 if (java_code != code) bc_flags |= _bc_can_rewrite;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
135 _flags[(u1)code+0*(1<<BitsPerByte)] = compute_flags(format, bc_flags);
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
136 _flags[(u1)code+1*(1<<BitsPerByte)] = compute_flags(wide_format, bc_flags);
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
137 assert(is_defined(code) == (format != NULL), "");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
138 assert(wide_is_defined(code) == (wide_format != NULL), "");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
139 assert(length_for(code) == len, "");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
140 assert(wide_length_for(code) == wlen, "");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
141 }
a61af66fc99e Initial load
duke
parents:
diff changeset
142
a61af66fc99e Initial load
duke
parents:
diff changeset
143
a61af66fc99e Initial load
duke
parents:
diff changeset
144 // Format strings interpretation:
a61af66fc99e Initial load
duke
parents:
diff changeset
145 //
a61af66fc99e Initial load
duke
parents:
diff changeset
146 // b: bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
147 // c: signed constant, Java byte-ordering
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
148 // i: unsigned local index, Java byte-ordering (I = native byte ordering)
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
149 // j: unsigned CP cache index, Java byte-ordering (J = native byte ordering)
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
150 // k: unsigned CP index, Java byte-ordering
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
151 // o: branch offset, Java byte-ordering
0
a61af66fc99e Initial load
duke
parents:
diff changeset
152 // _: unused/ignored
a61af66fc99e Initial load
duke
parents:
diff changeset
153 // w: wide bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
154 //
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
155 // Note: The format strings are used for 2 purposes:
0
a61af66fc99e Initial load
duke
parents:
diff changeset
156 // 1. to specify the length of the bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
157 // (= number of characters in format string)
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
158 // 2. to derive bytecode format flags (_fmt_has_k, etc.)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
159 //
a61af66fc99e Initial load
duke
parents:
diff changeset
160 // Note: For bytecodes with variable length, the format string is the empty string.
a61af66fc99e Initial load
duke
parents:
diff changeset
161
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
162 int Bytecodes::compute_flags(const char* format, int more_flags) {
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
163 if (format == NULL) return 0; // not even more_flags
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
164 int flags = more_flags;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
165 const char* fp = format;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
166 switch (*fp) {
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
167 case '\0':
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
168 flags |= _fmt_not_simple; // but variable
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
169 break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
170 case 'b':
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
171 flags |= _fmt_not_variable; // but simple
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
172 ++fp; // skip 'b'
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
173 break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
174 case 'w':
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
175 flags |= _fmt_not_variable | _fmt_not_simple;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
176 ++fp; // skip 'w'
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
177 guarantee(*fp == 'b', "wide format must start with 'wb'");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
178 ++fp; // skip 'b'
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
179 break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
180 }
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
181
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
182 int has_nbo = 0, has_jbo = 0, has_size = 0;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
183 for (;;) {
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
184 int this_flag = 0;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
185 char fc = *fp++;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
186 switch (fc) {
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
187 case '\0': // end of string
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
188 assert(flags == (jchar)flags, "change _format_flags");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
189 return flags;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
190
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
191 case '_': continue; // ignore these
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
192
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
193 case 'j': this_flag = _fmt_has_j; has_jbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
194 case 'k': this_flag = _fmt_has_k; has_jbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
195 case 'i': this_flag = _fmt_has_i; has_jbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
196 case 'c': this_flag = _fmt_has_c; has_jbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
197 case 'o': this_flag = _fmt_has_o; has_jbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
198
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
199 // uppercase versions mark native byte order (from Rewriter)
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
200 // actually, only the 'J' case happens currently
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
201 case 'J': this_flag = _fmt_has_j; has_nbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
202 case 'K': this_flag = _fmt_has_k; has_nbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
203 case 'I': this_flag = _fmt_has_i; has_nbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
204 case 'C': this_flag = _fmt_has_c; has_nbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
205 case 'O': this_flag = _fmt_has_o; has_nbo = 1; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
206 default: guarantee(false, "bad char in format");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
207 }
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
208
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
209 flags |= this_flag;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
210
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
211 guarantee(!(has_jbo && has_nbo), "mixed byte orders in format");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
212 if (has_nbo)
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
213 flags |= _fmt_has_nbo;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
214
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
215 int this_size = 1;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
216 if (*fp == fc) {
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
217 // advance beyond run of the same characters
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
218 this_size = 2;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
219 while (*++fp == fc) this_size++;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
220 switch (this_size) {
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
221 case 2: flags |= _fmt_has_u2; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
222 case 4: flags |= _fmt_has_u4; break;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
223 default: guarantee(false, "bad rep count in format");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
224 }
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
225 }
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
226 guarantee(has_size == 0 || // no field yet
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
227 this_size == has_size || // same size
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
228 this_size < has_size && *fp == '\0', // last field can be short
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
229 "mixed field sizes in format");
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
230 has_size = this_size;
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
231 }
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
232 }
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
233
0
a61af66fc99e Initial load
duke
parents:
diff changeset
234 void Bytecodes::initialize() {
a61af66fc99e Initial load
duke
parents:
diff changeset
235 if (_is_initialized) return;
a61af66fc99e Initial load
duke
parents:
diff changeset
236 assert(number_of_codes <= 256, "too many bytecodes");
a61af66fc99e Initial load
duke
parents:
diff changeset
237
a61af66fc99e Initial load
duke
parents:
diff changeset
238 // initialize bytecode tables - didn't use static array initializers
a61af66fc99e Initial load
duke
parents:
diff changeset
239 // (such as {}) so we can do additional consistency checks and init-
a61af66fc99e Initial load
duke
parents:
diff changeset
240 // code is independent of actual bytecode numbering.
a61af66fc99e Initial load
duke
parents:
diff changeset
241 //
a61af66fc99e Initial load
duke
parents:
diff changeset
242 // Note 1: NULL for the format string means the bytecode doesn't exist
a61af66fc99e Initial load
duke
parents:
diff changeset
243 // in that form.
a61af66fc99e Initial load
duke
parents:
diff changeset
244 //
a61af66fc99e Initial load
duke
parents:
diff changeset
245 // Note 2: The result type is T_ILLEGAL for bytecodes where the top of stack
a61af66fc99e Initial load
duke
parents:
diff changeset
246 // type after execution is not only determined by the bytecode itself.
a61af66fc99e Initial load
duke
parents:
diff changeset
247
a61af66fc99e Initial load
duke
parents:
diff changeset
248 // Java bytecodes
a61af66fc99e Initial load
duke
parents:
diff changeset
249 // bytecode bytecode name format wide f. result tp stk traps
a61af66fc99e Initial load
duke
parents:
diff changeset
250 def(_nop , "nop" , "b" , NULL , T_VOID , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
251 def(_aconst_null , "aconst_null" , "b" , NULL , T_OBJECT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
252 def(_iconst_m1 , "iconst_m1" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
253 def(_iconst_0 , "iconst_0" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
254 def(_iconst_1 , "iconst_1" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
255 def(_iconst_2 , "iconst_2" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
256 def(_iconst_3 , "iconst_3" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
257 def(_iconst_4 , "iconst_4" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
258 def(_iconst_5 , "iconst_5" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
259 def(_lconst_0 , "lconst_0" , "b" , NULL , T_LONG , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
260 def(_lconst_1 , "lconst_1" , "b" , NULL , T_LONG , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
261 def(_fconst_0 , "fconst_0" , "b" , NULL , T_FLOAT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
262 def(_fconst_1 , "fconst_1" , "b" , NULL , T_FLOAT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
263 def(_fconst_2 , "fconst_2" , "b" , NULL , T_FLOAT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
264 def(_dconst_0 , "dconst_0" , "b" , NULL , T_DOUBLE , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
265 def(_dconst_1 , "dconst_1" , "b" , NULL , T_DOUBLE , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
266 def(_bipush , "bipush" , "bc" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
267 def(_sipush , "sipush" , "bcc" , NULL , T_INT , 1, false);
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
268 def(_ldc , "ldc" , "bk" , NULL , T_ILLEGAL, 1, true );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
269 def(_ldc_w , "ldc_w" , "bkk" , NULL , T_ILLEGAL, 1, true );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
270 def(_ldc2_w , "ldc2_w" , "bkk" , NULL , T_ILLEGAL, 2, true );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
271 def(_iload , "iload" , "bi" , "wbii" , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
272 def(_lload , "lload" , "bi" , "wbii" , T_LONG , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
273 def(_fload , "fload" , "bi" , "wbii" , T_FLOAT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
274 def(_dload , "dload" , "bi" , "wbii" , T_DOUBLE , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
275 def(_aload , "aload" , "bi" , "wbii" , T_OBJECT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
276 def(_iload_0 , "iload_0" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
277 def(_iload_1 , "iload_1" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
278 def(_iload_2 , "iload_2" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
279 def(_iload_3 , "iload_3" , "b" , NULL , T_INT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
280 def(_lload_0 , "lload_0" , "b" , NULL , T_LONG , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
281 def(_lload_1 , "lload_1" , "b" , NULL , T_LONG , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
282 def(_lload_2 , "lload_2" , "b" , NULL , T_LONG , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
283 def(_lload_3 , "lload_3" , "b" , NULL , T_LONG , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
284 def(_fload_0 , "fload_0" , "b" , NULL , T_FLOAT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
285 def(_fload_1 , "fload_1" , "b" , NULL , T_FLOAT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
286 def(_fload_2 , "fload_2" , "b" , NULL , T_FLOAT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
287 def(_fload_3 , "fload_3" , "b" , NULL , T_FLOAT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
288 def(_dload_0 , "dload_0" , "b" , NULL , T_DOUBLE , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
289 def(_dload_1 , "dload_1" , "b" , NULL , T_DOUBLE , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
290 def(_dload_2 , "dload_2" , "b" , NULL , T_DOUBLE , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
291 def(_dload_3 , "dload_3" , "b" , NULL , T_DOUBLE , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
292 def(_aload_0 , "aload_0" , "b" , NULL , T_OBJECT , 1, true ); // rewriting in interpreter
a61af66fc99e Initial load
duke
parents:
diff changeset
293 def(_aload_1 , "aload_1" , "b" , NULL , T_OBJECT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
294 def(_aload_2 , "aload_2" , "b" , NULL , T_OBJECT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
295 def(_aload_3 , "aload_3" , "b" , NULL , T_OBJECT , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
296 def(_iaload , "iaload" , "b" , NULL , T_INT , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
297 def(_laload , "laload" , "b" , NULL , T_LONG , 0, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
298 def(_faload , "faload" , "b" , NULL , T_FLOAT , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
299 def(_daload , "daload" , "b" , NULL , T_DOUBLE , 0, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
300 def(_aaload , "aaload" , "b" , NULL , T_OBJECT , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
301 def(_baload , "baload" , "b" , NULL , T_INT , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
302 def(_caload , "caload" , "b" , NULL , T_INT , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
303 def(_saload , "saload" , "b" , NULL , T_INT , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
304 def(_istore , "istore" , "bi" , "wbii" , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
305 def(_lstore , "lstore" , "bi" , "wbii" , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
306 def(_fstore , "fstore" , "bi" , "wbii" , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
307 def(_dstore , "dstore" , "bi" , "wbii" , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
308 def(_astore , "astore" , "bi" , "wbii" , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
309 def(_istore_0 , "istore_0" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
310 def(_istore_1 , "istore_1" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
311 def(_istore_2 , "istore_2" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
312 def(_istore_3 , "istore_3" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
313 def(_lstore_0 , "lstore_0" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
314 def(_lstore_1 , "lstore_1" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
315 def(_lstore_2 , "lstore_2" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
316 def(_lstore_3 , "lstore_3" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
317 def(_fstore_0 , "fstore_0" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
318 def(_fstore_1 , "fstore_1" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
319 def(_fstore_2 , "fstore_2" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
320 def(_fstore_3 , "fstore_3" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
321 def(_dstore_0 , "dstore_0" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
322 def(_dstore_1 , "dstore_1" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
323 def(_dstore_2 , "dstore_2" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
324 def(_dstore_3 , "dstore_3" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
325 def(_astore_0 , "astore_0" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
326 def(_astore_1 , "astore_1" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
327 def(_astore_2 , "astore_2" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
328 def(_astore_3 , "astore_3" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
329 def(_iastore , "iastore" , "b" , NULL , T_VOID , -3, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
330 def(_lastore , "lastore" , "b" , NULL , T_VOID , -4, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
331 def(_fastore , "fastore" , "b" , NULL , T_VOID , -3, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
332 def(_dastore , "dastore" , "b" , NULL , T_VOID , -4, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
333 def(_aastore , "aastore" , "b" , NULL , T_VOID , -3, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
334 def(_bastore , "bastore" , "b" , NULL , T_VOID , -3, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
335 def(_castore , "castore" , "b" , NULL , T_VOID , -3, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
336 def(_sastore , "sastore" , "b" , NULL , T_VOID , -3, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
337 def(_pop , "pop" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
338 def(_pop2 , "pop2" , "b" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
339 def(_dup , "dup" , "b" , NULL , T_VOID , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
340 def(_dup_x1 , "dup_x1" , "b" , NULL , T_VOID , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
341 def(_dup_x2 , "dup_x2" , "b" , NULL , T_VOID , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
342 def(_dup2 , "dup2" , "b" , NULL , T_VOID , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
343 def(_dup2_x1 , "dup2_x1" , "b" , NULL , T_VOID , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
344 def(_dup2_x2 , "dup2_x2" , "b" , NULL , T_VOID , 2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
345 def(_swap , "swap" , "b" , NULL , T_VOID , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
346 def(_iadd , "iadd" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
347 def(_ladd , "ladd" , "b" , NULL , T_LONG , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
348 def(_fadd , "fadd" , "b" , NULL , T_FLOAT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
349 def(_dadd , "dadd" , "b" , NULL , T_DOUBLE , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
350 def(_isub , "isub" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
351 def(_lsub , "lsub" , "b" , NULL , T_LONG , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
352 def(_fsub , "fsub" , "b" , NULL , T_FLOAT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
353 def(_dsub , "dsub" , "b" , NULL , T_DOUBLE , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
354 def(_imul , "imul" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
355 def(_lmul , "lmul" , "b" , NULL , T_LONG , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
356 def(_fmul , "fmul" , "b" , NULL , T_FLOAT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
357 def(_dmul , "dmul" , "b" , NULL , T_DOUBLE , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
358 def(_idiv , "idiv" , "b" , NULL , T_INT , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
359 def(_ldiv , "ldiv" , "b" , NULL , T_LONG , -2, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
360 def(_fdiv , "fdiv" , "b" , NULL , T_FLOAT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
361 def(_ddiv , "ddiv" , "b" , NULL , T_DOUBLE , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
362 def(_irem , "irem" , "b" , NULL , T_INT , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
363 def(_lrem , "lrem" , "b" , NULL , T_LONG , -2, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
364 def(_frem , "frem" , "b" , NULL , T_FLOAT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
365 def(_drem , "drem" , "b" , NULL , T_DOUBLE , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
366 def(_ineg , "ineg" , "b" , NULL , T_INT , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
367 def(_lneg , "lneg" , "b" , NULL , T_LONG , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
368 def(_fneg , "fneg" , "b" , NULL , T_FLOAT , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
369 def(_dneg , "dneg" , "b" , NULL , T_DOUBLE , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
370 def(_ishl , "ishl" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
371 def(_lshl , "lshl" , "b" , NULL , T_LONG , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
372 def(_ishr , "ishr" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
373 def(_lshr , "lshr" , "b" , NULL , T_LONG , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
374 def(_iushr , "iushr" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
375 def(_lushr , "lushr" , "b" , NULL , T_LONG , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
376 def(_iand , "iand" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
377 def(_land , "land" , "b" , NULL , T_LONG , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
378 def(_ior , "ior" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
379 def(_lor , "lor" , "b" , NULL , T_LONG , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
380 def(_ixor , "ixor" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
381 def(_lxor , "lxor" , "b" , NULL , T_LONG , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
382 def(_iinc , "iinc" , "bic" , "wbiicc", T_VOID , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
383 def(_i2l , "i2l" , "b" , NULL , T_LONG , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
384 def(_i2f , "i2f" , "b" , NULL , T_FLOAT , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
385 def(_i2d , "i2d" , "b" , NULL , T_DOUBLE , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
386 def(_l2i , "l2i" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
387 def(_l2f , "l2f" , "b" , NULL , T_FLOAT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
388 def(_l2d , "l2d" , "b" , NULL , T_DOUBLE , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
389 def(_f2i , "f2i" , "b" , NULL , T_INT , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
390 def(_f2l , "f2l" , "b" , NULL , T_LONG , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
391 def(_f2d , "f2d" , "b" , NULL , T_DOUBLE , 1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
392 def(_d2i , "d2i" , "b" , NULL , T_INT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
393 def(_d2l , "d2l" , "b" , NULL , T_LONG , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
394 def(_d2f , "d2f" , "b" , NULL , T_FLOAT , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
395 def(_i2b , "i2b" , "b" , NULL , T_BYTE , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
396 def(_i2c , "i2c" , "b" , NULL , T_CHAR , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
397 def(_i2s , "i2s" , "b" , NULL , T_SHORT , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
398 def(_lcmp , "lcmp" , "b" , NULL , T_VOID , -3, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
399 def(_fcmpl , "fcmpl" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
400 def(_fcmpg , "fcmpg" , "b" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
401 def(_dcmpl , "dcmpl" , "b" , NULL , T_VOID , -3, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
402 def(_dcmpg , "dcmpg" , "b" , NULL , T_VOID , -3, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
403 def(_ifeq , "ifeq" , "boo" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
404 def(_ifne , "ifne" , "boo" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
405 def(_iflt , "iflt" , "boo" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
406 def(_ifge , "ifge" , "boo" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
407 def(_ifgt , "ifgt" , "boo" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
408 def(_ifle , "ifle" , "boo" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
409 def(_if_icmpeq , "if_icmpeq" , "boo" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
410 def(_if_icmpne , "if_icmpne" , "boo" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
411 def(_if_icmplt , "if_icmplt" , "boo" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
412 def(_if_icmpge , "if_icmpge" , "boo" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
413 def(_if_icmpgt , "if_icmpgt" , "boo" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
414 def(_if_icmple , "if_icmple" , "boo" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
415 def(_if_acmpeq , "if_acmpeq" , "boo" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
416 def(_if_acmpne , "if_acmpne" , "boo" , NULL , T_VOID , -2, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
417 def(_goto , "goto" , "boo" , NULL , T_VOID , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
418 def(_jsr , "jsr" , "boo" , NULL , T_INT , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
419 def(_ret , "ret" , "bi" , "wbii" , T_VOID , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
420 def(_tableswitch , "tableswitch" , "" , NULL , T_VOID , -1, false); // may have backward branches
a61af66fc99e Initial load
duke
parents:
diff changeset
421 def(_lookupswitch , "lookupswitch" , "" , NULL , T_VOID , -1, false); // rewriting in interpreter
a61af66fc99e Initial load
duke
parents:
diff changeset
422 def(_ireturn , "ireturn" , "b" , NULL , T_INT , -1, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
423 def(_lreturn , "lreturn" , "b" , NULL , T_LONG , -2, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
424 def(_freturn , "freturn" , "b" , NULL , T_FLOAT , -1, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
425 def(_dreturn , "dreturn" , "b" , NULL , T_DOUBLE , -2, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
426 def(_areturn , "areturn" , "b" , NULL , T_OBJECT , -1, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
427 def(_return , "return" , "b" , NULL , T_VOID , 0, true);
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
428 def(_getstatic , "getstatic" , "bJJ" , NULL , T_ILLEGAL, 1, true );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
429 def(_putstatic , "putstatic" , "bJJ" , NULL , T_ILLEGAL, -1, true );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
430 def(_getfield , "getfield" , "bJJ" , NULL , T_ILLEGAL, 0, true );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
431 def(_putfield , "putfield" , "bJJ" , NULL , T_ILLEGAL, -2, true );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
432 def(_invokevirtual , "invokevirtual" , "bJJ" , NULL , T_ILLEGAL, -1, true);
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
433 def(_invokespecial , "invokespecial" , "bJJ" , NULL , T_ILLEGAL, -1, true);
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
434 def(_invokestatic , "invokestatic" , "bJJ" , NULL , T_ILLEGAL, 0, true);
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
435 def(_invokeinterface , "invokeinterface" , "bJJ__", NULL , T_ILLEGAL, -1, true);
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
436 def(_invokedynamic , "invokedynamic" , "bJJJJ", NULL , T_ILLEGAL, 0, true );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
437 def(_new , "new" , "bkk" , NULL , T_OBJECT , 1, true );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
438 def(_newarray , "newarray" , "bc" , NULL , T_OBJECT , 0, true );
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
439 def(_anewarray , "anewarray" , "bkk" , NULL , T_OBJECT , 0, true );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
440 def(_arraylength , "arraylength" , "b" , NULL , T_VOID , 0, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
441 def(_athrow , "athrow" , "b" , NULL , T_VOID , -1, true );
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
442 def(_checkcast , "checkcast" , "bkk" , NULL , T_OBJECT , 0, true );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
443 def(_instanceof , "instanceof" , "bkk" , NULL , T_INT , 0, true );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
444 def(_monitorenter , "monitorenter" , "b" , NULL , T_VOID , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
445 def(_monitorexit , "monitorexit" , "b" , NULL , T_VOID , -1, true );
a61af66fc99e Initial load
duke
parents:
diff changeset
446 def(_wide , "wide" , "" , NULL , T_VOID , 0, false);
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
447 def(_multianewarray , "multianewarray" , "bkkc" , NULL , T_OBJECT , 1, true );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
448 def(_ifnull , "ifnull" , "boo" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
449 def(_ifnonnull , "ifnonnull" , "boo" , NULL , T_VOID , -1, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
450 def(_goto_w , "goto_w" , "boooo", NULL , T_VOID , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
451 def(_jsr_w , "jsr_w" , "boooo", NULL , T_INT , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
452 def(_breakpoint , "breakpoint" , "" , NULL , T_VOID , 0, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
453
a61af66fc99e Initial load
duke
parents:
diff changeset
454 // JVM bytecodes
a61af66fc99e Initial load
duke
parents:
diff changeset
455 // bytecode bytecode name format wide f. result tp stk traps std code
a61af66fc99e Initial load
duke
parents:
diff changeset
456
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
457 def(_fast_agetfield , "fast_agetfield" , "bJJ" , NULL , T_OBJECT , 0, true , _getfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
458 def(_fast_bgetfield , "fast_bgetfield" , "bJJ" , NULL , T_INT , 0, true , _getfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
459 def(_fast_cgetfield , "fast_cgetfield" , "bJJ" , NULL , T_CHAR , 0, true , _getfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
460 def(_fast_dgetfield , "fast_dgetfield" , "bJJ" , NULL , T_DOUBLE , 0, true , _getfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
461 def(_fast_fgetfield , "fast_fgetfield" , "bJJ" , NULL , T_FLOAT , 0, true , _getfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
462 def(_fast_igetfield , "fast_igetfield" , "bJJ" , NULL , T_INT , 0, true , _getfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
463 def(_fast_lgetfield , "fast_lgetfield" , "bJJ" , NULL , T_LONG , 0, true , _getfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
464 def(_fast_sgetfield , "fast_sgetfield" , "bJJ" , NULL , T_SHORT , 0, true , _getfield );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
465
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
466 def(_fast_aputfield , "fast_aputfield" , "bJJ" , NULL , T_OBJECT , 0, true , _putfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
467 def(_fast_bputfield , "fast_bputfield" , "bJJ" , NULL , T_INT , 0, true , _putfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
468 def(_fast_cputfield , "fast_cputfield" , "bJJ" , NULL , T_CHAR , 0, true , _putfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
469 def(_fast_dputfield , "fast_dputfield" , "bJJ" , NULL , T_DOUBLE , 0, true , _putfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
470 def(_fast_fputfield , "fast_fputfield" , "bJJ" , NULL , T_FLOAT , 0, true , _putfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
471 def(_fast_iputfield , "fast_iputfield" , "bJJ" , NULL , T_INT , 0, true , _putfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
472 def(_fast_lputfield , "fast_lputfield" , "bJJ" , NULL , T_LONG , 0, true , _putfield );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
473 def(_fast_sputfield , "fast_sputfield" , "bJJ" , NULL , T_SHORT , 0, true , _putfield );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
474
a61af66fc99e Initial load
duke
parents:
diff changeset
475 def(_fast_aload_0 , "fast_aload_0" , "b" , NULL , T_OBJECT , 1, true , _aload_0 );
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
476 def(_fast_iaccess_0 , "fast_iaccess_0" , "b_JJ" , NULL , T_INT , 1, true , _aload_0 );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
477 def(_fast_aaccess_0 , "fast_aaccess_0" , "b_JJ" , NULL , T_OBJECT , 1, true , _aload_0 );
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
478 def(_fast_faccess_0 , "fast_faccess_0" , "b_JJ" , NULL , T_OBJECT , 1, true , _aload_0 );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
479
a61af66fc99e Initial load
duke
parents:
diff changeset
480 def(_fast_iload , "fast_iload" , "bi" , NULL , T_INT , 1, false, _iload);
a61af66fc99e Initial load
duke
parents:
diff changeset
481 def(_fast_iload2 , "fast_iload2" , "bi_i" , NULL , T_INT , 2, false, _iload);
a61af66fc99e Initial load
duke
parents:
diff changeset
482 def(_fast_icaload , "fast_icaload" , "bi_" , NULL , T_INT , 0, false, _iload);
a61af66fc99e Initial load
duke
parents:
diff changeset
483
a61af66fc99e Initial load
duke
parents:
diff changeset
484 // Faster method invocation.
1565
ab102d5d923e 6939207: refactor constant pool index processing
jrose
parents: 1490
diff changeset
485 def(_fast_invokevfinal , "fast_invokevfinal" , "bJJ" , NULL , T_ILLEGAL, -1, true, _invokevirtual );
0
a61af66fc99e Initial load
duke
parents:
diff changeset
486
a61af66fc99e Initial load
duke
parents:
diff changeset
487 def(_fast_linearswitch , "fast_linearswitch" , "" , NULL , T_VOID , -1, false, _lookupswitch );
a61af66fc99e Initial load
duke
parents:
diff changeset
488 def(_fast_binaryswitch , "fast_binaryswitch" , "" , NULL , T_VOID , -1, false, _lookupswitch );
a61af66fc99e Initial load
duke
parents:
diff changeset
489
a61af66fc99e Initial load
duke
parents:
diff changeset
490 def(_return_register_finalizer , "return_register_finalizer" , "b" , NULL , T_VOID , 0, true, _return);
a61af66fc99e Initial load
duke
parents:
diff changeset
491
1602
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1579
diff changeset
492 def(_fast_aldc , "fast_aldc" , "bj" , NULL , T_OBJECT, 1, true, _ldc );
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1579
diff changeset
493 def(_fast_aldc_w , "fast_aldc_w" , "bJJ" , NULL , T_OBJECT, 1, true, _ldc_w );
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1579
diff changeset
494
0
a61af66fc99e Initial load
duke
parents:
diff changeset
495 def(_shouldnotreachhere , "_shouldnotreachhere" , "b" , NULL , T_VOID , 0, false);
a61af66fc99e Initial load
duke
parents:
diff changeset
496
a61af66fc99e Initial load
duke
parents:
diff changeset
497 // platform specific JVM bytecodes
a61af66fc99e Initial load
duke
parents:
diff changeset
498 pd_initialize();
a61af66fc99e Initial load
duke
parents:
diff changeset
499
a61af66fc99e Initial load
duke
parents:
diff changeset
500 // compare can_trap information for each bytecode with the
a61af66fc99e Initial load
duke
parents:
diff changeset
501 // can_trap information for the corresponding base bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
502 // (if a rewritten bytecode can trap, so must the base bytecode)
a61af66fc99e Initial load
duke
parents:
diff changeset
503 #ifdef ASSERT
a61af66fc99e Initial load
duke
parents:
diff changeset
504 { for (int i = 0; i < number_of_codes; i++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
505 if (is_defined(i)) {
a61af66fc99e Initial load
duke
parents:
diff changeset
506 Code code = cast(i);
a61af66fc99e Initial load
duke
parents:
diff changeset
507 Code java = java_code(code);
1490
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents: 1135
diff changeset
508 if (can_trap(code) && !can_trap(java))
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents: 1135
diff changeset
509 fatal(err_msg("%s can trap => %s can trap, too", name(code),
f03d0a26bf83 6888954: argument formatting for assert() and friends
jcoomes
parents: 1135
diff changeset
510 name(java)));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
511 }
a61af66fc99e Initial load
duke
parents:
diff changeset
512 }
a61af66fc99e Initial load
duke
parents:
diff changeset
513 }
a61af66fc99e Initial load
duke
parents:
diff changeset
514 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
515
a61af66fc99e Initial load
duke
parents:
diff changeset
516 // initialization successful
a61af66fc99e Initial load
duke
parents:
diff changeset
517 _is_initialized = true;
a61af66fc99e Initial load
duke
parents:
diff changeset
518 }
a61af66fc99e Initial load
duke
parents:
diff changeset
519
a61af66fc99e Initial load
duke
parents:
diff changeset
520
a61af66fc99e Initial load
duke
parents:
diff changeset
521 void bytecodes_init() {
a61af66fc99e Initial load
duke
parents:
diff changeset
522 Bytecodes::initialize();
a61af66fc99e Initial load
duke
parents:
diff changeset
523 }
a61af66fc99e Initial load
duke
parents:
diff changeset
524
a61af66fc99e Initial load
duke
parents:
diff changeset
525 // Restore optimization
a61af66fc99e Initial load
duke
parents:
diff changeset
526 #ifdef _M_AMD64
a61af66fc99e Initial load
duke
parents:
diff changeset
527 #pragma optimize ("", on)
a61af66fc99e Initial load
duke
parents:
diff changeset
528 #endif