src/share/vm/interpreter/rewriter.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6893268 Sdiff src/share/vm/interpreter

src/share/vm/interpreter/rewriter.hpp

Print this page
rev 1021 : 6858164: invokedynamic code needs some cleanup (post-6655638)
Note: The bug ID for this change set was erroneously used to call for review of 6815692.
Summary: Fix several crashers, remove needless paths for boxed-style bootstrap method call, refactor & simplify APIs for rewriter constantPoolOop, remove sun.dyn.CallSiteImpl
Reviewed-by: ?
rev 1026 : imported patch indy.compiler.inline.patch


  40     _cp_cache_map.initialize(length / 2);
  41   }
  42   int  cp_entry_to_cp_cache(int i) { assert(has_cp_cache(i), "oob"); return _cp_map[i]; }
  43   bool has_cp_cache(int i) { return (uint)i < (uint)_cp_map.length() && _cp_map[i] >= 0; }
  44   int maybe_add_cp_cache_entry(int i) { return has_cp_cache(i) ? _cp_map[i] : add_cp_cache_entry(i); }
  45   int add_cp_cache_entry(int cp_index) {
  46     assert((cp_index & _secondary_entry_tag) == 0, "bad tag");
  47     assert(_cp_map[cp_index] == -1, "not twice on same cp_index");
  48     int cache_index = _cp_cache_map.append(cp_index);
  49     _cp_map.at_put(cp_index, cache_index);
  50     assert(cp_entry_to_cp_cache(cp_index) == cache_index, "");
  51     return cache_index;
  52   }
  53   int add_secondary_cp_cache_entry(int main_cpc_entry) {
  54     assert(main_cpc_entry < _cp_cache_map.length(), "must be earlier CP cache entry");
  55     int cache_index = _cp_cache_map.append(main_cpc_entry | _secondary_entry_tag);
  56     return cache_index;
  57   }
  58 
  59   // All the work goes in here:
  60   Rewriter(instanceKlassHandle klass, TRAPS);
  61 
  62   void compute_index_maps();
  63   void make_constant_pool_cache(TRAPS);
  64   void scan_method(methodOop m);
  65   methodHandle rewrite_jsrs(methodHandle m, TRAPS);
  66   void rewrite_Object_init(methodHandle m, TRAPS);
  67   int  rewrite_member_reference(address bcp, int offset);
  68   void rewrite_invokedynamic(address bcp, int offset, int cp_index);
  69 
  70  public:
  71   // Driver routine:
  72   static void rewrite(instanceKlassHandle klass, TRAPS);

  73 
  74   enum {
  75     _secondary_entry_tag = nth_bit(30)
  76   };
  77 };


  40     _cp_cache_map.initialize(length / 2);
  41   }
  42   int  cp_entry_to_cp_cache(int i) { assert(has_cp_cache(i), "oob"); return _cp_map[i]; }
  43   bool has_cp_cache(int i) { return (uint)i < (uint)_cp_map.length() && _cp_map[i] >= 0; }
  44   int maybe_add_cp_cache_entry(int i) { return has_cp_cache(i) ? _cp_map[i] : add_cp_cache_entry(i); }
  45   int add_cp_cache_entry(int cp_index) {
  46     assert((cp_index & _secondary_entry_tag) == 0, "bad tag");
  47     assert(_cp_map[cp_index] == -1, "not twice on same cp_index");
  48     int cache_index = _cp_cache_map.append(cp_index);
  49     _cp_map.at_put(cp_index, cache_index);
  50     assert(cp_entry_to_cp_cache(cp_index) == cache_index, "");
  51     return cache_index;
  52   }
  53   int add_secondary_cp_cache_entry(int main_cpc_entry) {
  54     assert(main_cpc_entry < _cp_cache_map.length(), "must be earlier CP cache entry");
  55     int cache_index = _cp_cache_map.append(main_cpc_entry | _secondary_entry_tag);
  56     return cache_index;
  57   }
  58 
  59   // All the work goes in here:
  60   Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, objArrayHandle methods, TRAPS);
  61 
  62   void compute_index_maps();
  63   void make_constant_pool_cache(TRAPS);
  64   void scan_method(methodOop m);
  65   methodHandle rewrite_jsrs(methodHandle m, TRAPS);
  66   void rewrite_Object_init(methodHandle m, TRAPS);
  67   int  rewrite_member_reference(address bcp, int offset);
  68   void rewrite_invokedynamic(address bcp, int offset, int cp_index);
  69 
  70  public:
  71   // Driver routine:
  72   static void rewrite(instanceKlassHandle klass, TRAPS);
  73   static void rewrite(instanceKlassHandle klass, constantPoolHandle cpool, objArrayHandle methods, TRAPS);
  74 
  75   enum {
  76     _secondary_entry_tag = nth_bit(30)
  77   };
  78 };
src/share/vm/interpreter/rewriter.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File