@@ -966,24 +966,30 @@ class CreateObjectPrepare : public ByteCode {
966966 };
967967
968968 typedef BloomFilter<1024 > CreateObjectPropertyFilter;
969+ typedef BloomFilter<1024 * 64 > CreateObjectBigPropertyFilter;
969970
970971 struct CreateObjectData : public gc {
971- bool m_allPrecomputed;
972- bool m_wasStructureComputed;
973- bool m_canStoreStructureOnCode;
974- bool m_needsToUsePropertyFilterOnIntepreter;
972+ bool m_allPrecomputed : 1 ;
973+ bool m_wasStructureComputed : 1 ;
974+ bool m_canStoreStructureOnCode : 1 ;
975+ bool m_needsToUsePropertyFilterOnInterpreter : 1 ;
976+ bool m_needsToUseBigPropertyFilterOnInterpreter : 1 ;
975977 VectorWithInlineStorage<6 , ObjectStructureItem, GCUtil::gc_malloc_allocator<ObjectStructureItem>> m_properties;
976978 EncodedValueVector m_values;
977979 Object* m_target;
978980 CreateObjectPrepare* m_initCode;
979- Optional<CreateObjectPropertyFilter*> m_filter;
981+ union {
982+ Optional<CreateObjectPropertyFilter*> m_filter;
983+ Optional<CreateObjectBigPropertyFilter*> m_bigFilter;
984+ };
980985 CreateObjectData (bool allPrecomputed, bool wasStructureComputed, bool canStoreStructureOnCode,
981- bool needsToUsePropertyFilterOnIntepreter ,
986+ bool needsToUsePropertyFilterOnInterpreter, bool needsToUseBigPropertyFilterOnInterpreter ,
982987 size_t reserveSize, Object* target, CreateObjectPrepare* initCode)
983988 : m_allPrecomputed(allPrecomputed)
984989 , m_wasStructureComputed(wasStructureComputed)
985990 , m_canStoreStructureOnCode(canStoreStructureOnCode)
986- , m_needsToUsePropertyFilterOnIntepreter(needsToUsePropertyFilterOnIntepreter)
991+ , m_needsToUsePropertyFilterOnInterpreter(needsToUsePropertyFilterOnInterpreter)
992+ , m_needsToUseBigPropertyFilterOnInterpreter(needsToUseBigPropertyFilterOnInterpreter)
987993 , m_target(target)
988994 , m_initCode(initCode)
989995 {
@@ -994,11 +1000,13 @@ class CreateObjectPrepare : public ByteCode {
9941000 }
9951001 };
9961002
997- CreateObjectPrepare (const ByteCodeLOC& loc, const size_t dataRegisterIndex, const size_t objectIndex, bool needsToUseNameFilterOnIntepreter)
1003+ CreateObjectPrepare (const ByteCodeLOC& loc, const size_t dataRegisterIndex, const size_t objectIndex, bool needsToUseNameFilterOnIntepreter,
1004+ bool needsToUseBigPropertyFilterOnInterpreter)
9981005 : ByteCode(Opcode::CreateObjectPrepareOpcode, loc)
9991006 , m_stage(Stage::Init)
10001007 , m_allPrecomputed(false )
1001- , m_needsToUsePropertyFilterOnIntepreter(needsToUseNameFilterOnIntepreter)
1008+ , m_needsToUsePropertyFilterOnInterpreter(needsToUseNameFilterOnIntepreter)
1009+ , m_needsToUseBigPropertyFilterOnInterpreter(needsToUseBigPropertyFilterOnInterpreter)
10021010 , m_hasPrecomputedKey(false )
10031011 , m_needsToUpdateFunctionName(false )
10041012 , m_isGetter(false )
@@ -1012,7 +1020,8 @@ class CreateObjectPrepare : public ByteCode {
10121020 : ByteCode(Opcode::CreateObjectPrepareOpcode, loc)
10131021 , m_stage(Stage::FillKeyValue)
10141022 , m_allPrecomputed(false )
1015- , m_needsToUsePropertyFilterOnIntepreter(false )
1023+ , m_needsToUsePropertyFilterOnInterpreter(false )
1024+ , m_needsToUseBigPropertyFilterOnInterpreter(false )
10161025 , m_hasPrecomputedKey(hasPreComputedKey)
10171026 , m_needsToUpdateFunctionName(needsToUpdateFunctionName)
10181027 , m_isGetter(false )
@@ -1026,7 +1035,8 @@ class CreateObjectPrepare : public ByteCode {
10261035 : ByteCode(Opcode::CreateObjectPrepareOpcode, loc)
10271036 , m_stage(Stage::DefineGetterSetter)
10281037 , m_allPrecomputed(false )
1029- , m_needsToUsePropertyFilterOnIntepreter(false )
1038+ , m_needsToUsePropertyFilterOnInterpreter(false )
1039+ , m_needsToUseBigPropertyFilterOnInterpreter(false )
10301040 , m_hasPrecomputedKey(hasPreComputedKey)
10311041 , m_needsToUpdateFunctionName(false )
10321042 , m_isGetter(isGetter)
@@ -1038,7 +1048,8 @@ class CreateObjectPrepare : public ByteCode {
10381048
10391049 Stage m_stage : 2 ;
10401050 bool m_allPrecomputed : 1 ;
1041- bool m_needsToUsePropertyFilterOnIntepreter : 1 ;
1051+ bool m_needsToUsePropertyFilterOnInterpreter : 1 ;
1052+ bool m_needsToUseBigPropertyFilterOnInterpreter : 1 ;
10421053 bool m_hasPrecomputedKey : 1 ;
10431054 bool m_needsToUpdateFunctionName : 1 ;
10441055 bool m_isGetter : 1 ; // other case, this is setter
0 commit comments