--- old/src/share/vm/interpreter/templateTable.hpp 2015-03-04 19:29:57.927811679 -0800 +++ new/src/share/vm/interpreter/templateTable.hpp 2015-03-04 19:29:57.799805243 -0800 @@ -82,6 +82,7 @@ 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 @@ -165,7 +166,11 @@ 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(); @@ -272,17 +277,21 @@ 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);