Reviewers: Benedikt Meurer, Hablich,
Description:
[arm] CheckConstPool between TF instructions.
Some TurboFan instructions block the literal pool for their entire
duration. If a long enough sequence of these instructions is
encountered, the literal pool can be blocked until it goes out of range.
BUG=
Please review this at https://codereview.chromium.org/1236603002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+9, -3 lines):
M src/arm/assembler-arm.h
M src/arm/assembler-arm-inl.h
M src/compiler/arm/code-generator-arm.cc
Index: src/arm/assembler-arm-inl.h
diff --git a/src/arm/assembler-arm-inl.h b/src/arm/assembler-arm-inl.h
index
28a323ab519b3d03b14719505fd6262da5e07915..4b4e1d32080311da54dabb76e130275c55f53a71
100644
--- a/src/arm/assembler-arm-inl.h
+++ b/src/arm/assembler-arm-inl.h
@@ -433,9 +433,7 @@ void Assembler::CheckBuffer() {
if (buffer_space() <= kGap) {
GrowBuffer();
}
- if (pc_offset() >= next_buffer_check_) {
- CheckConstPool(false, true);
- }
+ MaybeCheckConstPool();
}
Index: src/arm/assembler-arm.h
diff --git a/src/arm/assembler-arm.h b/src/arm/assembler-arm.h
index
73c109972ed48e7e64a90a691bd6f3c427c4393d..1d09830c5126d0c3c2a82d30b1ff440b36b917cf
100644
--- a/src/arm/assembler-arm.h
+++ b/src/arm/assembler-arm.h
@@ -1492,6 +1492,12 @@ class Assembler : public AssemblerBase {
// Check if is time to emit a constant pool.
void CheckConstPool(bool force_emit, bool require_jump);
+ void MaybeCheckConstPool() {
+ if (pc_offset() >= next_buffer_check_) {
+ CheckConstPool(false, true);
+ }
+ }
+
int EmitEmbeddedConstantPool() {
DCHECK(FLAG_enable_embedded_constant_pool);
return constant_pool_builder_.Emit(this);
Index: src/compiler/arm/code-generator-arm.cc
diff --git a/src/compiler/arm/code-generator-arm.cc
b/src/compiler/arm/code-generator-arm.cc
index
2b605460787f8a2846b6bd8af58abc3c6e7ee69d..0c97f846f0cff35eaccb09b24a02ca10f81dcca5
100644
--- a/src/compiler/arm/code-generator-arm.cc
+++ b/src/compiler/arm/code-generator-arm.cc
@@ -312,6 +312,8 @@ void
CodeGenerator::AssembleDeconstructActivationRecord() {
void CodeGenerator::AssembleArchInstruction(Instruction* instr) {
ArmOperandConverter i(this, instr);
+ masm()->MaybeCheckConstPool();
+
switch (ArchOpcodeField::decode(instr->opcode())) {
case kArchCallCodeObject: {
EnsureSpaceForLazyDeopt();
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.