| Index: fpdfsdk/javascript/global.cpp
 | 
| diff --git a/fpdfsdk/javascript/global.cpp b/fpdfsdk/javascript/global.cpp
 | 
| index c3fc548a7333a657dc036a4e204924dfd5b4737f..45e2bd0a905ca0107da3e8d00c3c84373f7df7fa 100644
 | 
| --- a/fpdfsdk/javascript/global.cpp
 | 
| +++ b/fpdfsdk/javascript/global.cpp
 | 
| @@ -17,63 +17,6 @@
 | 
|  #include "fpdfsdk/javascript/cjs_context.h"
 | 
|  #include "fpdfsdk/javascript/resource.h"
 | 
|  
 | 
| -// Helper class for compile-time calculation of hash values in order to
 | 
| -// avoid having global object initializers.
 | 
| -template <unsigned ACC, wchar_t... Ns>
 | 
| -struct CHash;
 | 
| -
 | 
| -// Only needed to hash single-character strings.
 | 
| -template <wchar_t N>
 | 
| -struct CHash<N> {
 | 
| -  static const unsigned value = N;
 | 
| -};
 | 
| -
 | 
| -template <unsigned ACC, wchar_t N>
 | 
| -struct CHash<ACC, N> {
 | 
| -  static const unsigned value = (ACC * 1313LLU + N) & 0xFFFFFFFF;
 | 
| -};
 | 
| -
 | 
| -template <unsigned ACC, wchar_t N, wchar_t... Ns>
 | 
| -struct CHash<ACC, N, Ns...> {
 | 
| -  static const unsigned value = CHash<CHash<ACC, N>::value, Ns...>::value;
 | 
| -};
 | 
| -
 | 
| -const unsigned int JSCONST_nStringHash =
 | 
| -    CHash<'s', 't', 'r', 'i', 'n', 'g'>::value;
 | 
| -const unsigned int JSCONST_nNumberHash =
 | 
| -    CHash<'n', 'u', 'm', 'b', 'e', 'r'>::value;
 | 
| -const unsigned int JSCONST_nBoolHash =
 | 
| -    CHash<'b', 'o', 'o', 'l', 'e', 'a', 'n'>::value;
 | 
| -const unsigned int JSCONST_nDateHash = CHash<'d', 'a', 't', 'e'>::value;
 | 
| -const unsigned int JSCONST_nObjectHash =
 | 
| -    CHash<'o', 'b', 'j', 'e', 'c', 't'>::value;
 | 
| -const unsigned int JSCONST_nFXobjHash = CHash<'f', 'x', 'o', 'b', 'j'>::value;
 | 
| -const unsigned int JSCONST_nNullHash = CHash<'n', 'u', 'l', 'l'>::value;
 | 
| -const unsigned int JSCONST_nUndefHash =
 | 
| -    CHash<'u', 'n', 'd', 'e', 'f', 'i', 'n', 'e', 'd'>::value;
 | 
| -
 | 
| -static unsigned JS_CalcHash(const wchar_t* main) {
 | 
| -  return (unsigned)FX_HashCode_GetW(CFX_WideStringC(main), false);
 | 
| -}
 | 
| -
 | 
| -#ifndef NDEBUG
 | 
| -class HashVerify {
 | 
| - public:
 | 
| -  HashVerify();
 | 
| -} g_hashVerify;
 | 
| -
 | 
| -HashVerify::HashVerify() {
 | 
| -  ASSERT(JSCONST_nStringHash == JS_CalcHash(kFXJSValueNameString));
 | 
| -  ASSERT(JSCONST_nNumberHash == JS_CalcHash(kFXJSValueNameNumber));
 | 
| -  ASSERT(JSCONST_nBoolHash == JS_CalcHash(kFXJSValueNameBoolean));
 | 
| -  ASSERT(JSCONST_nDateHash == JS_CalcHash(kFXJSValueNameDate));
 | 
| -  ASSERT(JSCONST_nObjectHash == JS_CalcHash(kFXJSValueNameObject));
 | 
| -  ASSERT(JSCONST_nFXobjHash == JS_CalcHash(kFXJSValueNameFxobj));
 | 
| -  ASSERT(JSCONST_nNullHash == JS_CalcHash(kFXJSValueNameNull));
 | 
| -  ASSERT(JSCONST_nUndefHash == JS_CalcHash(kFXJSValueNameUndefined));
 | 
| -}
 | 
| -#endif
 | 
| -
 | 
|  BEGIN_JS_STATIC_CONST(CJS_Global)
 | 
|  END_JS_STATIC_CONST()
 | 
|  
 | 
| @@ -335,9 +278,8 @@ void JSGlobalAlternate::ObjectToArray(IJS_Context* cc,
 | 
|      CFX_WideString ws =
 | 
|          FXJS_ToString(isolate, FXJS_GetArrayElement(isolate, pKeyList, i));
 | 
|      CFX_ByteString sKey = ws.UTF8Encode();
 | 
| -
 | 
|      v8::Local<v8::Value> v = FXJS_GetObjectElement(isolate, pObj, ws);
 | 
| -    switch (GET_VALUE_TYPE(v)) {
 | 
| +    switch (CJS_Value::GetValueType(v)) {
 | 
|        case CJS_Value::VT_number: {
 | 
|          CJS_KeyValue* pObjElement = new CJS_KeyValue;
 | 
|          pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
 | 
| @@ -353,8 +295,7 @@ void JSGlobalAlternate::ObjectToArray(IJS_Context* cc,
 | 
|          array.Add(pObjElement);
 | 
|        } break;
 | 
|        case CJS_Value::VT_string: {
 | 
| -        CFX_ByteString sValue =
 | 
| -            CJS_Value(pRuntime, v, CJS_Value::VT_string).ToCFXByteString();
 | 
| +        CFX_ByteString sValue = CJS_Value(pRuntime, v).ToCFXByteString();
 | 
|          CJS_KeyValue* pObjElement = new CJS_KeyValue;
 | 
|          pObjElement->nType = JS_GLOBALDATA_TYPE_STRING;
 | 
|          pObjElement->sKey = sKey;
 | 
| @@ -500,26 +441,3 @@ FX_BOOL JSGlobalAlternate::SetGlobalVariables(const CFX_ByteString& propname,
 | 
|    m_mapGlobal[propname] = pNewData;
 | 
|    return TRUE;
 | 
|  }
 | 
| -
 | 
| -CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p) {
 | 
| -  const unsigned int nHash = JS_CalcHash(FXJS_GetTypeof(p));
 | 
| -
 | 
| -  if (nHash == JSCONST_nUndefHash)
 | 
| -    return CJS_Value::VT_undefined;
 | 
| -  if (nHash == JSCONST_nNullHash)
 | 
| -    return CJS_Value::VT_null;
 | 
| -  if (nHash == JSCONST_nStringHash)
 | 
| -    return CJS_Value::VT_string;
 | 
| -  if (nHash == JSCONST_nNumberHash)
 | 
| -    return CJS_Value::VT_number;
 | 
| -  if (nHash == JSCONST_nBoolHash)
 | 
| -    return CJS_Value::VT_boolean;
 | 
| -  if (nHash == JSCONST_nDateHash)
 | 
| -    return CJS_Value::VT_date;
 | 
| -  if (nHash == JSCONST_nObjectHash)
 | 
| -    return CJS_Value::VT_object;
 | 
| -  if (nHash == JSCONST_nFXobjHash)
 | 
| -    return CJS_Value::VT_fxobject;
 | 
| -
 | 
| -  return CJS_Value::VT_unknown;
 | 
| -}
 | 
| 
 |