Work-around weird GCC 4.6 linker issue with SmiTagging template.
authorbmeurer@chromium.org <bmeurer@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 18 Aug 2014 09:12:12 +0000 (09:12 +0000)
committerbmeurer@chromium.org <bmeurer@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 18 Aug 2014 09:12:12 +0000 (09:12 +0000)
TBR=rossberg@chromium.org

Review URL: https://codereview.chromium.org/485653002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23146 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/compiler/change-lowering.cc

index b07e548..86c473f 100644 (file)
@@ -42,8 +42,14 @@ Node* ChangeLowering::HeapNumberValueIndexConstant() {
 
 
 Node* ChangeLowering::SmiShiftBitsConstant() {
-  const int smi_shift_size = (machine()->is64() ? SmiTagging<8>::kSmiShiftSize
-                                                : SmiTagging<4>::kSmiShiftSize);
+  // TODO(turbofan): Work-around for weird GCC 4.6 linker issue:
+  // src/compiler/change-lowering.cc:46: undefined reference to
+  // `v8::internal::SmiTagging<4u>::kSmiShiftSize'
+  // src/compiler/change-lowering.cc:46: undefined reference to
+  // `v8::internal::SmiTagging<8u>::kSmiShiftSize'
+  STATIC_ASSERT(SmiTagging<4>::kSmiShiftSize == 0);
+  STATIC_ASSERT(SmiTagging<8>::kSmiShiftSize == 31);
+  const int smi_shift_size = machine()->is64() ? 31 : 0;
   return jsgraph()->Int32Constant(smi_shift_size + kSmiTagSize);
 }