OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // | 2 // |
3 // Redistribution and use in source and binary forms, with or without | 3 // Redistribution and use in source and binary forms, with or without |
4 // modification, are permitted provided that the following conditions are | 4 // modification, are permitted provided that the following conditions are |
5 // met: | 5 // met: |
6 // | 6 // |
7 // * Redistributions of source code must retain the above copyright | 7 // * Redistributions of source code must retain the above copyright |
8 // notice, this list of conditions and the following disclaimer. | 8 // notice, this list of conditions and the following disclaimer. |
9 // * Redistributions in binary form must reproduce the above | 9 // * Redistributions in binary form must reproduce the above |
10 // copyright notice, this list of conditions and the following | 10 // copyright notice, this list of conditions and the following |
(...skipping 2530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2541 | 2541 |
2542 int jump_instr = require_jump ? kInstructionSize : 0; | 2542 int jump_instr = require_jump ? kInstructionSize : 0; |
2543 int size_pool_marker = kInstructionSize; | 2543 int size_pool_marker = kInstructionSize; |
2544 int size_pool_guard = kInstructionSize; | 2544 int size_pool_guard = kInstructionSize; |
2545 int pool_size = jump_instr + size_pool_marker + size_pool_guard + | 2545 int pool_size = jump_instr + size_pool_marker + size_pool_guard + |
2546 num_pending_reloc_info_ * kPointerSize; | 2546 num_pending_reloc_info_ * kPointerSize; |
2547 int needed_space = pool_size + kGap; | 2547 int needed_space = pool_size + kGap; |
2548 | 2548 |
2549 // Emit veneers for branches that would go out of range during emission of the | 2549 // Emit veneers for branches that would go out of range during emission of the |
2550 // constant pool. | 2550 // constant pool. |
2551 CheckVeneerPool(require_jump, kVeneerDistanceMargin - pool_size); | 2551 CheckVeneerPool(require_jump, kVeneerDistanceMargin + pool_size); |
2552 | 2552 |
2553 Label size_check; | 2553 Label size_check; |
2554 bind(&size_check); | 2554 bind(&size_check); |
2555 | 2555 |
2556 // Check that the code buffer is large enough before emitting the constant | 2556 // Check that the code buffer is large enough before emitting the constant |
2557 // pool (include the jump over the pool, the constant pool marker, the | 2557 // pool (include the jump over the pool, the constant pool marker, the |
2558 // constant pool guard, and the gap to the relocation information). | 2558 // constant pool guard, and the gap to the relocation information). |
2559 while (buffer_space() <= needed_space) { | 2559 while (buffer_space() <= needed_space) { |
2560 GrowBuffer(); | 2560 GrowBuffer(); |
2561 } | 2561 } |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2772 // code. | 2772 // code. |
2773 #ifdef ENABLE_DEBUGGER_SUPPORT | 2773 #ifdef ENABLE_DEBUGGER_SUPPORT |
2774 RecordRelocInfo(RelocInfo::CONST_POOL, static_cast<intptr_t>(size)); | 2774 RecordRelocInfo(RelocInfo::CONST_POOL, static_cast<intptr_t>(size)); |
2775 #endif | 2775 #endif |
2776 } | 2776 } |
2777 | 2777 |
2778 | 2778 |
2779 } } // namespace v8::internal | 2779 } } // namespace v8::internal |
2780 | 2780 |
2781 #endif // V8_TARGET_ARCH_A64 | 2781 #endif // V8_TARGET_ARCH_A64 |
OLD | NEW |