changeset 5702 | 201c5cde25bb |
parent 5547 | f4b087cbb361 |
parent 5688 | 9052dc91ea67 |
child 5882 | 6b2aecc4f7d8 |
5685:0e4c848d5c06 | 5702:201c5cde25bb |
---|---|
1 /* |
1 /* |
2 * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
71 |
71 |
72 class TemplateTable: AllStatic { |
72 class TemplateTable: AllStatic { |
73 public: |
73 public: |
74 enum Operation { add, sub, mul, div, rem, _and, _or, _xor, shl, shr, ushr }; |
74 enum Operation { add, sub, mul, div, rem, _and, _or, _xor, shl, shr, ushr }; |
75 enum Condition { equal, not_equal, less, less_equal, greater, greater_equal }; |
75 enum Condition { equal, not_equal, less, less_equal, greater, greater_equal }; |
76 enum CacheByte { f1_byte = 1, f2_byte = 2, f1_oop = 0x11 }; // byte_no codes |
|
76 |
77 |
77 private: |
78 private: |
78 static bool _is_initialized; // true if TemplateTable has been initialized |
79 static bool _is_initialized; // true if TemplateTable has been initialized |
79 static Template _template_table [Bytecodes::number_of_codes]; |
80 static Template _template_table [Bytecodes::number_of_codes]; |
80 static Template _template_table_wide[Bytecodes::number_of_codes]; |
81 static Template _template_table_wide[Bytecodes::number_of_codes]; |
242 static void fast_linearswitch(); |
243 static void fast_linearswitch(); |
243 static void fast_binaryswitch(); |
244 static void fast_binaryswitch(); |
244 |
245 |
245 static void _return(TosState state); |
246 static void _return(TosState state); |
246 |
247 |
247 static void resolve_cache_and_index(int byte_no, Register cache, Register index); |
248 static void resolve_cache_and_index(int byte_no, // one of 1,2,11 |
249 Register result , // either noreg or output for f1/f2 |
|
250 Register cache, // output for CP cache |
|
251 Register index, // output for CP index |
|
252 size_t index_size); // one of 1,2,4 |
|
248 static void load_invoke_cp_cache_entry(int byte_no, |
253 static void load_invoke_cp_cache_entry(int byte_no, |
249 Register method, |
254 Register method, |
250 Register itable_index, |
255 Register itable_index, |
251 Register flags, |
256 Register flags, |
252 bool is_invokevirtual = false, |
257 bool is_invokevirtual, |
253 bool is_virtual_final = false); |
258 bool is_virtual_final, |
259 bool is_invokedynamic); |
|
254 static void load_field_cp_cache_entry(Register obj, |
260 static void load_field_cp_cache_entry(Register obj, |
255 Register cache, |
261 Register cache, |
256 Register index, |
262 Register index, |
257 Register offset, |
263 Register offset, |
258 Register flags, |
264 Register flags, |