Reviewers: jochen,
Message:
PTAL
Description:
A64: clean up pending reloc info if code generation was aborted.
This fixes assertion failure in destructor of Assembler.
BUG=352659
Please review this at https://codereview.chromium.org/206213002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+9, -0 lines):
M src/a64/assembler-a64.h
M src/assembler.h
M src/lithium.cc
Index: src/a64/assembler-a64.h
diff --git a/src/a64/assembler-a64.h b/src/a64/assembler-a64.h
index
c4a02607caf95e442bd639c879812b78a4662a8b..3da4382b79aa8dfc9f028e6671e01c03e6bb3716
100644
--- a/src/a64/assembler-a64.h
+++ b/src/a64/assembler-a64.h
@@ -743,6 +743,10 @@ class Assembler : public AssemblerBase {
virtual ~Assembler();
+ virtual void AbortedCodeGeneration() {
+ num_pending_reloc_info_ = 0;
+ }
+
// System functions
---------------------------------------------------------
// Start generating code from the beginning of the buffer, discarding
any code
// and data that has already been emitted into the buffer.
Index: src/assembler.h
diff --git a/src/assembler.h b/src/assembler.h
index
5a00d44ea2c0fa6c2e2000049f45e50aed78802c..4d46a25fa2840486564eb7c2dc6b3d30c7a2af63
100644
--- a/src/assembler.h
+++ b/src/assembler.h
@@ -82,6 +82,10 @@ class AssemblerBase: public Malloced {
int pc_offset() const { return static_cast<int>(pc_ - buffer_); }
+ // This function is called when code generation is aborted, so that
+ // the assembler could clean up internal data structures.
+ virtual void AbortedCodeGeneration() { }
+
static const int kMinimalBufferSize = 4*KB;
protected:
Index: src/lithium.cc
diff --git a/src/lithium.cc b/src/lithium.cc
index
9ccdc7a1fbf67e8bf9e13e4bf078aed1bcd5c8f5..24b4d1b46786290d2aefea860f40ada765cdb6f3
100644
--- a/src/lithium.cc
+++ b/src/lithium.cc
@@ -446,6 +446,7 @@ Handle<Code> LChunk::Codegen() {
CodeGenerator::PrintCode(code, info());
return code;
}
+ assembler.AbortedCodeGeneration();
return Handle<Code>::null();
}
--
--
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.