Mercurial > hg > truffle
comparison src/share/vm/asm/codeBuffer.hpp @ 4059:44ce519bc3d1
7104960: JSR 292: +VerifyMethodHandles in product JVM can overflow buffer
Reviewed-by: kvn, jrose, twisti
author | never |
---|---|
date | Tue, 08 Nov 2011 10:31:53 -0800 |
parents | 1d1603768966 |
children | da91efe96a93 |
comparison
equal
deleted
inserted
replaced
4058:59e515ee9354 | 4059:44ce519bc3d1 |
---|---|
360 void freeze_section(CodeSection* cs); | 360 void freeze_section(CodeSection* cs); |
361 | 361 |
362 // helper for CodeBuffer::expand() | 362 // helper for CodeBuffer::expand() |
363 void take_over_code_from(CodeBuffer* cs); | 363 void take_over_code_from(CodeBuffer* cs); |
364 | 364 |
365 #ifdef ASSERT | |
366 // ensure sections are disjoint, ordered, and contained in the blob | 365 // ensure sections are disjoint, ordered, and contained in the blob |
367 bool verify_section_allocation(); | 366 void verify_section_allocation(); |
368 #endif | |
369 | 367 |
370 // copies combined relocations to the blob, returns bytes copied | 368 // copies combined relocations to the blob, returns bytes copied |
371 // (if target is null, it is a dry run only, just for sizing) | 369 // (if target is null, it is a dry run only, just for sizing) |
372 csize_t copy_relocations_to(CodeBlob* blob) const; | 370 csize_t copy_relocations_to(CodeBlob* blob) const; |
373 | 371 |
391 // (1) code buffer referring to pre-allocated instruction memory | 389 // (1) code buffer referring to pre-allocated instruction memory |
392 CodeBuffer(address code_start, csize_t code_size) { | 390 CodeBuffer(address code_start, csize_t code_size) { |
393 assert(code_start != NULL, "sanity"); | 391 assert(code_start != NULL, "sanity"); |
394 initialize_misc("static buffer"); | 392 initialize_misc("static buffer"); |
395 initialize(code_start, code_size); | 393 initialize(code_start, code_size); |
396 assert(verify_section_allocation(), "initial use of buffer OK"); | 394 verify_section_allocation(); |
397 } | 395 } |
398 | 396 |
399 // (2) CodeBuffer referring to pre-allocated CodeBlob. | 397 // (2) CodeBuffer referring to pre-allocated CodeBlob. |
400 CodeBuffer(CodeBlob* blob); | 398 CodeBuffer(CodeBlob* blob); |
401 | 399 |
543 // Transform an address from the code in this code buffer to a specified code buffer | 541 // Transform an address from the code in this code buffer to a specified code buffer |
544 address transform_address(const CodeBuffer &cb, address addr) const; | 542 address transform_address(const CodeBuffer &cb, address addr) const; |
545 | 543 |
546 void block_comment(intptr_t offset, const char * comment) PRODUCT_RETURN; | 544 void block_comment(intptr_t offset, const char * comment) PRODUCT_RETURN; |
547 | 545 |
546 // Log a little info about section usage in the CodeBuffer | |
547 void log_section_sizes(const char* name); | |
548 | |
548 #ifndef PRODUCT | 549 #ifndef PRODUCT |
549 public: | 550 public: |
550 // Printing / Decoding | 551 // Printing / Decoding |
551 // decodes from decode_begin() to code_end() and sets decode_begin to end | 552 // decodes from decode_begin() to code_end() and sets decode_begin to end |
552 void decode(); | 553 void decode(); |