Index: src/arm/assembler-arm.h |
diff --git a/src/arm/assembler-arm.h b/src/arm/assembler-arm.h |
index ccb5104206883e9891fce042208538cd8dab2613..ad9c31eec08cd7a5923169291d7f03d5236c3d91 100644 |
--- a/src/arm/assembler-arm.h |
+++ b/src/arm/assembler-arm.h |
@@ -1446,6 +1446,14 @@ class Assembler : public AssemblerBase { |
// Check if is time to emit a constant pool. |
void CheckConstPool(bool force_emit, bool require_jump); |
+ bool can_use_constant_pool() const { |
+ return is_constant_pool_available() && !constant_pool_full_; |
+ } |
+ |
+ void set_constant_pool_full() { |
+ constant_pool_full_ = true; |
+ } |
+ |
protected: |
// Relocation for a type-recording IC has the AST id added to it. This |
// member variable is a way to pass the information from the call site to |
@@ -1499,6 +1507,14 @@ class Assembler : public AssemblerBase { |
(pc_offset() < no_const_pool_before_); |
} |
+ bool is_constant_pool_available() const { |
+ return constant_pool_available_; |
+ } |
+ |
+ void set_constant_pool_available(bool available) { |
+ constant_pool_available_ = available; |
+ } |
+ |
private: |
int next_buffer_check_; // pc offset of next buffer check |
@@ -1559,6 +1575,9 @@ class Assembler : public AssemblerBase { |
// The bound position, before this we cannot do instruction elimination. |
int last_bound_pos_; |
+ bool constant_pool_available_; |
+ bool constant_pool_full_; |
ulan
2014/03/11 13:00:46
Could you add a comment explaining what constant_p
rmcilroy
2014/03/11 16:36:34
Done (and for constant_pool_available)
|
+ |
// Code emission |
inline void CheckBuffer(); |
void GrowBuffer(); |
@@ -1596,6 +1615,8 @@ class Assembler : public AssemblerBase { |
friend class RelocInfo; |
friend class CodePatcher; |
friend class BlockConstPoolScope; |
+ friend class FrameAndConstantPoolScope; |
+ friend class ConstantPoolUnavailableScope; |
PositionsRecorder positions_recorder_; |
friend class PositionsRecorder; |