Mercurial > hg > truffle
comparison src/share/vm/asm/codeBuffer.hpp @ 1748:3e8fbc61cee8
6978355: renaming for 6961697
Summary: This is the renaming part of 6961697 to keep the actual changes small for review.
Reviewed-by: kvn, never
author | twisti |
---|---|
date | Wed, 25 Aug 2010 05:27:54 -0700 |
parents | f4f596978298 |
children | 0878d7bae69f |
comparison
equal
deleted
inserted
replaced
1747:53dbe853fb3a | 1748:3e8fbc61cee8 |
---|---|
184 assert(pc >= locs_point(), "relocation addr may not decrease"); | 184 assert(pc >= locs_point(), "relocation addr may not decrease"); |
185 assert(allocates2(pc), "relocation addr must be in this section"); | 185 assert(allocates2(pc), "relocation addr must be in this section"); |
186 _locs_point = pc; | 186 _locs_point = pc; |
187 } | 187 } |
188 | 188 |
189 // Code emission | |
190 void emit_int8 (int8_t x) { *((int8_t*) end()) = x; set_end(end() + 1); } | |
191 void emit_int16(int16_t x) { *((int16_t*) end()) = x; set_end(end() + 2); } | |
192 void emit_int32(int32_t x) { *((int32_t*) end()) = x; set_end(end() + 4); } | |
193 void emit_int64(int64_t x) { *((int64_t*) end()) = x; set_end(end() + 8); } | |
194 | |
189 // Share a scratch buffer for relocinfo. (Hacky; saves a resource allocation.) | 195 // Share a scratch buffer for relocinfo. (Hacky; saves a resource allocation.) |
190 void initialize_shared_locs(relocInfo* buf, int length); | 196 void initialize_shared_locs(relocInfo* buf, int length); |
191 | 197 |
192 // Manage labels and their addresses. | 198 // Manage labels and their addresses. |
193 address target(Label& L, address branch_pc); | 199 address target(Label& L, address branch_pc); |
372 // Helper for expand. | 378 // Helper for expand. |
373 csize_t figure_expanded_capacities(CodeSection* which_cs, csize_t amount, csize_t* new_capacity); | 379 csize_t figure_expanded_capacities(CodeSection* which_cs, csize_t amount, csize_t* new_capacity); |
374 | 380 |
375 public: | 381 public: |
376 // (1) code buffer referring to pre-allocated instruction memory | 382 // (1) code buffer referring to pre-allocated instruction memory |
377 CodeBuffer(address code_start, csize_t code_size); | 383 CodeBuffer(address code_start, csize_t code_size) { |
378 | 384 assert(code_start != NULL, "sanity"); |
379 // (2) code buffer allocating codeBlob memory for code & relocation | 385 initialize_misc("static buffer"); |
386 initialize(code_start, code_size); | |
387 assert(verify_section_allocation(), "initial use of buffer OK"); | |
388 } | |
389 | |
390 // (2) CodeBuffer referring to pre-allocated CodeBlob. | |
391 CodeBuffer(CodeBlob* blob); | |
392 | |
393 // (3) code buffer allocating codeBlob memory for code & relocation | |
380 // info but with lazy initialization. The name must be something | 394 // info but with lazy initialization. The name must be something |
381 // informative. | 395 // informative. |
382 CodeBuffer(const char* name) { | 396 CodeBuffer(const char* name) { |
383 initialize_misc(name); | 397 initialize_misc(name); |
384 } | 398 } |
385 | 399 |
386 | 400 |
387 // (3) code buffer allocating codeBlob memory for code & relocation | 401 // (4) code buffer allocating codeBlob memory for code & relocation |
388 // info. The name must be something informative and code_size must | 402 // info. The name must be something informative and code_size must |
389 // include both code and stubs sizes. | 403 // include both code and stubs sizes. |
390 CodeBuffer(const char* name, csize_t code_size, csize_t locs_size) { | 404 CodeBuffer(const char* name, csize_t code_size, csize_t locs_size) { |
391 initialize_misc(name); | 405 initialize_misc(name); |
392 initialize(code_size, locs_size); | 406 initialize(code_size, locs_size); |
393 } | 407 } |
394 | 408 |
395 ~CodeBuffer(); | 409 ~CodeBuffer(); |
396 | 410 |
397 // Initialize a CodeBuffer constructed using constructor 2. Using | 411 // Initialize a CodeBuffer constructed using constructor 3. Using |
398 // constructor 3 is equivalent to calling constructor 2 and then | 412 // constructor 4 is equivalent to calling constructor 3 and then |
399 // calling this method. It's been factored out for convenience of | 413 // calling this method. It's been factored out for convenience of |
400 // construction. | 414 // construction. |
401 void initialize(csize_t code_size, csize_t locs_size); | 415 void initialize(csize_t code_size, csize_t locs_size); |
402 | 416 |
403 CodeSection* insts() { return &_insts; } | 417 CodeSection* insts() { return &_insts; } |
436 BufferBlob* blob() const { return _blob; } | 450 BufferBlob* blob() const { return _blob; } |
437 void set_blob(BufferBlob* blob); | 451 void set_blob(BufferBlob* blob); |
438 void free_blob(); // Free the blob, if we own one. | 452 void free_blob(); // Free the blob, if we own one. |
439 | 453 |
440 // Properties relative to the insts section: | 454 // Properties relative to the insts section: |
441 address code_begin() const { return _insts.start(); } | 455 address insts_begin() const { return _insts.start(); } |
442 address code_end() const { return _insts.end(); } | 456 address insts_end() const { return _insts.end(); } |
443 void set_code_end(address end) { _insts.set_end(end); } | 457 void set_insts_end(address end) { _insts.set_end(end); } |
444 address code_limit() const { return _insts.limit(); } | 458 address insts_limit() const { return _insts.limit(); } |
445 address inst_mark() const { return _insts.mark(); } | 459 address insts_mark() const { return _insts.mark(); } |
446 void set_inst_mark() { _insts.set_mark(); } | 460 void set_insts_mark() { _insts.set_mark(); } |
447 void clear_inst_mark() { _insts.clear_mark(); } | 461 void clear_insts_mark() { _insts.clear_mark(); } |
448 | 462 |
449 // is there anything in the buffer other than the current section? | 463 // is there anything in the buffer other than the current section? |
450 bool is_pure() const { return code_size() == total_code_size(); } | 464 bool is_pure() const { return insts_size() == total_content_size(); } |
451 | 465 |
452 // size in bytes of output so far in the insts sections | 466 // size in bytes of output so far in the insts sections |
453 csize_t code_size() const { return _insts.size(); } | 467 csize_t insts_size() const { return _insts.size(); } |
454 | 468 |
455 // same as code_size(), except that it asserts there is no non-code here | 469 // same as insts_size(), except that it asserts there is no non-code here |
456 csize_t pure_code_size() const { assert(is_pure(), "no non-code"); | 470 csize_t pure_insts_size() const { assert(is_pure(), "no non-code"); |
457 return code_size(); } | 471 return insts_size(); } |
458 // capacity in bytes of the insts sections | 472 // capacity in bytes of the insts sections |
459 csize_t code_capacity() const { return _insts.capacity(); } | 473 csize_t insts_capacity() const { return _insts.capacity(); } |
460 | 474 |
461 // number of bytes remaining in the insts section | 475 // number of bytes remaining in the insts section |
462 csize_t code_remaining() const { return _insts.remaining(); } | 476 csize_t insts_remaining() const { return _insts.remaining(); } |
463 | 477 |
464 // is a given address in the insts section? (2nd version is end-inclusive) | 478 // is a given address in the insts section? (2nd version is end-inclusive) |
465 bool code_contains(address pc) const { return _insts.contains(pc); } | 479 bool insts_contains(address pc) const { return _insts.contains(pc); } |
466 bool code_contains2(address pc) const { return _insts.contains2(pc); } | 480 bool insts_contains2(address pc) const { return _insts.contains2(pc); } |
467 | 481 |
468 // allocated size of code in all sections, when aligned and concatenated | 482 // Allocated size in all sections, when aligned and concatenated |
469 // (this is the eventual state of the code in its final CodeBlob) | 483 // (this is the eventual state of the content in its final |
470 csize_t total_code_size() const; | 484 // CodeBlob). |
485 csize_t total_content_size() const; | |
471 | 486 |
472 // combined offset (relative to start of insts) of given address, | 487 // combined offset (relative to start of insts) of given address, |
473 // as eventually found in the final CodeBlob | 488 // as eventually found in the final CodeBlob |
474 csize_t total_offset_of(address addr) const; | 489 csize_t total_offset_of(address addr) const; |
475 | 490 |