| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index 88169a4537240ca49a574a098149e10f8637b145..f7bcd44c53bf8aaa042df8967048c7b7c2d1c383 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -2475,6 +2475,39 @@ void LCodeGen::DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr,
|
| Label before_push_delta;
|
| __ bind(&before_push_delta);
|
| __ BlockConstPoolFor(kAdditionalDelta);
|
| + if (delta * kPointerSize >= (1<<12)) {
|
| + // 12 is according to kLdrOffsetMask in MacroAssembler::GetRelocatedValueLocation.
|
| + // A value of delta may be as high as 20560 when optimizing xSerializeObject_ from mirror-debugger.js for mirror-object.js test.
|
| +
|
| +// 26 v8::internal::LCodeGen::DoDeferredInstanceOfKnownGlobal() /home/prybin/src-v8-6/src/arm/lithium-codegen-arm.cc:2481 0x0836ea63
|
| +// 25 v8::internal::LCodeGen::DeferredInstanceOfKnownGlobal::Generate() /home/prybin/src-v8-6/src/arm/lithium-codegen-arm.cc:2378 0x0836e31b
|
| +// 24 v8::internal::LCodeGen::GenerateDeferredCode() /home/prybin/src-v8-6/src/arm/lithium-codegen-arm.cc:252 0x08363dd3
|
| +// 23 v8::internal::LCodeGen::GenerateCode() /home/prybin/src-v8-6/src/arm/lithium-codegen-arm.cc:82 0x083630de
|
| +// 22 v8::internal::LChunk::Codegen() /home/prybin/src-v8-6/src/lithium.cc:426 0x081aba71
|
| +// 21 v8::internal::OptimizingCompiler::GenerateAndInstallCode() /home/prybin/src-v8-6/src/compiler.cc:375 0x080aa5a4
|
| +// 20 v8::internal::MakeCrankshaftCode() /home/prybin/src-v8-6/src/compiler.cc:213 0x080a994b
|
| +// 19 v8::internal::GenerateCode() /home/prybin/src-v8-6/src/compiler.cc:388 0x080aa661
|
| +// 18 v8::internal::MakeCode() /home/prybin/src-v8-6/src/compiler.cc:404 0x080aa6b9
|
| +// 17 v8::internal::Compiler::CompileLazy() /home/prybin/src-v8-6/src/compiler.cc:803 0x080ad265
|
| +// 16 v8::internal::CompileLazyHelper() /home/prybin/src-v8-6/src/objects.cc:7356 0x081f0cb4
|
| +// 15 v8::internal::JSFunction::CompileOptimized() /home/prybin/src-v8-6/src/objects.cc:7459 0x081f1676
|
| +// 14 v8::internal::Runtime_LazyRecompile() /home/prybin/src-v8-6/src/runtime.cc:8293 0x08274b0e
|
| +// 13 v8::internal::Simulator::SoftwareInterrupt() /home/prybin/src-v8-6/src/arm/simulator-arm.cc:1844 0x0839e9a3
|
| +// 12 v8::internal::Simulator::DecodeType7() /home/prybin/src-v8-6/src/arm/simulator-arm.cc:2670 0x083a0da1
|
| +// 11 v8::internal::Simulator::InstructionDecode() /home/prybin/src-v8-6/src/arm/simulator-arm.cc:3235 0x083a278f
|
| +// 10 v8::internal::Simulator::Execute() /home/prybin/src-v8-6/src/arm/simulator-arm.cc:3266 0x083a2880
|
| +// 9 v8::internal::Simulator::Call() /home/prybin/src-v8-6/src/arm/simulator-arm.cc:3346 0x083a2c1f
|
| +// 8 v8::internal::Invoke() /home/prybin/src-v8-6/src/execution.cc:118 0x080dce72
|
| +// 7 v8::internal::Execution::Call() /home/prybin/src-v8-6/src/execution.cc:179 0x080dd388
|
| +// 6 v8::Script::Run() /home/prybin/src-v8-6/src/api.cc:1612 0x080668ae
|
| +// 5 v8::Shell::ExecuteString() /home/prybin/src-v8-6/src/d8.cc:166 0x0804ba03
|
| +// 4 v8::SourceGroup::Execute() /home/prybin/src-v8-6/src/d8.cc:1550 0x08052b91
|
| +// 3 v8::Shell::RunMain() /home/prybin/src-v8-6/src/d8.cc:1797 0x0805360a
|
| +// 2 v8::Shell::Main() /home/prybin/src-v8-6/src/d8.cc:1851 0x0805387a
|
| +// 1 main() /home/prybin/src-v8-6/src/d8.cc:1906 0x080539e6
|
| +
|
| + FATAL("delta value is too large");
|
| + }
|
| __ mov(temp, Operand(delta * kPointerSize));
|
| __ StoreToSafepointRegisterSlot(temp, temp);
|
| CallCodeGeneric(stub.GetCode(),
|
|
|