[VC2008] ошибка оптимизации кода?
От: Аноним  
Дата: 13.12.09 00:23
Оценка:
Собираю mozilla js (SpiderMonkey 1.7.0) — в дебаге работает, а в релизе падает.
Смотрю код, где отличается вижу следующее.
Debug:
  if (data->u.var.getter != js_GetLocalVariable)
00CE55FB  mov         eax,dword ptr [data] 
00CE55FE  cmp         dword ptr [eax+1Ch],offset js_GetLocalVariable (0CA5CC0h) 
00CE5605  je          BindLocalVariable+21h (0CE5611h)


Release:
  if (data->u.var.getter != js_GetLocalVariable)
01142150  mov         ecx,dword ptr [eax+1Ch] 
01142153  cmp         ecx,offset js_SetLocalVariable (11217D0h) ; если поиграться с опциями, тут может быть другое, например, xml_hasInstance
01142159  je          BindLocalVariable+11h (1142161h)

Реализации функций js_GetLocalVariable, js_SetLocalVariable и xml_hasInstance идентичны, поэтому, желание компилятора пооптимизировать понятно, но ведь код в этом месте ожидает адрес вполне конкретной функции!
Вопрос, как лечить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.