comparison src/share/vm/c1/c1_Runtime1.hpp @ 1584:b812ff5abc73

6958292: C1: Enable parallel compilation Summary: Enable parallel compilation in C1 Reviewed-by: never, kvn
author iveresov
date Fri, 04 Jun 2010 11:18:04 -0700
parents c18cbe5936b8
children 126ea7725993
comparison
equal deleted inserted replaced
1583:02e771df338e 1584:b812ff5abc73
68 #define LAST_STUB_NAME(x) #x " Runtime1 stub" 68 #define LAST_STUB_NAME(x) #x " Runtime1 stub"
69 69
70 class Runtime1: public AllStatic { 70 class Runtime1: public AllStatic {
71 friend class VMStructs; 71 friend class VMStructs;
72 friend class ArrayCopyStub; 72 friend class ArrayCopyStub;
73 private:
74 static int desired_max_code_buffer_size() {
75 return (int) NMethodSizeLimit; // default 256K or 512K
76 }
77 static int desired_max_constant_size() {
78 return (int) NMethodSizeLimit / 10; // about 25K
79 }
80
81 // Note: This buffers is allocated once at startup since allocation
82 // for each compilation seems to be too expensive (at least on Intel
83 // win32).
84 static BufferBlob* _buffer_blob;
85 73
86 public: 74 public:
87 enum StubID { 75 enum StubID {
88 RUNTIME1_STUBS(DECLARE_STUB_ID, DECLARE_LAST_STUB_ID) 76 RUNTIME1_STUBS(DECLARE_STUB_ID, DECLARE_LAST_STUB_ID)
89 }; 77 };
113 static int _throw_array_store_exception_count; 101 static int _throw_array_store_exception_count;
114 static int _throw_count; 102 static int _throw_count;
115 #endif 103 #endif
116 104
117 private: 105 private:
118 static bool _is_initialized;
119 static CodeBlob* _blobs[number_of_ids]; 106 static CodeBlob* _blobs[number_of_ids];
120 static const char* _blob_names[]; 107 static const char* _blob_names[];
121 108
122 // stub generation 109 // stub generation
123 static void generate_blob_for(StubID id); 110 static void generate_blob_for(BufferBlob* blob, StubID id);
124 static OopMapSet* generate_code_for(StubID id, StubAssembler* masm); 111 static OopMapSet* generate_code_for(StubID id, StubAssembler* masm);
125 static OopMapSet* generate_exception_throw(StubAssembler* sasm, address target, bool has_argument); 112 static OopMapSet* generate_exception_throw(StubAssembler* sasm, address target, bool has_argument);
126 static void generate_handle_exception(StubAssembler *sasm, OopMapSet* oop_maps, OopMap* oop_map, bool ignore_fpu_registers = false); 113 static void generate_handle_exception(StubAssembler *sasm, OopMapSet* oop_maps, OopMap* oop_map, bool ignore_fpu_registers = false);
127 static void generate_unwind_exception(StubAssembler *sasm); 114 static void generate_unwind_exception(StubAssembler *sasm);
128 static OopMapSet* generate_patching(StubAssembler* sasm, address target); 115 static OopMapSet* generate_patching(StubAssembler* sasm, address target);
160 static int move_klass_patching(JavaThread* thread); 147 static int move_klass_patching(JavaThread* thread);
161 148
162 static void patch_code(JavaThread* thread, StubID stub_id); 149 static void patch_code(JavaThread* thread, StubID stub_id);
163 150
164 public: 151 public:
165 static BufferBlob* get_buffer_blob();
166 static void setup_code_buffer(CodeBuffer* cb, int call_stub_estimate);
167
168 // initialization 152 // initialization
169 static bool is_initialized() { return _is_initialized; } 153 static void initialize(BufferBlob* blob);
170 static void initialize();
171 static void initialize_pd(); 154 static void initialize_pd();
172 155
173 // stubs 156 // stubs
174 static CodeBlob* blob_for (StubID id); 157 static CodeBlob* blob_for (StubID id);
175 static address entry_for(StubID id) { return blob_for(id)->instructions_begin(); } 158 static address entry_for(StubID id) { return blob_for(id)->instructions_begin(); }