Diff
Modified: trunk/Source/_javascript_Core/API/JSCallbackConstructor.h (194368 => 194369)
--- trunk/Source/_javascript_Core/API/JSCallbackConstructor.h 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/API/JSCallbackConstructor.h 2015-12-22 20:04:56 UTC (rev 194369)
@@ -34,7 +34,7 @@
class JSCallbackConstructor : public JSDestructibleObject {
public:
typedef JSDestructibleObject Base;
- static const unsigned StructureFlags = Base::StructureFlags | ImplementsHasInstance;
+ static const unsigned StructureFlags = Base::StructureFlags | ImplementsHasInstance | ImplementsDefaultHasInstance;
static JSCallbackConstructor* create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, JSClassRef classRef, JSObjectCallAsConstructorCallback callback)
{
Modified: trunk/Source/_javascript_Core/API/JSCallbackObject.h (194368 => 194369)
--- trunk/Source/_javascript_Core/API/JSCallbackObject.h 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/API/JSCallbackObject.h 2015-12-22 20:04:56 UTC (rev 194369)
@@ -127,7 +127,7 @@
public:
typedef Parent Base;
- static const unsigned StructureFlags = Base::StructureFlags | ProhibitsPropertyCaching | OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | ImplementsHasInstance | OverridesHasInstanceFlag | OverridesGetPropertyNames | TypeOfShouldCallGetCallData;
+ static const unsigned StructureFlags = Base::StructureFlags | ProhibitsPropertyCaching | OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | ImplementsHasInstance | OverridesGetPropertyNames | TypeOfShouldCallGetCallData;
~JSCallbackObject();
Modified: trunk/Source/_javascript_Core/ChangeLog (194368 => 194369)
--- trunk/Source/_javascript_Core/ChangeLog 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/ChangeLog 2015-12-22 20:04:56 UTC (rev 194369)
@@ -1,3 +1,34 @@
+2015-12-22 Keith Miller <[email protected]>
+
+ Remove OverridesHasInstance from TypeInfoFlags
+ https://bugs.webkit.org/show_bug.cgi?id=152005
+
+ Reviewed by Saam Barati.
+
+ Currently, we have three TypeInfo flags associated with instanceof behavior,
+ ImplementsHasInstance, ImplementDefaultHasInstance, and OverridesHasInstance. This patch
+ removes the third and moves the first to the out of line flags. In theory, we should only
+ need one flag but removing ImplementsHasInstance is more involved and should be done in a
+ separate patch.
+
+ * API/JSCallbackConstructor.h:
+ * API/JSCallbackObject.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_overrides_has_instance):
+ * jit/JITOpcodes32_64.cpp:
+ (JSC::JIT::emit_op_overrides_has_instance):
+ * llint/LLIntData.cpp:
+ (JSC::LLInt::Data::performAssertions):
+ * llint/LowLevelInterpreter.asm:
+ * runtime/InternalFunction.h:
+ * runtime/JSBoundFunction.h:
+ * runtime/JSCallee.h:
+ * runtime/JSTypeInfo.h:
+ (JSC::TypeInfo::implementsHasInstance):
+ (JSC::TypeInfo::TypeInfo): Deleted.
+ (JSC::TypeInfo::overridesHasInstance): Deleted.
+ * runtime/NumberConstructor.h:
+
2015-12-22 Filip Pizlo <[email protected]>
FTL B3 should do tail calls
Modified: trunk/Source/_javascript_Core/jit/JITOpcodes.cpp (194368 => 194369)
--- trunk/Source/_javascript_Core/jit/JITOpcodes.cpp 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/jit/JITOpcodes.cpp 2015-12-22 20:04:56 UTC (rev 194369)
@@ -118,7 +118,7 @@
emitGetVirtualRegister(constructor, regT0);
- // Check that constructor 'ImplementsHasInstance' i.e. the object is a C-API user or a bound function.
+ // Check that constructor 'ImplementsDefaultHasInstance' i.e. the object is not a C-API user nor a bound function.
test8(Zero, Address(regT0, JSCell::typeInfoFlagsOffset()), TrustedImm32(ImplementsDefaultHasInstance), regT0);
emitTagBool(regT0);
Jump done = jump();
Modified: trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp (194368 => 194369)
--- trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp 2015-12-22 20:04:56 UTC (rev 194369)
@@ -197,7 +197,7 @@
// We know that constructor is an object from the way bytecode is emitted for instanceof expressions.
emitLoadPayload(constructor, regT0);
- // Check that constructor 'ImplementsHasInstance' i.e. the object is a C-API user or a bound function.
+ // Check that constructor 'ImplementsDefaultHasInstance' i.e. the object is not a C-API user nor a bound function.
test8(Zero, Address(regT0, JSCell::typeInfoFlagsOffset()), TrustedImm32(ImplementsDefaultHasInstance), regT0);
Jump done = jump();
Modified: trunk/Source/_javascript_Core/llint/LLIntData.cpp (194368 => 194369)
--- trunk/Source/_javascript_Core/llint/LLIntData.cpp 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/llint/LLIntData.cpp 2015-12-22 20:04:56 UTC (rev 194369)
@@ -36,6 +36,8 @@
#include "PropertyOffset.h"
#include "WriteBarrier.h"
+#define STATIC_ASSERT(cond) static_assert(cond, "LLInt assumes " #cond)
+
namespace JSC { namespace LLInt {
Instruction* Data::s_exceptionInstructions = 0;
@@ -72,7 +74,6 @@
// Assertions to match LowLevelInterpreter.asm. If you change any of this code, be
// prepared to change LowLevelInterpreter.asm as well!!
-#ifndef NDEBUG
#if USE(JSVALUE64)
const ptrdiff_t PtrSize = 8;
const ptrdiff_t CallFrameHeaderSlots = 5;
@@ -81,20 +82,19 @@
const ptrdiff_t CallFrameHeaderSlots = 4;
#endif
const ptrdiff_t SlotSize = 8;
-#endif
- ASSERT(sizeof(void*) == PtrSize);
- ASSERT(sizeof(Register) == SlotSize);
- ASSERT(JSStack::CallFrameHeaderSize == CallFrameHeaderSlots);
+ STATIC_ASSERT(sizeof(void*) == PtrSize);
+ STATIC_ASSERT(sizeof(Register) == SlotSize);
+ STATIC_ASSERT(JSStack::CallFrameHeaderSize == CallFrameHeaderSlots);
ASSERT(!CallFrame::callerFrameOffset());
- ASSERT(JSStack::CallerFrameAndPCSize == (PtrSize * 2) / SlotSize);
+ STATIC_ASSERT(JSStack::CallerFrameAndPCSize == (PtrSize * 2) / SlotSize);
ASSERT(CallFrame::returnPCOffset() == CallFrame::callerFrameOffset() + PtrSize);
ASSERT(JSStack::CodeBlock * sizeof(Register) == CallFrame::returnPCOffset() + PtrSize);
- ASSERT(JSStack::Callee * sizeof(Register) == JSStack::CodeBlock * sizeof(Register) + SlotSize);
- ASSERT(JSStack::ArgumentCount * sizeof(Register) == JSStack::Callee * sizeof(Register) + SlotSize);
- ASSERT(JSStack::ThisArgument * sizeof(Register) == JSStack::ArgumentCount * sizeof(Register) + SlotSize);
- ASSERT(JSStack::CallFrameHeaderSize == JSStack::ThisArgument);
+ STATIC_ASSERT(JSStack::Callee * sizeof(Register) == JSStack::CodeBlock * sizeof(Register) + SlotSize);
+ STATIC_ASSERT(JSStack::ArgumentCount * sizeof(Register) == JSStack::Callee * sizeof(Register) + SlotSize);
+ STATIC_ASSERT(JSStack::ThisArgument * sizeof(Register) == JSStack::ArgumentCount * sizeof(Register) + SlotSize);
+ STATIC_ASSERT(JSStack::CallFrameHeaderSize == JSStack::ThisArgument);
ASSERT(CallFrame::argumentOffsetIncludingThis(0) == JSStack::ThisArgument);
@@ -106,32 +106,32 @@
ASSERT(OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.payload) == 0);
#endif
#if USE(JSVALUE32_64)
- ASSERT(JSValue::Int32Tag == static_cast<unsigned>(-1));
- ASSERT(JSValue::BooleanTag == static_cast<unsigned>(-2));
- ASSERT(JSValue::NullTag == static_cast<unsigned>(-3));
- ASSERT(JSValue::UndefinedTag == static_cast<unsigned>(-4));
- ASSERT(JSValue::CellTag == static_cast<unsigned>(-5));
- ASSERT(JSValue::EmptyValueTag == static_cast<unsigned>(-6));
- ASSERT(JSValue::DeletedValueTag == static_cast<unsigned>(-7));
- ASSERT(JSValue::LowestTag == static_cast<unsigned>(-7));
+ STATIC_ASSERT(JSValue::Int32Tag == static_cast<unsigned>(-1));
+ STATIC_ASSERT(JSValue::BooleanTag == static_cast<unsigned>(-2));
+ STATIC_ASSERT(JSValue::NullTag == static_cast<unsigned>(-3));
+ STATIC_ASSERT(JSValue::UndefinedTag == static_cast<unsigned>(-4));
+ STATIC_ASSERT(JSValue::CellTag == static_cast<unsigned>(-5));
+ STATIC_ASSERT(JSValue::EmptyValueTag == static_cast<unsigned>(-6));
+ STATIC_ASSERT(JSValue::DeletedValueTag == static_cast<unsigned>(-7));
+ STATIC_ASSERT(JSValue::LowestTag == static_cast<unsigned>(-7));
#else
- ASSERT(TagBitTypeOther == 0x2);
- ASSERT(TagBitBool == 0x4);
- ASSERT(TagBitUndefined == 0x8);
- ASSERT(ValueEmpty == 0x0);
- ASSERT(ValueFalse == (TagBitTypeOther | TagBitBool));
- ASSERT(ValueTrue == (TagBitTypeOther | TagBitBool | 1));
- ASSERT(ValueUndefined == (TagBitTypeOther | TagBitUndefined));
- ASSERT(ValueNull == TagBitTypeOther);
+ STATIC_ASSERT(TagBitTypeOther == 0x2);
+ STATIC_ASSERT(TagBitBool == 0x4);
+ STATIC_ASSERT(TagBitUndefined == 0x8);
+ STATIC_ASSERT(ValueEmpty == 0x0);
+ STATIC_ASSERT(ValueFalse == (TagBitTypeOther | TagBitBool));
+ STATIC_ASSERT(ValueTrue == (TagBitTypeOther | TagBitBool | 1));
+ STATIC_ASSERT(ValueUndefined == (TagBitTypeOther | TagBitUndefined));
+ STATIC_ASSERT(ValueNull == TagBitTypeOther);
#endif
#if (CPU(X86_64) && !OS(WINDOWS)) || CPU(ARM64) || !ENABLE(JIT)
- ASSERT(!maxFrameExtentForSlowPathCall);
+ STATIC_ASSERT(!maxFrameExtentForSlowPathCall);
#elif CPU(ARM) || CPU(SH4)
- ASSERT(maxFrameExtentForSlowPathCall == 24);
+ STATIC_ASSERT(maxFrameExtentForSlowPathCall == 24);
#elif CPU(X86) || CPU(MIPS)
- ASSERT(maxFrameExtentForSlowPathCall == 40);
+ STATIC_ASSERT(maxFrameExtentForSlowPathCall == 40);
#elif CPU(X86_64) && OS(WINDOWS)
- ASSERT(maxFrameExtentForSlowPathCall == 64);
+ STATIC_ASSERT(maxFrameExtentForSlowPathCall == 64);
#endif
#if !ENABLE(JIT) || USE(JSVALUE32_64)
@@ -142,18 +142,17 @@
ASSERT(CodeBlock::llintBaselineCalleeSaveSpaceAsVirtualRegisters() == 3);
#endif
- ASSERT(StringType == 6);
- ASSERT(SymbolType == 7);
- ASSERT(ObjectType == 21);
- ASSERT(FinalObjectType == 22);
- ASSERT(MasqueradesAsUndefined == 1);
- ASSERT(ImplementsHasInstance == 2);
- ASSERT(ImplementsDefaultHasInstance == 8);
- ASSERT(FirstConstantRegisterIndex == 0x40000000);
- ASSERT(GlobalCode == 0);
- ASSERT(EvalCode == 1);
- ASSERT(FunctionCode == 2);
- ASSERT(ModuleCode == 3);
+ STATIC_ASSERT(StringType == 6);
+ STATIC_ASSERT(SymbolType == 7);
+ STATIC_ASSERT(ObjectType == 21);
+ STATIC_ASSERT(FinalObjectType == 22);
+ STATIC_ASSERT(MasqueradesAsUndefined == 1);
+ STATIC_ASSERT(ImplementsDefaultHasInstance == 2);
+ STATIC_ASSERT(FirstConstantRegisterIndex == 0x40000000);
+ STATIC_ASSERT(GlobalCode == 0);
+ STATIC_ASSERT(EvalCode == 1);
+ STATIC_ASSERT(FunctionCode == 2);
+ STATIC_ASSERT(ModuleCode == 3);
ASSERT(!(reinterpret_cast<ptrdiff_t>((reinterpret_cast<WriteBarrier<JSCell>*>(0x4000)->slot())) - 0x4000));
static_assert(PutByIdPrimaryTypeMask == 0x6, "LLInt assumes PutByIdPrimaryTypeMask is == 0x6");
@@ -185,11 +184,11 @@
static_assert(InitializationMode::Initialization == 0, "LLInt assumes that InitializationMode::Initialization is 0");
- ASSERT(GetPutInfo::typeBits == 0x3ff);
- ASSERT(GetPutInfo::initializationShift == 10);
- ASSERT(GetPutInfo::initializationBits == 0xffc00);
+ STATIC_ASSERT(GetPutInfo::typeBits == 0x3ff);
+ STATIC_ASSERT(GetPutInfo::initializationShift == 10);
+ STATIC_ASSERT(GetPutInfo::initializationBits == 0xffc00);
- ASSERT(MarkedBlock::blockMask == ~static_cast<decltype(MarkedBlock::blockMask)>(0x3fff));
+ STATIC_ASSERT(MarkedBlock::blockMask == ~static_cast<decltype(MarkedBlock::blockMask)>(0x3fff));
// FIXME: make these assertions less horrible.
#if !ASSERT_DISABLED
Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm (194368 => 194369)
--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm 2015-12-22 20:04:56 UTC (rev 194369)
@@ -333,8 +333,7 @@
# Type flags constants.
const MasqueradesAsUndefined = 1
-const ImplementsHasInstance = 2
-const ImplementsDefaultHasInstance = 8
+const ImplementsDefaultHasInstance = 2
# Bytecode operand constants.
const FirstConstantRegisterIndex = 0x40000000
Modified: trunk/Source/_javascript_Core/runtime/InternalFunction.h (194368 => 194369)
--- trunk/Source/_javascript_Core/runtime/InternalFunction.h 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/runtime/InternalFunction.h 2015-12-22 20:04:56 UTC (rev 194369)
@@ -34,7 +34,7 @@
class InternalFunction : public JSDestructibleObject {
public:
typedef JSDestructibleObject Base;
- static const unsigned StructureFlags = Base::StructureFlags | ImplementsHasInstance | TypeOfShouldCallGetCallData;
+ static const unsigned StructureFlags = Base::StructureFlags | ImplementsHasInstance | ImplementsDefaultHasInstance | TypeOfShouldCallGetCallData;
DECLARE_EXPORT_INFO;
Modified: trunk/Source/_javascript_Core/runtime/JSBoundFunction.h (194368 => 194369)
--- trunk/Source/_javascript_Core/runtime/JSBoundFunction.h 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/runtime/JSBoundFunction.h 2015-12-22 20:04:56 UTC (rev 194369)
@@ -38,7 +38,7 @@
class JSBoundFunction : public JSFunction {
public:
typedef JSFunction Base;
- const static unsigned StructureFlags = OverridesHasInstanceFlag | Base::StructureFlags;
+ const static unsigned StructureFlags = ~ImplementsDefaultHasInstance & Base::StructureFlags;
static JSBoundFunction* create(VM&, JSGlobalObject*, JSObject* targetFunction, JSValue boundThis, JSValue boundArgs, int, const String&);
Modified: trunk/Source/_javascript_Core/runtime/JSCallee.h (194368 => 194369)
--- trunk/Source/_javascript_Core/runtime/JSCallee.h 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/runtime/JSCallee.h 2015-12-22 20:04:56 UTC (rev 194369)
@@ -46,7 +46,7 @@
public:
typedef JSNonFinalObject Base;
- const static unsigned StructureFlags = Base::StructureFlags | ImplementsHasInstance;
+ const static unsigned StructureFlags = Base::StructureFlags | ImplementsHasInstance | ImplementsDefaultHasInstance;
static JSCallee* create(VM& vm, JSGlobalObject* globalObject, JSScope* scope)
{
Modified: trunk/Source/_javascript_Core/runtime/JSTypeInfo.h (194368 => 194369)
--- trunk/Source/_javascript_Core/runtime/JSTypeInfo.h 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/runtime/JSTypeInfo.h 2015-12-22 20:04:56 UTC (rev 194369)
@@ -37,20 +37,20 @@
class LLIntOffsetsExtractor;
static const unsigned MasqueradesAsUndefined = 1; // WebCore uses MasqueradesAsUndefined to make document.all undetectable.
-static const unsigned ImplementsHasInstance = 1 << 1;
-static const unsigned OverridesHasInstanceFlag = 1 << 2; // FIXME: This is only trivially used by the runtime and should be removed: https://bugs.webkit.org/show_bug.cgi?id=152005
-static const unsigned ImplementsDefaultHasInstance = 1 << 3;
-static const unsigned TypeOfShouldCallGetCallData = 1 << 4; // Need this flag if you override getCallData() and you want typeof to use this to determine if it should say "function". Currently we always set this flag when we override getCallData().
-static const unsigned OverridesGetOwnPropertySlot = 1 << 5;
-static const unsigned InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero = 1 << 6;
-static const unsigned StructureIsImmortal = 1 << 7;
+static const unsigned ImplementsDefaultHasInstance = 1 << 1;
+static const unsigned TypeOfShouldCallGetCallData = 1 << 2; // Need this flag if you override getCallData() and you want typeof to use this to determine if it should say "function". Currently we always set this flag when we override getCallData().
+static const unsigned OverridesGetOwnPropertySlot = 1 << 3;
+static const unsigned InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero = 1 << 4;
+static const unsigned StructureIsImmortal = 1 << 5;
+// There are two free bits at the end of the InlineTypeFlags.
-static const unsigned OverridesGetPropertyNames = 1 << 8;
-static const unsigned ProhibitsPropertyCaching = 1 << 9;
-static const unsigned GetOwnPropertySlotIsImpure = 1 << 10;
-static const unsigned NewImpurePropertyFiresWatchpoints = 1 << 11;
-static const unsigned IsEnvironmentRecord = 1 << 12;
-static const unsigned GetOwnPropertySlotIsImpureForPropertyAbsence = 1 << 13;
+static const unsigned ImplementsHasInstance = 1 << 8;
+static const unsigned OverridesGetPropertyNames = 1 << 9;
+static const unsigned ProhibitsPropertyCaching = 1 << 10;
+static const unsigned GetOwnPropertySlotIsImpure = 1 << 11;
+static const unsigned NewImpurePropertyFiresWatchpoints = 1 << 12;
+static const unsigned IsEnvironmentRecord = 1 << 13;
+static const unsigned GetOwnPropertySlotIsImpureForPropertyAbsence = 1 << 14;
class TypeInfo {
public:
@@ -67,11 +67,6 @@
, m_flags(inlineTypeFlags)
, m_flags2(outOfLineTypeFlags)
{
- // No object that doesn't ImplementsHasInstance should override it!
- ASSERT((m_flags & (ImplementsHasInstance | OverridesHasInstanceFlag)) != OverridesHasInstanceFlag);
- // ImplementsDefaultHasInstance means (ImplementsHasInstance & !OverridesHasInstance)
- if ((m_flags & (ImplementsHasInstance | OverridesHasInstanceFlag)) == ImplementsHasInstance)
- m_flags |= ImplementsDefaultHasInstance;
}
JSType type() const { return static_cast<JSType>(m_type); }
@@ -82,8 +77,7 @@
unsigned flags() const { return (static_cast<unsigned>(m_flags2) << 8) | static_cast<unsigned>(m_flags); }
bool masqueradesAsUndefined() const { return isSetOnFlags1(MasqueradesAsUndefined); }
- bool implementsHasInstance() const { return isSetOnFlags1(ImplementsHasInstance); }
- bool overridesHasInstance() const { return isSetOnFlags1(OverridesHasInstanceFlag); }
+ bool implementsHasInstance() const { return isSetOnFlags2(ImplementsHasInstance); }
bool implementsDefaultHasInstance() const { return isSetOnFlags1(ImplementsDefaultHasInstance); }
bool typeOfShouldCallGetCallData() const { return isSetOnFlags1(TypeOfShouldCallGetCallData); }
bool overridesGetOwnPropertySlot() const { return overridesGetOwnPropertySlot(inlineTypeFlags()); }
Modified: trunk/Source/_javascript_Core/runtime/NumberConstructor.h (194368 => 194369)
--- trunk/Source/_javascript_Core/runtime/NumberConstructor.h 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/_javascript_Core/runtime/NumberConstructor.h 2015-12-22 20:04:56 UTC (rev 194369)
@@ -30,7 +30,7 @@
class NumberConstructor : public InternalFunction {
public:
typedef InternalFunction Base;
- static const unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | ImplementsHasInstance;
+ static const unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | ImplementsHasInstance | ImplementsDefaultHasInstance;
static NumberConstructor* create(VM& vm, Structure* structure, NumberPrototype* numberPrototype)
{
Modified: trunk/Source/WebCore/ChangeLog (194368 => 194369)
--- trunk/Source/WebCore/ChangeLog 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/WebCore/ChangeLog 2015-12-22 20:04:56 UTC (rev 194369)
@@ -1,3 +1,20 @@
+2015-12-22 Keith Miller <[email protected]>
+
+ Remove OverridesHasInstance from TypeInfoFlags
+ https://bugs.webkit.org/show_bug.cgi?id=152005
+
+ Reviewed by Saam Barati.
+
+ Currently, we have three TypeInfo flags associated with instanceof behavior,
+ ImplementsHasInstance, ImplementDefaultHasInstance, and OverridesHasInstance. This patch
+ removes the third and moves the first to the out of line flags. In theory, we should only
+ need one flag but removing ImplementsHasInstance is more involved and should be done in a
+ separate patch.
+
+ * bindings/js/JSDOMBinding.h:
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (GenerateHeader):
+
2015-12-22 Brent Fulgham <[email protected]>
Allow _javascript_ to iterate over plugins for local SecurityOrigins
Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (194368 => 194369)
--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h 2015-12-22 20:04:56 UTC (rev 194369)
@@ -100,7 +100,7 @@
class DOMConstructorObject : public JSDOMObject {
public:
typedef JSDOMObject Base;
- static const unsigned StructureFlags = Base::StructureFlags | JSC::ImplementsHasInstance;
+ static const unsigned StructureFlags = Base::StructureFlags | JSC::ImplementsHasInstance | JSC::ImplementsDefaultHasInstance;
static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
{
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (194368 => 194369)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2015-12-22 20:03:13 UTC (rev 194368)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2015-12-22 20:04:56 UTC (rev 194369)
@@ -1045,7 +1045,7 @@
}
# Structure ID
if ($interfaceName eq "DOMWindow") {
- $structureFlags{"JSC::ImplementsHasInstance"} = 1;
+ $structureFlags{"JSC::ImplementsHasInstance | JSC::ImplementsDefaultHasInstance"} = 1;
}
push(@headerContent, " static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)\n");
push(@headerContent, " {\n");