319 void set_inst_mark() { code_section()->set_mark(); }
320 void clear_inst_mark() { code_section()->clear_mark(); }
321
322 // Constants in code
323 void relocate(RelocationHolder const& rspec, int format = 0) {
324 assert(!pd_check_instruction_mark()
325 || inst_mark() == NULL || inst_mark() == code_section()->end(),
326 "call relocate() between instructions");
327 code_section()->relocate(code_section()->end(), rspec, format);
328 }
329 void relocate( relocInfo::relocType rtype, int format = 0) {
330 code_section()->relocate(code_section()->end(), rtype, format);
331 }
332
333 static int code_fill_byte(); // used to pad out odd-sized code buffers
334
335 // Associate a comment with the current offset. It will be printed
336 // along with the disassembly when printing nmethods. Currently
337 // only supported in the instruction section of the code buffer.
338 void block_comment(const char* comment);
339
340 // Label functions
341 void bind(Label& L); // binds an unbound label L to the current code position
342
343 // Move to a different section in the same code buffer.
344 void set_code_section(CodeSection* cs);
345
346 // Inform assembler when generating stub code and relocation info
347 address start_a_stub(int required_space);
348 void end_a_stub();
349 // Ditto for constants.
350 address start_a_const(int required_space, int required_align = sizeof(double));
351 void end_a_const(CodeSection* cs); // Pass the codesection to continue in (insts or stubs?).
352
353 // constants support
354 //
355 // We must remember the code section (insts or stubs) in c1
356 // so we can reset to the proper section in end_a_const().
357 address long_constant(jlong c) {
358 CodeSection* c1 = _code_section;
|
319 void set_inst_mark() { code_section()->set_mark(); }
320 void clear_inst_mark() { code_section()->clear_mark(); }
321
322 // Constants in code
323 void relocate(RelocationHolder const& rspec, int format = 0) {
324 assert(!pd_check_instruction_mark()
325 || inst_mark() == NULL || inst_mark() == code_section()->end(),
326 "call relocate() between instructions");
327 code_section()->relocate(code_section()->end(), rspec, format);
328 }
329 void relocate( relocInfo::relocType rtype, int format = 0) {
330 code_section()->relocate(code_section()->end(), rtype, format);
331 }
332
333 static int code_fill_byte(); // used to pad out odd-sized code buffers
334
335 // Associate a comment with the current offset. It will be printed
336 // along with the disassembly when printing nmethods. Currently
337 // only supported in the instruction section of the code buffer.
338 void block_comment(const char* comment);
339 // Copy str to a buffer that has the same lifetime as the CodeBuffer
340 const char* code_string(const char* str);
341
342 // Label functions
343 void bind(Label& L); // binds an unbound label L to the current code position
344
345 // Move to a different section in the same code buffer.
346 void set_code_section(CodeSection* cs);
347
348 // Inform assembler when generating stub code and relocation info
349 address start_a_stub(int required_space);
350 void end_a_stub();
351 // Ditto for constants.
352 address start_a_const(int required_space, int required_align = sizeof(double));
353 void end_a_const(CodeSection* cs); // Pass the codesection to continue in (insts or stubs?).
354
355 // constants support
356 //
357 // We must remember the code section (insts or stubs) in c1
358 // so we can reset to the proper section in end_a_const().
359 address long_constant(jlong c) {
360 CodeSection* c1 = _code_section;
|