| Differences between
and this patch
- Source/JavaScriptCore/runtime/JSGlobalObject.cpp -1 / +1 lines
Lines 352-358 void JSGlobalObject::init(VM& vm) Source/JavaScriptCore/runtime/JSGlobalObject.cpp_sec1
352
#endif
352
#endif
353
353
354
    m_parseIntFunction.set(vm, this, JSFunction::create(vm, this, 2, vm.propertyNames->parseInt.string(), globalFuncParseInt, NoIntrinsic));
354
    m_parseIntFunction.set(vm, this, JSFunction::create(vm, this, 2, vm.propertyNames->parseInt.string(), globalFuncParseInt, NoIntrinsic));
355
    putDirectWithoutTransition(vm, vm.propertyNames->parseInt, m_parseIntFunction.get(), DontEnum | Function);
355
    putDirectWithoutTransition(vm, vm.propertyNames->parseInt, m_parseIntFunction.get(), DontEnum);
356
356
357
#define CREATE_PROTOTYPE_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName) \
357
#define CREATE_PROTOTYPE_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName) \
358
m_ ## lowerName ## Prototype.set(vm, this, capitalName##Prototype::create(vm, this, capitalName##Prototype::createStructure(vm, this, m_objectPrototype.get()))); \
358
m_ ## lowerName ## Prototype.set(vm, this, capitalName##Prototype::create(vm, this, capitalName##Prototype::createStructure(vm, this, m_objectPrototype.get()))); \
- Source/JavaScriptCore/runtime/JSObject.h -1 lines
Lines 75-81 COMPILE_ASSERT(None < FirstInternalAttri Source/JavaScriptCore/runtime/JSObject.h_sec1
75
COMPILE_ASSERT(ReadOnly < FirstInternalAttribute, ReadOnly_is_below_FirstInternalAttribute);
75
COMPILE_ASSERT(ReadOnly < FirstInternalAttribute, ReadOnly_is_below_FirstInternalAttribute);
76
COMPILE_ASSERT(DontEnum < FirstInternalAttribute, DontEnum_is_below_FirstInternalAttribute);
76
COMPILE_ASSERT(DontEnum < FirstInternalAttribute, DontEnum_is_below_FirstInternalAttribute);
77
COMPILE_ASSERT(DontDelete < FirstInternalAttribute, DontDelete_is_below_FirstInternalAttribute);
77
COMPILE_ASSERT(DontDelete < FirstInternalAttribute, DontDelete_is_below_FirstInternalAttribute);
78
COMPILE_ASSERT(Function < FirstInternalAttribute, Function_is_below_FirstInternalAttribute);
79
COMPILE_ASSERT(Accessor < FirstInternalAttribute, Accessor_is_below_FirstInternalAttribute);
78
COMPILE_ASSERT(Accessor < FirstInternalAttribute, Accessor_is_below_FirstInternalAttribute);
80
79
81
class JSFinalObject;
80
class JSFinalObject;
- Source/JavaScriptCore/runtime/Lookup.cpp -3 / +3 lines
Lines 1-5 Source/JavaScriptCore/runtime/Lookup.cpp_sec1
1
/*
1
/*
2
 *  Copyright (C) 2008, 2012 Apple Inc. All rights reserved.
2
 *  Copyright (C) 2008, 2012, 2015 Apple Inc. All rights reserved.
3
 *
3
 *
4
 *  This library is free software; you can redistribute it and/or
4
 *  This library is free software; you can redistribute it and/or
5
 *  modify it under the terms of the GNU Lesser General Public
5
 *  modify it under the terms of the GNU Lesser General Public
Lines 56-66 bool setUpStaticFunctionSlot(ExecState* Source/JavaScriptCore/runtime/Lookup.cpp_sec2
56
            return false;
56
            return false;
57
57
58
        if (entry->attributes() & Builtin)
58
        if (entry->attributes() & Builtin)
59
            thisObj->putDirectBuiltinFunction(vm, thisObj->globalObject(), propertyName, entry->builtinGenerator()(vm), entry->attributes());
59
            thisObj->putDirectBuiltinFunction(vm, thisObj->globalObject(), propertyName, entry->builtinGenerator()(vm), attributesForStructure(entry->attributes()));
60
        else if (entry->attributes() & Function) {
60
        else if (entry->attributes() & Function) {
61
            thisObj->putDirectNativeFunction(
61
            thisObj->putDirectNativeFunction(
62
                vm, thisObj->globalObject(), propertyName, entry->functionLength(),
62
                vm, thisObj->globalObject(), propertyName, entry->functionLength(),
63
                entry->function(), entry->intrinsic(), entry->attributes());
63
                entry->function(), entry->intrinsic(), attributesForStructure(entry->attributes()));
64
        } else {
64
        } else {
65
            ASSERT(isAccessor);
65
            ASSERT(isAccessor);
66
            reifyStaticAccessor(vm, *entry, *thisObj, propertyName);
66
            reifyStaticAccessor(vm, *entry, *thisObj, propertyName);
- Source/JavaScriptCore/runtime/Lookup.h -9 / +10 lines
Lines 188-198 inline bool getStaticPropertySlot(ExecSt Source/JavaScriptCore/runtime/Lookup.h_sec1
188
        return setUpStaticFunctionSlot(exec, entry, thisObj, propertyName, slot);
188
        return setUpStaticFunctionSlot(exec, entry, thisObj, propertyName, slot);
189
189
190
    if (entry->attributes() & ConstantInteger) {
190
    if (entry->attributes() & ConstantInteger) {
191
        slot.setValue(thisObj, entry->attributes(), jsNumber(entry->constantInteger()));
191
        slot.setValue(thisObj, attributesForStructure(entry->attributes()), jsNumber(entry->constantInteger()));
192
        return true;
192
        return true;
193
    }
193
    }
194
194
195
    slot.setCacheableCustom(thisObj, entry->attributes(), entry->propertyGetter());
195
    slot.setCacheableCustom(thisObj, attributesForStructure(entry->attributes()), entry->propertyGetter());
196
    return true;
196
    return true;
197
}
197
}
198
198
Lines 229-239 inline bool getStaticValueSlot(ExecState Source/JavaScriptCore/runtime/Lookup.h_sec2
229
    ASSERT(!(entry->attributes() & BuiltinOrFunctionOrAccessor));
229
    ASSERT(!(entry->attributes() & BuiltinOrFunctionOrAccessor));
230
230
231
    if (entry->attributes() & ConstantInteger) {
231
    if (entry->attributes() & ConstantInteger) {
232
        slot.setValue(thisObj, entry->attributes(), jsNumber(entry->constantInteger()));
232
        slot.setValue(thisObj, attributesForStructure(entry->attributes()), jsNumber(entry->constantInteger()));
233
        return true;
233
        return true;
234
    }
234
    }
235
235
236
    slot.setCacheableCustom(thisObj, entry->attributes(), entry->propertyGetter());
236
    slot.setCacheableCustom(thisObj, attributesForStructure(entry->attributes()), entry->propertyGetter());
237
    return true;
237
    return true;
238
}
238
}
239
239
Lines 279-296 inline void reifyStaticProperties(VM& vm Source/JavaScriptCore/runtime/Lookup.h_sec3
279
279
280
        Identifier propertyName = Identifier::fromString(&vm, reinterpret_cast<const LChar*>(value.m_key), strlen(value.m_key));
280
        Identifier propertyName = Identifier::fromString(&vm, reinterpret_cast<const LChar*>(value.m_key), strlen(value.m_key));
281
        if (value.attributes() & Builtin) {
281
        if (value.attributes() & Builtin) {
282
            thisObj.putDirectBuiltinFunction(vm, thisObj.globalObject(), propertyName, value.builtinGenerator()(vm), value.attributes());
282
            thisObj.putDirectBuiltinFunction(vm, thisObj.globalObject(), propertyName, value.builtinGenerator()(vm), attributesForStructure(value.attributes()));
283
            continue;
283
            continue;
284
        }
284
        }
285
285
286
        if (value.attributes() & Function) {
286
        if (value.attributes() & Function) {
287
            thisObj.putDirectNativeFunction(vm, thisObj.globalObject(), propertyName, value.functionLength(),
287
            thisObj.putDirectNativeFunction(
288
                value.function(), value.intrinsic(), value.attributes());
288
                vm, thisObj.globalObject(), propertyName, value.functionLength(),
289
                value.function(), value.intrinsic(), attributesForStructure(value.attributes()));
289
            continue;
290
            continue;
290
        }
291
        }
291
292
292
        if (value.attributes() & ConstantInteger) {
293
        if (value.attributes() & ConstantInteger) {
293
            thisObj.putDirect(vm, propertyName, jsNumber(value.constantInteger()), value.attributes());
294
            thisObj.putDirect(vm, propertyName, jsNumber(value.constantInteger()), attributesForStructure(value.attributes()));
294
            continue;
295
            continue;
295
        }
296
        }
296
297
Lines 300-306 inline void reifyStaticProperties(VM& vm Source/JavaScriptCore/runtime/Lookup.h_sec4
300
        }
301
        }
301
302
302
        CustomGetterSetter* customGetterSetter = CustomGetterSetter::create(vm, value.propertyGetter(), value.propertyPutter());
303
        CustomGetterSetter* customGetterSetter = CustomGetterSetter::create(vm, value.propertyGetter(), value.propertyPutter());
303
        thisObj.putDirectCustomAccessor(vm, propertyName, customGetterSetter, value.attributes());
304
        thisObj.putDirectCustomAccessor(vm, propertyName, customGetterSetter, attributesForStructure(value.attributes()));
304
    }
305
    }
305
}
306
}
306
307
- Source/JavaScriptCore/runtime/MathObject.cpp -36 / +36 lines
Lines 1-6 Source/JavaScriptCore/runtime/MathObject.cpp_sec1
1
/*
1
/*
2
 *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
2
 *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
3
 *  Copyright (C) 2007, 2008, 2013 Apple Inc. All Rights Reserved.
3
 *  Copyright (C) 2007, 2008, 2013, 2015 Apple Inc. All Rights Reserved.
4
 *
4
 *
5
 *  This library is free software; you can redistribute it and/or
5
 *  This library is free software; you can redistribute it and/or
6
 *  modify it under the terms of the GNU Lesser General Public
6
 *  modify it under the terms of the GNU Lesser General Public
Lines 95-135 void MathObject::finishCreation(VM& vm, Source/JavaScriptCore/runtime/MathObject.cpp_sec2
95
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "SQRT1_2"), jsNumber(sqrt(0.5)), DontDelete | DontEnum | ReadOnly);
95
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "SQRT1_2"), jsNumber(sqrt(0.5)), DontDelete | DontEnum | ReadOnly);
96
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "SQRT2"), jsNumber(sqrt(2.0)), DontDelete | DontEnum | ReadOnly);
96
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "SQRT2"), jsNumber(sqrt(2.0)), DontDelete | DontEnum | ReadOnly);
97
97
98
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "abs"), 1, mathProtoFuncAbs, AbsIntrinsic, DontEnum | Function);
98
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "abs"), 1, mathProtoFuncAbs, AbsIntrinsic, DontEnum);
99
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "acos"), 1, mathProtoFuncACos, NoIntrinsic, DontEnum | Function);
99
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "acos"), 1, mathProtoFuncACos, NoIntrinsic, DontEnum);
100
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "asin"), 1, mathProtoFuncASin, NoIntrinsic, DontEnum | Function);
100
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "asin"), 1, mathProtoFuncASin, NoIntrinsic, DontEnum);
101
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "atan"), 1, mathProtoFuncATan, NoIntrinsic, DontEnum | Function);
101
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "atan"), 1, mathProtoFuncATan, NoIntrinsic, DontEnum);
102
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "acosh"), 1, mathProtoFuncACosh, NoIntrinsic, DontEnum | Function);
102
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "acosh"), 1, mathProtoFuncACosh, NoIntrinsic, DontEnum);
103
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "asinh"), 1, mathProtoFuncASinh, NoIntrinsic, DontEnum | Function);
103
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "asinh"), 1, mathProtoFuncASinh, NoIntrinsic, DontEnum);
104
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "atanh"), 1, mathProtoFuncATanh, NoIntrinsic, DontEnum | Function);
104
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "atanh"), 1, mathProtoFuncATanh, NoIntrinsic, DontEnum);
105
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "atan2"), 2, mathProtoFuncATan2, NoIntrinsic, DontEnum | Function);
105
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "atan2"), 2, mathProtoFuncATan2, NoIntrinsic, DontEnum);
106
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "cbrt"), 1, mathProtoFuncCbrt, NoIntrinsic, DontEnum | Function);
106
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "cbrt"), 1, mathProtoFuncCbrt, NoIntrinsic, DontEnum);
107
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "ceil"), 1, mathProtoFuncCeil, CeilIntrinsic, DontEnum | Function);
107
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "ceil"), 1, mathProtoFuncCeil, CeilIntrinsic, DontEnum);
108
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "clz32"), 1, mathProtoFuncClz32, Clz32Intrinsic, DontEnum | Function);
108
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "clz32"), 1, mathProtoFuncClz32, Clz32Intrinsic, DontEnum);
109
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "cos"), 1, mathProtoFuncCos, CosIntrinsic, DontEnum | Function);
109
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "cos"), 1, mathProtoFuncCos, CosIntrinsic, DontEnum);
110
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "cosh"), 1, mathProtoFuncCosh, NoIntrinsic, DontEnum | Function);
110
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "cosh"), 1, mathProtoFuncCosh, NoIntrinsic, DontEnum);
111
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "exp"), 1, mathProtoFuncExp, ExpIntrinsic, DontEnum | Function);
111
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "exp"), 1, mathProtoFuncExp, ExpIntrinsic, DontEnum);
112
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "expm1"), 1, mathProtoFuncExpm1, NoIntrinsic, DontEnum | Function);
112
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "expm1"), 1, mathProtoFuncExpm1, NoIntrinsic, DontEnum);
113
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "floor"), 1, mathProtoFuncFloor, FloorIntrinsic, DontEnum | Function);
113
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "floor"), 1, mathProtoFuncFloor, FloorIntrinsic, DontEnum);
114
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "fround"), 1, mathProtoFuncFround, FRoundIntrinsic, DontEnum | Function);
114
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "fround"), 1, mathProtoFuncFround, FRoundIntrinsic, DontEnum);
115
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "hypot"), 2, mathProtoFuncHypot, NoIntrinsic, DontEnum | Function);
115
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "hypot"), 2, mathProtoFuncHypot, NoIntrinsic, DontEnum);
116
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "log"), 1, mathProtoFuncLog, LogIntrinsic, DontEnum | Function);
116
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "log"), 1, mathProtoFuncLog, LogIntrinsic, DontEnum);
117
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "log10"), 1, mathProtoFuncLog10, NoIntrinsic, DontEnum | Function);
117
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "log10"), 1, mathProtoFuncLog10, NoIntrinsic, DontEnum);
118
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "log1p"), 1, mathProtoFuncLog1p, NoIntrinsic, DontEnum | Function);
118
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "log1p"), 1, mathProtoFuncLog1p, NoIntrinsic, DontEnum);
119
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "log2"), 1, mathProtoFuncLog2, NoIntrinsic, DontEnum | Function);
119
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "log2"), 1, mathProtoFuncLog2, NoIntrinsic, DontEnum);
120
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "max"), 2, mathProtoFuncMax, MaxIntrinsic, DontEnum | Function);
120
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "max"), 2, mathProtoFuncMax, MaxIntrinsic, DontEnum);
121
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "min"), 2, mathProtoFuncMin, MinIntrinsic, DontEnum | Function);
121
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "min"), 2, mathProtoFuncMin, MinIntrinsic, DontEnum);
122
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "pow"), 2, mathProtoFuncPow, PowIntrinsic, DontEnum | Function);
122
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "pow"), 2, mathProtoFuncPow, PowIntrinsic, DontEnum);
123
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "random"), 0, mathProtoFuncRandom, NoIntrinsic, DontEnum | Function);
123
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "random"), 0, mathProtoFuncRandom, NoIntrinsic, DontEnum);
124
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "round"), 1, mathProtoFuncRound, RoundIntrinsic, DontEnum | Function);
124
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "round"), 1, mathProtoFuncRound, RoundIntrinsic, DontEnum);
125
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "sign"), 1, mathProtoFuncSign, NoIntrinsic, DontEnum | Function);
125
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "sign"), 1, mathProtoFuncSign, NoIntrinsic, DontEnum);
126
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "sin"), 1, mathProtoFuncSin, SinIntrinsic, DontEnum | Function);
126
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "sin"), 1, mathProtoFuncSin, SinIntrinsic, DontEnum);
127
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "sinh"), 1, mathProtoFuncSinh, NoIntrinsic, DontEnum | Function);
127
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "sinh"), 1, mathProtoFuncSinh, NoIntrinsic, DontEnum);
128
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "sqrt"), 1, mathProtoFuncSqrt, SqrtIntrinsic, DontEnum | Function);
128
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "sqrt"), 1, mathProtoFuncSqrt, SqrtIntrinsic, DontEnum);
129
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "tan"), 1, mathProtoFuncTan, NoIntrinsic, DontEnum | Function);
129
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "tan"), 1, mathProtoFuncTan, NoIntrinsic, DontEnum);
130
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "tanh"), 1, mathProtoFuncTanh, NoIntrinsic, DontEnum | Function);
130
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "tanh"), 1, mathProtoFuncTanh, NoIntrinsic, DontEnum);
131
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "trunc"), 1, mathProtoFuncTrunc, NoIntrinsic, DontEnum | Function);
131
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "trunc"), 1, mathProtoFuncTrunc, NoIntrinsic, DontEnum);
132
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "imul"), 2, mathProtoFuncIMul, IMulIntrinsic, DontEnum | Function);
132
    putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, "imul"), 2, mathProtoFuncIMul, IMulIntrinsic, DontEnum);
133
}
133
}
134
134
135
// ------------------------------ Functions --------------------------------
135
// ------------------------------ Functions --------------------------------
- Source/JavaScriptCore/runtime/NumberConstructor.cpp -7 / +7 lines
Lines 1-6 Source/JavaScriptCore/runtime/NumberConstructor.cpp_sec1
1
/*
1
/*
2
 *  Copyright (C) 1999-2000,2003 Harri Porten (porten@kde.org)
2
 *  Copyright (C) 1999-2000,2003 Harri Porten (porten@kde.org)
3
 *  Copyright (C) 2007, 2008, 2011 Apple Inc. All rights reserved.
3
 *  Copyright (C) 2007, 2008, 2011, 2015 Apple Inc. All rights reserved.
4
 *
4
 *
5
 *  This library is free software; you can redistribute it and/or
5
 *  This library is free software; you can redistribute it and/or
6
 *  modify it under the terms of the GNU Lesser General Public
6
 *  modify it under the terms of the GNU Lesser General Public
Lines 68-79 void NumberConstructor::finishCreation(V Source/JavaScriptCore/runtime/NumberConstructor.cpp_sec2
68
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "POSITIVE_INFINITY"), jsDoubleNumber(std::numeric_limits<double>::infinity()), DontDelete | DontEnum | ReadOnly);
68
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "POSITIVE_INFINITY"), jsDoubleNumber(std::numeric_limits<double>::infinity()), DontDelete | DontEnum | ReadOnly);
69
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "NaN"), jsNaN(), DontDelete | DontEnum | ReadOnly);
69
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "NaN"), jsNaN(), DontDelete | DontEnum | ReadOnly);
70
70
71
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "isFinite"), 1, numberConstructorFuncIsFinite, NoIntrinsic, DontEnum | Function);
71
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "isFinite"), 1, numberConstructorFuncIsFinite, NoIntrinsic, DontEnum);
72
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "isInteger"), 1, numberConstructorFuncIsInteger, NoIntrinsic, DontEnum | Function);
72
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "isInteger"), 1, numberConstructorFuncIsInteger, NoIntrinsic, DontEnum);
73
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "isNaN"), 1, numberConstructorFuncIsNaN, NoIntrinsic, DontEnum | Function);
73
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "isNaN"), 1, numberConstructorFuncIsNaN, NoIntrinsic, DontEnum);
74
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "isSafeInteger"), 1, numberConstructorFuncIsSafeInteger, NoIntrinsic, DontEnum | Function);
74
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "isSafeInteger"), 1, numberConstructorFuncIsSafeInteger, NoIntrinsic, DontEnum);
75
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "parseFloat"), 1, globalFuncParseFloat, NoIntrinsic, DontEnum | Function);
75
    putDirectNativeFunctionWithoutTransition(vm, numberPrototype->globalObject(), Identifier::fromString(&vm, "parseFloat"), 1, globalFuncParseFloat, NoIntrinsic, DontEnum);
76
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "parseInt"), numberPrototype->globalObject()->parseIntFunction(), DontEnum | Function);
76
    putDirectWithoutTransition(vm, Identifier::fromString(&vm, "parseInt"), numberPrototype->globalObject()->parseIntFunction(), DontEnum);
77
}
77
}
78
78
79
// ECMA 15.7.1
79
// ECMA 15.7.1
- Source/JavaScriptCore/runtime/PropertySlot.h -5 / +27 lines
Lines 40-55 enum Attribute { Source/JavaScriptCore/runtime/PropertySlot.h_sec1
40
    ReadOnly          = 1 << 1,  // property can be only read, not written
40
    ReadOnly          = 1 << 1,  // property can be only read, not written
41
    DontEnum          = 1 << 2,  // property doesn't appear in (for .. in ..)
41
    DontEnum          = 1 << 2,  // property doesn't appear in (for .. in ..)
42
    DontDelete        = 1 << 3,  // property can't be deleted
42
    DontDelete        = 1 << 3,  // property can't be deleted
43
    Function          = 1 << 4,  // property is a function - only used by static hashtables
43
    Accessor          = 1 << 4,  // property is a getter/setter
44
    Accessor          = 1 << 5,  // property is a getter/setter
44
    CustomAccessor    = 1 << 5,
45
    CustomAccessor    = 1 << 6,
45
46
    Builtin           = 1 << 7, // property is a builtin function - only used by static hashtables
46
    // Things that are used by static hashtables are not in the byte.
47
    ConstantInteger   = 1 << 8, // property is a constant integer - only used by static hashtables
47
    Function          = 1 << 8,  // property is a function - only used by static hashtables
48
    Builtin           = 1 << 9, // property is a builtin function - only used by static hashtables
49
    ConstantInteger   = 1 << 10, // property is a constant integer - only used by static hashtables
48
    BuiltinOrFunction = Builtin | Function, // helper only used by static hashtables
50
    BuiltinOrFunction = Builtin | Function, // helper only used by static hashtables
49
    BuiltinOrFunctionOrAccessor = Builtin | Function | Accessor, // helper only used by static hashtables
51
    BuiltinOrFunctionOrAccessor = Builtin | Function | Accessor, // helper only used by static hashtables
50
    BuiltinOrFunctionOrAccessorOrConstant = Builtin | Function | Accessor | ConstantInteger, // helper only used by static hashtables
52
    BuiltinOrFunctionOrAccessorOrConstant = Builtin | Function | Accessor | ConstantInteger, // helper only used by static hashtables
51
};
53
};
52
54
55
inline unsigned attributesForStructure(unsigned attributes)
56
{
57
    // The attributes that are used just for the static hashtable are at bit 8 and higher.
58
    return static_cast<uint8_t>(attributes);
59
}
60
53
class PropertySlot {
61
class PropertySlot {
54
    enum PropertyType {
62
    enum PropertyType {
55
        TypeUnset,
63
        TypeUnset,
Lines 125-130 public: Source/JavaScriptCore/runtime/PropertySlot.h_sec2
125
133
126
    void setValue(JSObject* slotBase, unsigned attributes, JSValue value)
134
    void setValue(JSObject* slotBase, unsigned attributes, JSValue value)
127
    {
135
    {
136
        ASSERT(attributes == attributesForStructure(attributes));
137
        
128
        m_data.value = JSValue::encode(value);
138
        m_data.value = JSValue::encode(value);
129
        m_attributes = attributes;
139
        m_attributes = attributes;
130
140
Lines 136-141 public: Source/JavaScriptCore/runtime/PropertySlot.h_sec3
136
    
146
    
137
    void setValue(JSObject* slotBase, unsigned attributes, JSValue value, PropertyOffset offset)
147
    void setValue(JSObject* slotBase, unsigned attributes, JSValue value, PropertyOffset offset)
138
    {
148
    {
149
        ASSERT(attributes == attributesForStructure(attributes));
150
        
139
        ASSERT(value);
151
        ASSERT(value);
140
        m_data.value = JSValue::encode(value);
152
        m_data.value = JSValue::encode(value);
141
        m_attributes = attributes;
153
        m_attributes = attributes;
Lines 148-153 public: Source/JavaScriptCore/runtime/PropertySlot.h_sec4
148
160
149
    void setValue(JSString*, unsigned attributes, JSValue value)
161
    void setValue(JSString*, unsigned attributes, JSValue value)
150
    {
162
    {
163
        ASSERT(attributes == attributesForStructure(attributes));
164
        
151
        ASSERT(value);
165
        ASSERT(value);
152
        m_data.value = JSValue::encode(value);
166
        m_data.value = JSValue::encode(value);
153
        m_attributes = attributes;
167
        m_attributes = attributes;
Lines 159-164 public: Source/JavaScriptCore/runtime/PropertySlot.h_sec5
159
173
160
    void setCustom(JSObject* slotBase, unsigned attributes, GetValueFunc getValue)
174
    void setCustom(JSObject* slotBase, unsigned attributes, GetValueFunc getValue)
161
    {
175
    {
176
        ASSERT(attributes == attributesForStructure(attributes));
177
        
162
        ASSERT(getValue);
178
        ASSERT(getValue);
163
        m_data.custom.getValue = getValue;
179
        m_data.custom.getValue = getValue;
164
        m_attributes = attributes;
180
        m_attributes = attributes;
Lines 171-176 public: Source/JavaScriptCore/runtime/PropertySlot.h_sec6
171
    
187
    
172
    void setCacheableCustom(JSObject* slotBase, unsigned attributes, GetValueFunc getValue)
188
    void setCacheableCustom(JSObject* slotBase, unsigned attributes, GetValueFunc getValue)
173
    {
189
    {
190
        ASSERT(attributes == attributesForStructure(attributes));
191
        
174
        ASSERT(getValue);
192
        ASSERT(getValue);
175
        m_data.custom.getValue = getValue;
193
        m_data.custom.getValue = getValue;
176
        m_attributes = attributes;
194
        m_attributes = attributes;
Lines 183-188 public: Source/JavaScriptCore/runtime/PropertySlot.h_sec7
183
201
184
    void setGetterSlot(JSObject* slotBase, unsigned attributes, GetterSetter* getterSetter)
202
    void setGetterSlot(JSObject* slotBase, unsigned attributes, GetterSetter* getterSetter)
185
    {
203
    {
204
        ASSERT(attributes == attributesForStructure(attributes));
205
        
186
        ASSERT(getterSetter);
206
        ASSERT(getterSetter);
187
        m_data.getter.getterSetter = getterSetter;
207
        m_data.getter.getterSetter = getterSetter;
188
        m_attributes = attributes;
208
        m_attributes = attributes;
Lines 195-200 public: Source/JavaScriptCore/runtime/PropertySlot.h_sec8
195
215
196
    void setCacheableGetterSlot(JSObject* slotBase, unsigned attributes, GetterSetter* getterSetter, PropertyOffset offset)
216
    void setCacheableGetterSlot(JSObject* slotBase, unsigned attributes, GetterSetter* getterSetter, PropertyOffset offset)
197
    {
217
    {
218
        ASSERT(attributes == attributesForStructure(attributes));
219
        
198
        ASSERT(getterSetter);
220
        ASSERT(getterSetter);
199
        m_data.getter.getterSetter = getterSetter;
221
        m_data.getter.getterSetter = getterSetter;
200
        m_attributes = attributes;
222
        m_attributes = attributes;
- Source/JavaScriptCore/runtime/Structure.h -1 / +2 lines
Lines 80-86 static const unsigned outOfLineGrowthFac Source/JavaScriptCore/runtime/Structure.h_sec1
80
struct PropertyMapEntry {
80
struct PropertyMapEntry {
81
    UniquedStringImpl* key;
81
    UniquedStringImpl* key;
82
    PropertyOffset offset;
82
    PropertyOffset offset;
83
    unsigned attributes;
83
    uint8_t attributes;
84
84
85
    PropertyMapEntry()
85
    PropertyMapEntry()
86
        : key(nullptr)
86
        : key(nullptr)
Lines 94-99 struct PropertyMapEntry { Source/JavaScriptCore/runtime/Structure.h_sec2
94
        , offset(offset)
94
        , offset(offset)
95
        , attributes(attributes)
95
        , attributes(attributes)
96
    {
96
    {
97
        ASSERT(this->attributes == attributes);
97
    }
98
    }
98
};
99
};
99
100

Return to Bug 148611