Bug 20911: REGRESSION(r36480?): Reproducible assertion failure below derefStructureID...
authoroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Sep 2008 00:46:56 +0000 (00:46 +0000)
committeroliver@apple.com <oliver@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Sep 2008 00:46:56 +0000 (00:46 +0000)
<https://bugs.webkit.org/show_bug.cgi?id=20911>

Reviewed by Maciej Stachowiak.

The problem was simply caused by the int constructor for Instruction
failing to initialise the full struct in 64bit builds.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@36637 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/VM/Instruction.h

index e42d544..5410220 100644 (file)
@@ -1,3 +1,16 @@
+2008-09-18  Oliver Hunt  <oliver@apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        Bug 20911: REGRESSION(r36480?): Reproducible assertion failure below derefStructureIDs 64-bit JavaScriptCore
+        <https://bugs.webkit.org/show_bug.cgi?id=20911>
+
+        The problem was simply caused by the int constructor for Instruction
+        failing to initialise the full struct in 64bit builds.
+
+        * VM/Instruction.h:
+        (JSC::Instruction::Instruction):
+
 2008-09-18  Darin Adler  <darin@apple.com>
 
         - fix release build
index 2c317de..2dbfb8a 100644 (file)
@@ -39,7 +39,13 @@ namespace JSC {
 
     struct Instruction {
         Instruction(Opcode opcode) { u.opcode = opcode; }
-        Instruction(int operand) { u.operand = operand; }
+        Instruction(int operand) {
+            // We have to initialise one of the pointer members to ensure that
+            // the entire struct is initialised in 64-bit.
+            u.jsCell = 0;
+            u.operand = operand;
+        }
+
         Instruction(StructureID* structureID) { u.structureID = structureID; }
         Instruction(StructureIDChain* structureIDChain) { u.structureIDChain = structureIDChain; }
         Instruction(JSCell* jsCell) { u.jsCell = jsCell; }