Собираю 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 идентичны, поэтому, желание компилятора пооптимизировать понятно, но ведь код в этом месте ожидает адрес вполне конкретной функции!
Вопрос, как лечить?