src/share/vm/interpreter/templateTable.hpp

Print this page

        

@@ -80,10 +80,11 @@
 class TemplateTable: AllStatic {
  public:
   enum Operation { add, sub, mul, div, rem, _and, _or, _xor, shl, shr, ushr };
   enum Condition { equal, not_equal, less, less_equal, greater, greater_equal };
   enum CacheByte { f1_byte = 1, f2_byte = 2 };  // byte_no codes
+  enum RewriteControl { MAY_REWRITE, MAY_NOT_REWRITE };  // control for fast code under CDS
 
  private:
   static bool            _is_initialized;        // true if TemplateTable has been initialized
   static Template        _template_table     [Bytecodes::number_of_codes];
   static Template        _template_table_wide[Bytecodes::number_of_codes];

@@ -163,10 +164,14 @@
   static void lload(int n);
   static void fload(int n);
   static void dload(int n);
   static void aload(int n);
   static void aload_0();
+  static void nofast_aload_0();
+  static void nofast_iload();
+  static void iload_internal(RewriteControl rc = MAY_REWRITE);
+  static void aload_0_internal(RewriteControl rc = MAY_REWRITE);
 
   static void istore();
   static void lstore();
   static void fstore();
   static void dstore();

@@ -270,21 +275,25 @@
                                         Register index,
                                         Register offset,
                                         Register flags,
                                         bool is_static);
   static void invokevirtual(int byte_no);
+  static void invokevirtual_internal(int byte_no, RewriteControl rc = MAY_REWRITE);
   static void invokespecial(int byte_no);
   static void invokestatic(int byte_no);
   static void invokeinterface(int byte_no);
   static void invokedynamic(int byte_no);
   static void invokehandle(int byte_no);
   static void fast_invokevfinal(int byte_no);
+  static void nofast_invokevirtual(int byte_no);
 
-  static void getfield_or_static(int byte_no, bool is_static);
-  static void putfield_or_static(int byte_no, bool is_static);
+  static void getfield_or_static(int byte_no, bool is_static, RewriteControl rc = MAY_REWRITE);
+  static void putfield_or_static(int byte_no, bool is_static, RewriteControl rc = MAY_REWRITE);
   static void getfield(int byte_no);
   static void putfield(int byte_no);
+  static void nofast_getfield(int byte_no);
+  static void nofast_putfield(int byte_no);
   static void getstatic(int byte_no);
   static void putstatic(int byte_no);
   static void pop_and_check_object(Register obj);
 
   static void _new();