Changeset 106314 in webkit
- Timestamp:
- Jan 30, 2012 6:22:37 PM (12 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r106297 r106314 1 2012-01-30 Oliver Hunt <oliver@apple.com> 2 3 get_by_val_arguments is broken in the interpreter 4 https://bugs.webkit.org/show_bug.cgi?id=77389 5 6 Reviewed by Gavin Barraclough. 7 8 When get_by_val had wad a value profile added, the same slot was not added to 9 get_by_val_arguments. This broke the interpreter as the interpreter falls 10 back on its regular get_by_val implementation. 11 12 No tests are added as the interpreter is fairly broken in its 13 current state (multiple tests fail due to this bug). 14 15 * bytecode/CodeBlock.cpp: 16 (JSC::CodeBlock::dump): 17 * bytecode/Opcode.h: 18 (JSC): 19 (): 20 * bytecompiler/BytecodeGenerator.cpp: 21 (JSC::BytecodeGenerator::emitGetArgumentByVal): 22 1 23 2012-01-30 Oliver Hunt <oliver@apple.com> 2 24 -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
r106276 r106314 935 935 int r2 = (++it)->u.operand; 936 936 printf("[%4d] get_argument_by_val\t %s, %s, %s\n", location, registerName(exec, r0).data(), registerName(exec, r1).data(), registerName(exec, r2).data()); 937 ++it; 937 938 break; 938 939 } -
trunk/Source/JavaScriptCore/bytecode/Opcode.h
r106255 r106314 128 128 macro(op_del_by_id, 4) \ 129 129 macro(op_get_by_val, 5) /* has value profiling */ \ 130 macro(op_get_argument_by_val, 4)\130 macro(op_get_argument_by_val, 5) /* must be the same size as op_get_by_val */ \ 131 131 macro(op_get_by_pname, 7) \ 132 132 macro(op_put_by_val, 4) \ -
trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
r106255 r106314 1594 1594 RegisterID* BytecodeGenerator::emitGetArgumentByVal(RegisterID* dst, RegisterID* base, RegisterID* property) 1595 1595 { 1596 emitOpcode(op_get_argument_by_val);1596 ValueProfile* profile = emitProfiledOpcode(op_get_argument_by_val); 1597 1597 instructions().append(dst->index()); 1598 1598 ASSERT(base->index() == m_codeBlock->argumentsRegister()); 1599 1599 instructions().append(base->index()); 1600 1600 instructions().append(property->index()); 1601 instructions().append(profile); 1601 1602 return dst; 1602 1603 }
Note: See TracChangeset
for help on using the changeset viewer.