Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (149417 => 149418)
--- trunk/Source/_javascript_Core/ChangeLog 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-05-01 01:58:20 UTC (rev 149418)
@@ -1,3 +1,28 @@
+2013-04-30 Geoffrey Garen <[email protected]>
+
+ Removed op_ensure_property_exists
+ https://bugs.webkit.org/show_bug.cgi?id=115460
+
+ Reviewed by Mark Hahnenberg.
+
+ It was unused, and whatever it was once used for was not optimized.
+
+ * _javascript_Core.order:
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dumpBytecode):
+ * bytecode/Opcode.h:
+ (JSC::padOpcodeName):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ * jit/JITOpcodes32_64.cpp:
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ * llint/LLIntSlowPaths.cpp:
+ * llint/LLIntSlowPaths.h:
+ * llint/LowLevelInterpreter.asm:
+
2013-04-30 Oliver Hunt <[email protected]>
JSC Stack walking logic craches in the face of inlined functions triggering VM re-entry
Modified: trunk/Source/_javascript_Core/_javascript_Core.order (149417 => 149418)
--- trunk/Source/_javascript_Core/_javascript_Core.order 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/_javascript_Core.order 2013-05-01 01:58:20 UTC (rev 149418)
@@ -2350,8 +2350,6 @@
__ZNK3WTF8Collator14createCollatorEv
__ZN3WTF8CollatorD1Ev
__ZN3WTF8Collator15releaseCollatorEv
-__ZN3JSC3JIT30emit_op_ensure_property_existsEPNS_11InstructionE
-_cti_op_ensure_property_exists
__ZNK3JSC20StrictEvalActivation12toThisObjectEPNS_9ExecStateE
__ZN3JSC15IdentifierArena21makeNumericIdentifierEPNS_12VMEd
__ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierENS_7JSValueERNS_15PutPropertySlotE
Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (149417 => 149418)
--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp 2013-05-01 01:58:20 UTC (rev 149418)
@@ -1028,12 +1028,6 @@
dumpValueProfiling(out, it, hasPrintedProfiling);
break;
}
- case op_ensure_property_exists: {
- int r0 = (++it)->u.operand;
- int id0 = (++it)->u.operand;
- out.printf("[%4d] ensure_property_exists\t %s, %s", location, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data());
- break;
- }
case op_resolve_with_base: {
int r0 = (++it)->u.operand;
int r1 = (++it)->u.operand;
Modified: trunk/Source/_javascript_Core/bytecode/Opcode.h (149417 => 149418)
--- trunk/Source/_javascript_Core/bytecode/Opcode.h 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/bytecode/Opcode.h 2013-05-01 01:58:20 UTC (rev 149418)
@@ -111,8 +111,6 @@
macro(op_resolve_base_to_scope_with_top_scope_check, 7) /* has value profiling */ \
macro(op_resolve_base, 7) /* has value profiling */ \
\
- macro(op_ensure_property_exists, 3) \
- \
macro(op_resolve_with_base, 7) /* has value profiling */ \
\
macro(op_resolve_with_this, 6) /* has value profiling */ \
Modified: trunk/Source/_javascript_Core/jit/JIT.cpp (149417 => 149418)
--- trunk/Source/_javascript_Core/jit/JIT.cpp 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/jit/JIT.cpp 2013-05-01 01:58:20 UTC (rev 149418)
@@ -326,7 +326,6 @@
case op_put_to_base_variable:
DEFINE_OP(op_put_to_base)
- DEFINE_OP(op_ensure_property_exists)
DEFINE_OP(op_resolve_with_base)
DEFINE_OP(op_resolve_with_this)
DEFINE_OP(op_ret)
Modified: trunk/Source/_javascript_Core/jit/JIT.h (149417 => 149418)
--- trunk/Source/_javascript_Core/jit/JIT.h 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/jit/JIT.h 2013-05-01 01:58:20 UTC (rev 149418)
@@ -725,7 +725,6 @@
void emitSlow_link_resolve_operations(ResolveOperations*, Vector<SlowCaseEntry>::iterator&);
void emit_op_resolve(Instruction*);
void emit_op_resolve_base(Instruction*);
- void emit_op_ensure_property_exists(Instruction*);
void emit_op_resolve_with_base(Instruction*);
void emit_op_resolve_with_this(Instruction*);
void emit_op_put_to_base(Instruction*);
Modified: trunk/Source/_javascript_Core/jit/JITOpcodes.cpp (149417 => 149418)
--- trunk/Source/_javascript_Core/jit/JITOpcodes.cpp 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/jit/JITOpcodes.cpp 2013-05-01 01:58:20 UTC (rev 149418)
@@ -366,14 +366,6 @@
stubCall.call(currentInstruction[1].u.operand);
}
-void JIT::emit_op_ensure_property_exists(Instruction* currentInstruction)
-{
- JITStubCall stubCall(this, cti_op_ensure_property_exists);
- stubCall.addArgument(TrustedImm32(currentInstruction[1].u.operand));
- stubCall.addArgument(TrustedImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
- stubCall.call(currentInstruction[1].u.operand);
-}
-
void JIT::emit_op_not(Instruction* currentInstruction)
{
emitGetVirtualRegister(currentInstruction[2].u.operand, regT0);
Modified: trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp (149417 => 149418)
--- trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp 2013-05-01 01:58:20 UTC (rev 149418)
@@ -446,14 +446,6 @@
stubCall.call(currentInstruction[1].u.operand);
}
-void JIT::emit_op_ensure_property_exists(Instruction* currentInstruction)
-{
- JITStubCall stubCall(this, cti_op_ensure_property_exists);
- stubCall.addArgument(TrustedImm32(currentInstruction[1].u.operand));
- stubCall.addArgument(TrustedImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
- stubCall.call(currentInstruction[1].u.operand);
-}
-
void JIT::emit_op_not(Instruction* currentInstruction)
{
unsigned dst = currentInstruction[1].u.operand;
Modified: trunk/Source/_javascript_Core/jit/JITStubs.cpp (149417 => 149418)
--- trunk/Source/_javascript_Core/jit/JITStubs.cpp 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/jit/JITStubs.cpp 2013-05-01 01:58:20 UTC (rev 149418)
@@ -2792,21 +2792,6 @@
VM_THROW_EXCEPTION();
}
-DEFINE_STUB_FUNCTION(EncodedJSValue, op_ensure_property_exists)
-{
- STUB_INIT_STACK_FRAME(stackFrame);
- JSValue base = stackFrame.callFrame->r(stackFrame.args[0].int32()).jsValue();
- JSObject* object = asObject(base);
- PropertySlot slot(object);
- ASSERT(stackFrame.callFrame->codeBlock()->isStrictMode());
- if (!object->getPropertySlot(stackFrame.callFrame, stackFrame.args[1].identifier(), slot)) {
- stackFrame.vm->exception = createErrorForInvalidGlobalAssignment(stackFrame.callFrame, stackFrame.args[1].identifier().string());
- VM_THROW_EXCEPTION();
- }
-
- return JSValue::encode(base);
-}
-
DEFINE_STUB_FUNCTION(EncodedJSValue, op_div)
{
STUB_INIT_STACK_FRAME(stackFrame);
Modified: trunk/Source/_javascript_Core/jit/JITStubs.h (149417 => 149418)
--- trunk/Source/_javascript_Core/jit/JITStubs.h 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/jit/JITStubs.h 2013-05-01 01:58:20 UTC (rev 149418)
@@ -371,7 +371,6 @@
EncodedJSValue JIT_STUB cti_op_resolve(STUB_ARGS_DECLARATION) WTF_INTERNAL;
EncodedJSValue JIT_STUB cti_op_resolve_base(STUB_ARGS_DECLARATION) WTF_INTERNAL;
EncodedJSValue JIT_STUB cti_op_resolve_base_strict_put(STUB_ARGS_DECLARATION) WTF_INTERNAL;
-EncodedJSValue JIT_STUB cti_op_ensure_property_exists(STUB_ARGS_DECLARATION) WTF_INTERNAL;
EncodedJSValue JIT_STUB cti_op_resolve_with_base(STUB_ARGS_DECLARATION) WTF_INTERNAL;
EncodedJSValue JIT_STUB cti_op_resolve_with_this(STUB_ARGS_DECLARATION) WTF_INTERNAL;
void JIT_STUB cti_op_put_to_base(STUB_ARGS_DECLARATION) WTF_INTERNAL;
Modified: trunk/Source/_javascript_Core/llint/LLIntSlowPaths.cpp (149417 => 149418)
--- trunk/Source/_javascript_Core/llint/LLIntSlowPaths.cpp 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/llint/LLIntSlowPaths.cpp 2013-05-01 01:58:20 UTC (rev 149418)
@@ -858,17 +858,6 @@
LLINT_RETURN(result);
}
-LLINT_SLOW_PATH_DECL(slow_path_ensure_property_exists)
-{
- LLINT_BEGIN();
- JSObject* object = asObject(LLINT_OP(1).jsValue());
- PropertySlot slot(object);
- Identifier& ident = exec->codeBlock()->identifier(pc[2].u.operand);
- if (!object->getPropertySlot(exec, ident, slot))
- LLINT_THROW(createErrorForInvalidGlobalAssignment(exec, ident.string()));
- LLINT_END();
-}
-
LLINT_SLOW_PATH_DECL(slow_path_resolve_with_base)
{
LLINT_BEGIN();
Modified: trunk/Source/_javascript_Core/llint/LLIntSlowPaths.h (149417 => 149418)
--- trunk/Source/_javascript_Core/llint/LLIntSlowPaths.h 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/llint/LLIntSlowPaths.h 2013-05-01 01:58:20 UTC (rev 149418)
@@ -157,7 +157,6 @@
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve);
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_put_to_base);
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_base);
-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_ensure_property_exists);
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_with_base);
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_resolve_with_this);
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_init_global_const_check);
Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm (149417 => 149418)
--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm 2013-05-01 01:24:57 UTC (rev 149417)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm 2013-05-01 01:58:20 UTC (rev 149418)
@@ -818,11 +818,6 @@
callSlowPath(_llint_slow_path_resolve_base)
dispatch(7)
-_llint_op_ensure_property_exists:
- traceExecution()
- callSlowPath(_llint_slow_path_ensure_property_exists)
- dispatch(3)
-
macro interpretResolveWithBase(opcodeLength, slowPath)
traceExecution()
getResolveOperation(4, t0)