From e48d4661d868c38cbdf11fd150fc54546eb1abf9 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 17 Jan 2013 13:42:42 +0100 Subject: [PATCH] Fix our NaN boxing. -NaN was not recognised as a double, but as a pointer, leading to wrong behavior and crashes. We actually have one more bit available, so let's use it. Change-Id: I505ed5748228e4337d99da3b4eda43960967e117 Reviewed-by: Simon Hausmann --- qmljs_value.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/qmljs_value.h b/qmljs_value.h index 9a4fcdb..1b94615 100644 --- a/qmljs_value.h +++ b/qmljs_value.h @@ -98,9 +98,9 @@ struct Value }; enum Masks { - NotDouble_Mask = 0xfff80000, - Type_Mask = 0xffff0000, - Immediate_Mask = NotDouble_Mask | 0x00040000, + NotDouble_Mask = 0xfffc0000, + Type_Mask = 0xffff8000, + Immediate_Mask = NotDouble_Mask | 0x00008000, Tag_Shift = 32 }; enum ValueType { @@ -113,7 +113,7 @@ struct Value }; enum ImmediateFlags { - ConvertibleToInt = Immediate_Mask | (0x1 << 15) + ConvertibleToInt = Immediate_Mask | 0x1 }; enum ValueTypeInternal { -- 2.7.4