| Index: src/a64/assembler-a64.h
|
| diff --git a/src/a64/assembler-a64.h b/src/a64/assembler-a64.h
|
| index 09a8a72014d9c7885266576e35094c6b60926e23..63fbcad825a0862644f5db3424c87cd5db660399 100644
|
| --- a/src/a64/assembler-a64.h
|
| +++ b/src/a64/assembler-a64.h
|
| @@ -839,6 +839,7 @@ class Assembler : public AssemblerBase {
|
| static int ConstantPoolSizeAt(Instruction* instr);
|
| // See Assembler::CheckConstPool for more info.
|
| void ConstantPoolMarker(uint32_t size);
|
| + void EmitPoolGuard();
|
| void ConstantPoolGuard();
|
|
|
| // Prevent veneer pool emission until EndBlockVeneerPool is called.
|
| @@ -877,20 +878,20 @@ class Assembler : public AssemblerBase {
|
|
|
| // Record the emission of a constant pool.
|
| //
|
| - // The emission of constant pool depends on the size of the code generated and
|
| - // the number of RelocInfo recorded.
|
| + // The emission of constant and veneer pools depends on the size of the code
|
| + // generated and the number of RelocInfo recorded.
|
| // The Debug mechanism needs to map code offsets between two versions of a
|
| // function, compiled with and without debugger support (see for example
|
| // Debug::PrepareForBreakPoints()).
|
| // Compiling functions with debugger support generates additional code
|
| - // (Debug::GenerateSlot()). This may affect the emission of the constant
|
| - // pools and cause the version of the code with debugger support to have
|
| - // constant pools generated in different places.
|
| - // Recording the position and size of emitted constant pools allows to
|
| - // correctly compute the offset mappings between the different versions of a
|
| - // function in all situations.
|
| + // (Debug::GenerateSlot()). This may affect the emission of the pools and
|
| + // cause the version of the code with debugger support to have pools generated
|
| + // in different places.
|
| + // Recording the position and size of emitted pools allows to correctly
|
| + // compute the offset mappings between the different versions of a function in
|
| + // all situations.
|
| //
|
| - // The parameter indicates the size of the constant pool (in bytes), including
|
| + // The parameter indicates the size of the pool (in bytes), including
|
| // the marker and branch over the data.
|
| void RecordConstPool(int size);
|
|
|
| @@ -1754,11 +1755,12 @@ class Assembler : public AssemblerBase {
|
| // in the future for example if we decide to add nops between the veneers.
|
| static const int kMaxVeneerCodeSize = 1 * kInstructionSize;
|
|
|
| + void RecordVeneerPool(int location_offset, int size);
|
| // Emits veneers for branches that are approaching their maximum range.
|
| // If need_protection is true, the veneers are protected by a branch jumping
|
| // over the code.
|
| void EmitVeneers(bool need_protection, int margin = kVeneerDistanceMargin);
|
| - void EmitVeneersGuard();
|
| + void EmitVeneersGuard() { EmitPoolGuard(); }
|
| // Checks whether veneers need to be emitted at this point.
|
| void CheckVeneerPool(bool require_jump, int margin = kVeneerDistanceMargin);
|
|
|
|
|