Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (164091 => 164092)
--- trunk/Source/_javascript_Core/ChangeLog 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-02-14 05:37:38 UTC (rev 164092)
@@ -1,3 +1,39 @@
+2014-02-13 Filip Pizlo <fpi...@apple.com>
+
+ Kill some of the last vestiges of the C++ interpreter's PICs
+ https://bugs.webkit.org/show_bug.cgi?id=128796
+
+ Reviewed by Michael Saboff.
+
+ * bytecode/BytecodeUseDef.h:
+ (JSC::computeUsesForBytecodeOffset):
+ (JSC::computeDefsForBytecodeOffset):
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::printGetByIdOp):
+ (JSC::CodeBlock::printGetByIdCacheStatus):
+ (JSC::CodeBlock::dumpBytecode):
+ (JSC::CodeBlock::CodeBlock):
+ * bytecode/GetByIdStatus.cpp:
+ (JSC::GetByIdStatus::computeForStubInfo):
+ * bytecode/Opcode.h:
+ (JSC::padOpcodeName):
+ * bytecode/PolymorphicAccessStructureList.h:
+ (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::PolymorphicStubInfo):
+ (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
+ (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
+ (JSC::PolymorphicAccessStructureList::visitWeak):
+ * bytecode/StructureStubInfo.cpp:
+ (JSC::StructureStubInfo::deref):
+ (JSC::StructureStubInfo::visitWeakReferences):
+ * bytecode/StructureStubInfo.h:
+ (JSC::isGetByIdAccess):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/Repatch.cpp:
+ (JSC::getPolymorphicStructureList):
+ (JSC::tryBuildGetByIDList):
+ * llint/LowLevelInterpreter.asm:
+
2014-02-13 Mark Lam <mark....@apple.com>
The JSContainerConvertor and ObjcContainerConvertor need to protect JSValueRefs. Part 2.
Modified: trunk/Source/_javascript_Core/bytecode/BytecodeUseDef.h (164091 => 164092)
--- trunk/Source/_javascript_Core/bytecode/BytecodeUseDef.h 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/bytecode/BytecodeUseDef.h 2014-02-14 05:37:38 UTC (rev 164092)
@@ -99,13 +99,10 @@
return;
}
case op_put_by_index:
- case op_put_by_id_replace:
- case op_put_by_id_transition:
case op_put_by_id_transition_direct:
case op_put_by_id_transition_direct_out_of_line:
case op_put_by_id_transition_normal:
case op_put_by_id_transition_normal_out_of_line:
- case op_put_by_id_generic:
case op_put_by_id_out_of_line:
case op_put_by_id:
case op_put_to_scope: {
@@ -126,18 +123,7 @@
case op_to_primitive:
case op_get_by_id:
case op_get_by_id_out_of_line:
- case op_get_by_id_self:
- case op_get_by_id_proto:
- case op_get_by_id_chain:
- case op_get_by_id_getter_self:
- case op_get_by_id_getter_proto:
- case op_get_by_id_getter_chain:
- case op_get_by_id_custom_self:
- case op_get_by_id_custom_proto:
- case op_get_by_id_custom_chain:
- case op_get_by_id_generic:
case op_get_array_length:
- case op_get_string_length:
case op_get_arguments_length:
case op_typeof:
case op_is_undefined:
@@ -291,13 +277,10 @@
case op_switch_string:
case op_put_by_id:
case op_put_by_id_out_of_line:
- case op_put_by_id_replace:
- case op_put_by_id_transition:
case op_put_by_id_transition_direct:
case op_put_by_id_transition_direct_out_of_line:
case op_put_by_id_transition_normal:
case op_put_by_id_transition_normal_out_of_line:
- case op_put_by_id_generic:
case op_put_getter_setter:
case op_put_by_val:
case op_put_by_val_direct:
@@ -330,18 +313,7 @@
case op_construct:
case op_get_by_id:
case op_get_by_id_out_of_line:
- case op_get_by_id_self:
- case op_get_by_id_proto:
- case op_get_by_id_chain:
- case op_get_by_id_getter_self:
- case op_get_by_id_getter_proto:
- case op_get_by_id_getter_chain:
- case op_get_by_id_custom_self:
- case op_get_by_id_custom_proto:
- case op_get_by_id_custom_chain:
- case op_get_by_id_generic:
case op_get_array_length:
- case op_get_string_length:
case op_check_has_instance:
case op_instanceof:
case op_get_by_val:
Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (164091 => 164092)
--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp 2014-02-14 05:37:38 UTC (rev 164092)
@@ -264,42 +264,9 @@
case op_get_by_id_out_of_line:
op = "get_by_id_out_of_line";
break;
- case op_get_by_id_self:
- op = "get_by_id_self";
- break;
- case op_get_by_id_proto:
- op = "get_by_id_proto";
- break;
- case op_get_by_id_chain:
- op = "get_by_id_chain";
- break;
- case op_get_by_id_getter_self:
- op = "get_by_id_getter_self";
- break;
- case op_get_by_id_getter_proto:
- op = "get_by_id_getter_proto";
- break;
- case op_get_by_id_getter_chain:
- op = "get_by_id_getter_chain";
- break;
- case op_get_by_id_custom_self:
- op = "get_by_id_custom_self";
- break;
- case op_get_by_id_custom_proto:
- op = "get_by_id_custom_proto";
- break;
- case op_get_by_id_custom_chain:
- op = "get_by_id_custom_chain";
- break;
- case op_get_by_id_generic:
- op = "get_by_id_generic";
- break;
case op_get_array_length:
op = "array_length";
break;
- case op_get_string_length:
- op = "string_length";
- break;
default:
RELEASE_ASSERT_NOT_REACHED();
op = 0;
@@ -382,11 +349,6 @@
out.printf("self");
baseStructure = stubInfo.u.getByIdSelf.baseObjectStructure.get();
break;
- case access_get_by_id_proto:
- out.printf("proto");
- baseStructure = stubInfo.u.getByIdProto.baseObjectStructure.get();
- prototypeStructure = stubInfo.u.getByIdProto.prototypeStructure.get();
- break;
case access_get_by_id_chain:
out.printf("chain");
baseStructure = stubInfo.u.getByIdChain.baseObjectStructure.get();
@@ -397,11 +359,6 @@
structureList = stubInfo.u.getByIdSelfList.structureList;
listSize = stubInfo.u.getByIdSelfList.listSize;
break;
- case access_get_by_id_proto_list:
- out.printf("proto_list");
- structureList = stubInfo.u.getByIdProtoList.structureList;
- listSize = stubInfo.u.getByIdProtoList.listSize;
- break;
case access_unset:
out.printf("unset");
break;
@@ -441,16 +398,9 @@
out.printf(", ");
out.printf("(");
dumpStructure(out, "base", exec, structureList->list[i].base.get(), ident);
- if (structureList->list[i].isChain) {
- if (structureList->list[i].u.chain.get()) {
- out.printf(", ");
- dumpChain(out, exec, structureList->list[i].u.chain.get(), ident);
- }
- } else {
- if (structureList->list[i].u.proto.get()) {
- out.printf(", ");
- dumpStructure(out, "proto", exec, structureList->list[i].u.proto.get(), ident);
- }
+ if (structureList->list[i].chain.get()) {
+ out.printf(", ");
+ dumpChain(out, exec, structureList->list[i].chain.get(), ident);
}
out.printf(")");
}
@@ -967,18 +917,7 @@
}
case op_get_by_id:
case op_get_by_id_out_of_line:
- case op_get_by_id_self:
- case op_get_by_id_proto:
- case op_get_by_id_chain:
- case op_get_by_id_getter_self:
- case op_get_by_id_getter_proto:
- case op_get_by_id_getter_chain:
- case op_get_by_id_custom_self:
- case op_get_by_id_custom_proto:
- case op_get_by_id_custom_chain:
- case op_get_by_id_generic:
- case op_get_array_length:
- case op_get_string_length: {
+ case op_get_array_length: {
printGetByIdOp(out, exec, location, it);
printGetByIdCacheStatus(out, exec, location, map);
dumpValueProfiling(out, it, hasPrintedProfiling);
@@ -997,14 +936,6 @@
printPutByIdOp(out, exec, location, it, "put_by_id_out_of_line");
break;
}
- case op_put_by_id_replace: {
- printPutByIdOp(out, exec, location, it, "put_by_id_replace");
- break;
- }
- case op_put_by_id_transition: {
- printPutByIdOp(out, exec, location, it, "put_by_id_transition");
- break;
- }
case op_put_by_id_transition_direct: {
printPutByIdOp(out, exec, location, it, "put_by_id_transition_direct");
break;
@@ -1021,10 +952,6 @@
printPutByIdOp(out, exec, location, it, "put_by_id_transition_normal_out_of_line");
break;
}
- case op_put_by_id_generic: {
- printPutByIdOp(out, exec, location, it, "put_by_id_generic");
- break;
- }
case op_put_getter_setter: {
int r0 = (++it)->u.operand;
int id0 = (++it)->u.operand;
@@ -1778,18 +1705,7 @@
break;
}
case op_get_by_id_out_of_line:
- case op_get_by_id_self:
- case op_get_by_id_proto:
- case op_get_by_id_chain:
- case op_get_by_id_getter_self:
- case op_get_by_id_getter_proto:
- case op_get_by_id_getter_chain:
- case op_get_by_id_custom_self:
- case op_get_by_id_custom_proto:
- case op_get_by_id_custom_chain:
- case op_get_by_id_generic:
case op_get_array_length:
- case op_get_string_length:
CRASH();
case op_init_global_const_nop: {
Modified: trunk/Source/_javascript_Core/bytecode/GetByIdStatus.cpp (164091 => 164092)
--- trunk/Source/_javascript_Core/bytecode/GetByIdStatus.cpp 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/bytecode/GetByIdStatus.cpp 2014-02-14 05:37:38 UTC (rev 164092)
@@ -161,26 +161,16 @@
if (stubInfo->resetByGC)
return GetByIdStatus(TakesSlowPath, true);
- PolymorphicAccessStructureList* list;
- int listSize;
- switch (stubInfo->accessType) {
- case access_get_by_id_self_list:
+ PolymorphicAccessStructureList* list = 0;
+ int listSize = 0;
+ if (stubInfo->accessType == access_get_by_id_self_list) {
list = stubInfo->u.getByIdSelfList.structureList;
listSize = stubInfo->u.getByIdSelfList.listSize;
- break;
- case access_get_by_id_proto_list:
- list = stubInfo->u.getByIdProtoList.structureList;
- listSize = stubInfo->u.getByIdProtoList.listSize;
- break;
- default:
- list = 0;
- listSize = 0;
- break;
+ for (int i = 0; i < listSize; ++i) {
+ if (!list->list[i].isDirect)
+ return GetByIdStatus(MakesCalls, true);
+ }
}
- for (int i = 0; i < listSize; ++i) {
- if (!list->list[i].isDirect)
- return GetByIdStatus(MakesCalls, true);
- }
// Finally figure out if we can derive an access strategy.
GetByIdStatus result;
@@ -250,17 +240,6 @@
break;
}
- case access_get_by_id_proto: {
- if (!stubInfo->u.getByIdProto.isDirect)
- return GetByIdStatus(MakesCalls, true);
- result.m_chain = adoptRef(new IntendedStructureChain(
- profiledBlock,
- stubInfo->u.getByIdProto.baseObjectStructure.get(),
- stubInfo->u.getByIdProto.prototypeStructure.get()));
- computeForChain(result, profiledBlock, uid);
- break;
- }
-
case access_get_by_id_chain: {
if (!stubInfo->u.getByIdChain.isDirect)
return GetByIdStatus(MakesCalls, true);
Modified: trunk/Source/_javascript_Core/bytecode/Opcode.h (164091 => 164092)
--- trunk/Source/_javascript_Core/bytecode/Opcode.h 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/bytecode/Opcode.h 2014-02-14 05:37:38 UTC (rev 164092)
@@ -102,28 +102,14 @@
macro(op_init_global_const, 5) \
macro(op_get_by_id, 9) /* has value profiling */ \
macro(op_get_by_id_out_of_line, 9) /* has value profiling */ \
- macro(op_get_by_id_self, 9) /* has value profiling */ \
- macro(op_get_by_id_proto, 9) /* has value profiling */ \
- macro(op_get_by_id_chain, 9) /* has value profiling */ \
- macro(op_get_by_id_getter_self, 9) /* has value profiling */ \
- macro(op_get_by_id_getter_proto, 9) /* has value profiling */ \
- macro(op_get_by_id_getter_chain, 9) /* has value profiling */ \
- macro(op_get_by_id_custom_self, 9) /* has value profiling */ \
- macro(op_get_by_id_custom_proto, 9) /* has value profiling */ \
- macro(op_get_by_id_custom_chain, 9) /* has value profiling */ \
- macro(op_get_by_id_generic, 9) /* has value profiling */ \
macro(op_get_array_length, 9) /* has value profiling */ \
- macro(op_get_string_length, 9) /* has value profiling */ \
macro(op_get_arguments_length, 4) \
macro(op_put_by_id, 9) \
macro(op_put_by_id_out_of_line, 9) \
- macro(op_put_by_id_transition, 9) \
macro(op_put_by_id_transition_direct, 9) \
macro(op_put_by_id_transition_direct_out_of_line, 9) \
macro(op_put_by_id_transition_normal, 9) \
macro(op_put_by_id_transition_normal_out_of_line, 9) \
- macro(op_put_by_id_replace, 9) \
- macro(op_put_by_id_generic, 9) \
macro(op_del_by_id, 4) \
macro(op_get_by_val, 6) /* has value profiling */ \
macro(op_get_argument_by_val, 6) /* must be the same size as op_get_by_val */ \
Modified: trunk/Source/_javascript_Core/bytecode/PolymorphicAccessStructureList.h (164091 => 164092)
--- trunk/Source/_javascript_Core/bytecode/PolymorphicAccessStructureList.h 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/bytecode/PolymorphicAccessStructureList.h 2014-02-14 05:37:38 UTC (rev 164092)
@@ -46,46 +46,32 @@
WTF_MAKE_FAST_ALLOCATED;
public:
struct PolymorphicStubInfo {
- bool isChain;
- bool isDirect;
+ bool isDirect : 1;
+ unsigned count : 31;
RefPtr<JITStubRoutine> stubRoutine;
WriteBarrier<Structure> base;
- union {
- WriteBarrierBase<Structure> proto;
- WriteBarrierBase<StructureChain> chain;
- } u;
+ WriteBarrier<StructureChain> chain;
PolymorphicStubInfo()
{
- u.proto.clear();
}
void set(VM& vm, JSCell* owner, PassRefPtr<JITStubRoutine> _stubRoutine, Structure* _base, bool _isDirect)
{
stubRoutine = _stubRoutine;
base.set(vm, owner, _base);
- u.proto.clear();
- isChain = false;
isDirect = _isDirect;
+ count = 0;
}
- void set(VM& vm, JSCell* owner, PassRefPtr<JITStubRoutine> _stubRoutine, Structure* _base, Structure* _proto, bool _isDirect)
+ void set(VM& vm, JSCell* owner, PassRefPtr<JITStubRoutine> _stubRoutine, Structure* _base, StructureChain* _chain, bool _isDirect, unsigned _count)
{
stubRoutine = _stubRoutine;
base.set(vm, owner, _base);
- u.proto.set(vm, owner, _proto);
- isChain = false;
+ chain.set(vm, owner, _chain);
isDirect = _isDirect;
+ count = _count;
}
-
- void set(VM& vm, JSCell* owner, PassRefPtr<JITStubRoutine> _stubRoutine, Structure* _base, StructureChain* _chain, bool _isDirect)
- {
- stubRoutine = _stubRoutine;
- base.set(vm, owner, _base);
- u.chain.set(vm, owner, _chain);
- isChain = true;
- isDirect = _isDirect;
- }
} list[POLYMORPHIC_LIST_CACHE_SIZE];
PolymorphicAccessStructureList()
@@ -97,34 +83,22 @@
list[0].set(vm, owner, stubRoutine, firstBase, isDirect);
}
- PolymorphicAccessStructureList(VM& vm, JSCell* owner, PassRefPtr<JITStubRoutine> stubRoutine, Structure* firstBase, Structure* firstProto, bool isDirect)
+ PolymorphicAccessStructureList(VM& vm, JSCell* owner, PassRefPtr<JITStubRoutine> stubRoutine, Structure* firstBase, StructureChain* firstChain, bool isDirect, unsigned count)
{
- list[0].set(vm, owner, stubRoutine, firstBase, firstProto, isDirect);
+ list[0].set(vm, owner, stubRoutine, firstBase, firstChain, isDirect, count);
}
- PolymorphicAccessStructureList(VM& vm, JSCell* owner, PassRefPtr<JITStubRoutine> stubRoutine, Structure* firstBase, StructureChain* firstChain, bool isDirect)
- {
- list[0].set(vm, owner, stubRoutine, firstBase, firstChain, isDirect);
- }
-
bool visitWeak(int count)
{
for (int i = 0; i < count; ++i) {
PolymorphicStubInfo& info = list[i];
- if (!info.base) {
- // We're being marked during initialisation of an entry
- ASSERT(!info.u.proto);
+ if (!info.base)
continue;
- }
if (!Heap::isMarked(info.base.get()))
return false;
- if (info.u.proto && !info.isChain
- && !Heap::isMarked(info.u.proto.get()))
+ if (info.chain && !Heap::isMarked(info.chain.get()))
return false;
- if (info.u.chain && info.isChain
- && !Heap::isMarked(info.u.chain.get()))
- return false;
}
return true;
Modified: trunk/Source/_javascript_Core/bytecode/StructureStubInfo.cpp (164091 => 164092)
--- trunk/Source/_javascript_Core/bytecode/StructureStubInfo.cpp 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/bytecode/StructureStubInfo.cpp 2014-02-14 05:37:38 UTC (rev 164092)
@@ -41,11 +41,6 @@
delete polymorphicStructures;
return;
}
- case access_get_by_id_proto_list: {
- PolymorphicAccessStructureList* polymorphicStructures = u.getByIdProtoList.structureList;
- delete polymorphicStructures;
- return;
- }
case access_put_by_id_list:
delete u.putByIdList.list;
return;
@@ -55,7 +50,6 @@
return;
}
case access_get_by_id_self:
- case access_get_by_id_proto:
case access_get_by_id_chain:
case access_put_by_id_transition_normal:
case access_put_by_id_transition_direct:
@@ -79,11 +73,6 @@
if (!Heap::isMarked(u.getByIdSelf.baseObjectStructure.get()))
return false;
break;
- case access_get_by_id_proto:
- if (!Heap::isMarked(u.getByIdProto.baseObjectStructure.get())
- || !Heap::isMarked(u.getByIdProto.prototypeStructure.get()))
- return false;
- break;
case access_get_by_id_chain:
if (!Heap::isMarked(u.getByIdChain.baseObjectStructure.get())
|| !Heap::isMarked(u.getByIdChain.chain.get()))
@@ -95,12 +84,6 @@
return false;
break;
}
- case access_get_by_id_proto_list: {
- PolymorphicAccessStructureList* polymorphicStructures = u.getByIdProtoList.structureList;
- if (!polymorphicStructures->visitWeak(u.getByIdProtoList.listSize))
- return false;
- break;
- }
case access_put_by_id_transition_normal:
case access_put_by_id_transition_direct:
if (!Heap::isMarked(u.putByIdTransition.previousStructure.get())
Modified: trunk/Source/_javascript_Core/bytecode/StructureStubInfo.h (164091 => 164092)
--- trunk/Source/_javascript_Core/bytecode/StructureStubInfo.h 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/bytecode/StructureStubInfo.h 2014-02-14 05:37:38 UTC (rev 164092)
@@ -47,10 +47,8 @@
enum AccessType {
access_get_by_id_self,
- access_get_by_id_proto,
access_get_by_id_chain,
access_get_by_id_self_list,
- access_get_by_id_proto_list,
access_put_by_id_transition_normal,
access_put_by_id_transition_direct,
access_put_by_id_replace,
@@ -67,10 +65,8 @@
{
switch (accessType) {
case access_get_by_id_self:
- case access_get_by_id_proto:
case access_get_by_id_chain:
case access_get_by_id_self_list:
- case access_get_by_id_proto_list:
case access_get_by_id_generic:
case access_get_array_length:
case access_get_string_length:
@@ -138,14 +134,6 @@
u.getByIdSelfList.didSelfPatching = didSelfPatching;
}
- void initGetByIdProtoList(PolymorphicAccessStructureList* structureList, int listSize)
- {
- accessType = access_get_by_id_proto_list;
-
- u.getByIdProtoList.structureList = structureList;
- u.getByIdProtoList.listSize = listSize;
- }
-
// PutById*
void initPutByIdTransition(VM& vm, JSCell* owner, Structure* previousStructure, Structure* structure, StructureChain* chain, bool isDirect)
Modified: trunk/Source/_javascript_Core/jit/JIT.cpp (164091 => 164092)
--- trunk/Source/_javascript_Core/jit/JIT.cpp 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/jit/JIT.cpp 2014-02-14 05:37:38 UTC (rev 164092)
@@ -290,22 +290,6 @@
DEFINE_OP(op_resolve_scope)
DEFINE_OP(op_get_from_scope)
DEFINE_OP(op_put_to_scope)
-
- case op_get_by_id_chain:
- case op_get_by_id_generic:
- case op_get_by_id_proto:
- case op_get_by_id_self:
- case op_get_by_id_getter_chain:
- case op_get_by_id_getter_proto:
- case op_get_by_id_getter_self:
- case op_get_by_id_custom_chain:
- case op_get_by_id_custom_proto:
- case op_get_by_id_custom_self:
- case op_get_string_length:
- case op_put_by_id_generic:
- case op_put_by_id_replace:
- case op_put_by_id_transition:
- RELEASE_ASSERT_NOT_REACHED();
}
}
Modified: trunk/Source/_javascript_Core/jit/Repatch.cpp (164091 => 164092)
--- trunk/Source/_javascript_Core/jit/Repatch.cpp 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/jit/Repatch.cpp 2014-02-14 05:37:38 UTC (rev 164092)
@@ -501,7 +501,7 @@
} else if (stubInfo.accessType == access_get_by_id_chain) {
RELEASE_ASSERT(!!stubInfo.stubRoutine);
slowCase = CodeLocationLabel(stubInfo.stubRoutine->code().code());
- polymorphicStructureList = new PolymorphicAccessStructureList(*vm, codeBlock->ownerExecutable(), stubInfo.stubRoutine, stubInfo.u.getByIdChain.baseObjectStructure.get(), stubInfo.u.getByIdChain.chain.get(), true);
+ polymorphicStructureList = new PolymorphicAccessStructureList(*vm, codeBlock->ownerExecutable(), stubInfo.stubRoutine, stubInfo.u.getByIdChain.baseObjectStructure.get(), stubInfo.u.getByIdChain.chain.get(), stubInfo.u.getByIdChain.isDirect, stubInfo.u.getByIdChain.count);
stubInfo.stubRoutine.clear();
stubInfo.initGetByIdSelfList(polymorphicStructureList, 1, false);
listIndex = 1;
@@ -726,7 +726,7 @@
slowCase, stubRoutine) == ProtoChainGenerationFailed)
return false;
- polymorphicStructureList->list[listIndex].set(*vm, codeBlock->ownerExecutable(), stubRoutine, structure, slot.isCacheableValue());
+ polymorphicStructureList->list[listIndex].set(*vm, codeBlock->ownerExecutable(), stubRoutine, structure, prototypeChain, slot.isCacheableValue(), count);
patchJumpToGetByIdStub(codeBlock, stubInfo, stubRoutine.get());
Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm (164091 => 164092)
--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm 2014-02-14 04:03:59 UTC (rev 164091)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm 2014-02-14 05:37:38 UTC (rev 164092)
@@ -1125,48 +1125,6 @@
end
end
-_llint_op_get_by_id_chain:
- notSupported()
-
-_llint_op_get_by_id_custom_chain:
- notSupported()
-
-_llint_op_get_by_id_custom_proto:
- notSupported()
-
-_llint_op_get_by_id_custom_self:
- notSupported()
-
-_llint_op_get_by_id_generic:
- notSupported()
-
-_llint_op_get_by_id_getter_chain:
- notSupported()
-
-_llint_op_get_by_id_getter_proto:
- notSupported()
-
-_llint_op_get_by_id_getter_self:
- notSupported()
-
-_llint_op_get_by_id_proto:
- notSupported()
-
-_llint_op_get_by_id_self:
- notSupported()
-
-_llint_op_get_string_length:
- notSupported()
-
-_llint_op_put_by_id_generic:
- notSupported()
-
-_llint_op_put_by_id_replace:
- notSupported()
-
-_llint_op_put_by_id_transition:
- notSupported()
-
_llint_op_init_global_const_nop:
dispatch(5)