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(), |