23 */ |
23 */ |
24 |
24 |
25 #ifndef SHARE_VM_ASM_CODEBUFFER_HPP |
25 #ifndef SHARE_VM_ASM_CODEBUFFER_HPP |
26 #define SHARE_VM_ASM_CODEBUFFER_HPP |
26 #define SHARE_VM_ASM_CODEBUFFER_HPP |
27 |
27 |
28 #include "asm/assembler.hpp" |
|
29 #include "code/oopRecorder.hpp" |
28 #include "code/oopRecorder.hpp" |
30 #include "code/relocInfo.hpp" |
29 #include "code/relocInfo.hpp" |
31 |
30 |
32 class CodeComments; |
31 class CodeComments; |
33 class PhaseCFG; |
32 class PhaseCFG; |
34 class Compile; |
33 class Compile; |
35 class BufferBlob; |
34 class BufferBlob; |
36 class CodeBuffer; |
35 class CodeBuffer; |
|
36 class Label; |
37 |
37 |
38 class CodeOffsets: public StackObj { |
38 class CodeOffsets: public StackObj { |
39 public: |
39 public: |
40 enum Entries { Entry, |
40 enum Entries { Entry, |
41 Verified_Entry, |
41 Verified_Entry, |
451 static int locator_sect(int locator) { return locator & sect_mask; } |
451 static int locator_sect(int locator) { return locator & sect_mask; } |
452 static int locator(int pos, int sect) { return (pos << sect_bits) | sect; } |
452 static int locator(int pos, int sect) { return (pos << sect_bits) | sect; } |
453 int locator(address addr) const; |
453 int locator(address addr) const; |
454 address locator_address(int locator) const; |
454 address locator_address(int locator) const; |
455 |
455 |
|
456 // Heuristic for pre-packing the taken/not-taken bit of a predicted branch. |
|
457 bool is_backward_branch(Label& L); |
|
458 |
456 // Properties |
459 // Properties |
457 const char* name() const { return _name; } |
460 const char* name() const { return _name; } |
458 CodeBuffer* before_expand() const { return _before_expand; } |
461 CodeBuffer* before_expand() const { return _before_expand; } |
459 BufferBlob* blob() const { return _blob; } |
462 BufferBlob* blob() const { return _blob; } |
460 void set_blob(BufferBlob* blob); |
463 void set_blob(BufferBlob* blob); |