From a7c373c2d20f2ac935f4dacc61eef9fc6dd1ae09 Mon Sep 17 00:00:00 2001 From: "vegorov@chromium.org" Date: Wed, 5 Oct 2011 10:50:24 +0000 Subject: [PATCH] Fix Kraken segfaults on ARM. DoStoreKeyedFastElement was passing incorrect slot address (off by 1) to the RecordWrite. R=erik.corry@gmail.com BUG=v8:1742 Review URL: http://codereview.chromium.org/8139026 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9528 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/lithium-codegen-arm.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc index f6750a2..70ef884 100644 --- a/src/arm/lithium-codegen-arm.cc +++ b/src/arm/lithium-codegen-arm.cc @@ -3363,7 +3363,7 @@ void LCodeGen::DoStoreKeyedFastElement(LStoreKeyedFastElement* instr) { if (instr->hydrogen()->NeedsWriteBarrier()) { // Compute address of modified element and store it into key register. - __ add(key, scratch, Operand(FixedArray::kHeaderSize)); + __ add(key, scratch, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); __ RecordWrite(elements, key, value, kLRHasBeenSaved, kSaveFPRegs); } } -- 2.7.4