Title: [127393] trunk/Source/_javascript_Core
Revision
127393
Author
[email protected]
Date
2012-09-02 14:27:23 -0700 (Sun, 02 Sep 2012)

Log Message

Refactored scope chain opcodes to support optimization for named function expressions
https://bugs.webkit.org/show_bug.cgi?id=95658

Reviewed by Sam Weinig.

Renamed
    push_scope => push_with_scope
    push_new_scope => push_name_scope
to clarify the difference between them.

Changed push_with_scope and push_name_scope not to save the new scope in
a temporary register, since doing so made optimization harder.

(The old behavior was a hold-over from when the scope chain wasn't
a GC object, and wouldn't be marked otherwise. Now, the scope chain is
marked because it is a GC object pointed to by the call frame.)

Changed push_name_scope to accept an operand specifying the attributes
for the named property, instead of assuming DontDelete, because a named
function _expression_ needs ReadOnly|DontDelete.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::highestUsedRegister): Removed this function,
which used to be related to preserving saved scope object temporaries,
because it had no callers.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (127392 => 127393)


--- trunk/Source/_javascript_Core/ChangeLog	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-09-02 21:27:23 UTC (rev 127393)
@@ -1,3 +1,31 @@
+2012-09-02  Geoffrey Garen  <[email protected]>
+
+        Refactored scope chain opcodes to support optimization for named function expressions
+        https://bugs.webkit.org/show_bug.cgi?id=95658
+
+        Reviewed by Sam Weinig.
+
+        Renamed
+            push_scope => push_with_scope
+            push_new_scope => push_name_scope
+        to clarify the difference between them.
+
+        Changed push_with_scope and push_name_scope not to save the new scope in
+        a temporary register, since doing so made optimization harder.
+
+        (The old behavior was a hold-over from when the scope chain wasn't
+        a GC object, and wouldn't be marked otherwise. Now, the scope chain is
+        marked because it is a GC object pointed to by the call frame.)
+
+        Changed push_name_scope to accept an operand specifying the attributes
+        for the named property, instead of assuming DontDelete, because a named
+        function _expression_ needs ReadOnly|DontDelete.
+
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::highestUsedRegister): Removed this function,
+        which used to be related to preserving saved scope object temporaries,
+        because it had no callers.
+
 2012-09-01  Geoffrey Garen  <[email protected]>
 
         Rolled back out a piece of <http://trac.webkit.org/changeset/127293>

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -1479,9 +1479,9 @@
             it += OPCODE_LENGTH(op_next_pname) - 1;
             break;
         }
-        case op_push_scope: {
+        case op_push_with_scope: {
             int r0 = (++it)->u.operand;
-            dataLog("[%4d] push_scope\t %s", location, registerName(exec, r0).data());
+            dataLog("[%4d] push_with_scope\t %s", location, registerName(exec, r0).data());
             dumpBytecodeCommentAndNewLine(location);
             break;
         }
@@ -1490,11 +1490,11 @@
             dumpBytecodeCommentAndNewLine(location);
             break;
         }
-        case op_push_new_scope: {
-            int r0 = (++it)->u.operand;
+        case op_push_name_scope: {
             int id0 = (++it)->u.operand;
             int r1 = (++it)->u.operand;
-            dataLog("[%4d] push_new_scope \t%s, %s, %s", location, registerName(exec, r0).data(), idName(id0, m_identifiers[id0]).data(), registerName(exec, r1).data());
+            unsigned attributes = (++it)->u.operand;
+            dataLog("[%4d] push_name_scope \t%s, %s, %u", location, idName(id0, m_identifiers[id0]).data(), registerName(exec, r1).data(), attributes);
             dumpBytecodeCommentAndNewLine(location);
             break;
         }

Modified: trunk/Source/_javascript_Core/bytecode/Opcode.h (127392 => 127393)


--- trunk/Source/_javascript_Core/bytecode/Opcode.h	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/bytecode/Opcode.h	2012-09-02 21:27:23 UTC (rev 127393)
@@ -188,9 +188,9 @@
         macro(op_get_pnames, 6) \
         macro(op_next_pname, 7) \
         \
-        macro(op_push_scope, 2) \
+        macro(op_push_with_scope, 2) \
         macro(op_pop_scope, 1) \
-        macro(op_push_new_scope, 4) \
+        macro(op_push_name_scope, 4) \
         \
         macro(op_catch, 2) \
         macro(op_throw, 2) \

Modified: trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -642,14 +642,6 @@
     return result;
 }
 
-RegisterID* BytecodeGenerator::highestUsedRegister()
-{
-    size_t count = m_codeBlock->m_numCalleeRegisters;
-    while (m_calleeRegisters.size() < count)
-        newRegister();
-    return &m_calleeRegisters.last();
-}
-
 PassRefPtr<LabelScope> BytecodeGenerator::newLabelScope(LabelScope::Type type, const Identifier* name)
 {
     // Reclaim free label scopes.
@@ -2093,15 +2085,14 @@
     instructions().append(src->index());
 }
 
-RegisterID* BytecodeGenerator::emitPushScope(RegisterID* scope)
+RegisterID* BytecodeGenerator::emitPushWithScope(RegisterID* scope)
 {
-    ASSERT(scope->isTemporary());
     ControlFlowContext context;
     context.isFinallyBlock = false;
     m_scopeContextStack.append(context);
     m_dynamicScopeDepth++;
 
-    return emitUnaryNoDstOp(op_push_scope, scope);
+    return emitUnaryNoDstOp(op_push_with_scope, scope);
 }
 
 void BytecodeGenerator::emitPopScope()
@@ -2452,17 +2443,17 @@
     instructions().append(addConstantValue(jsString(globalData(), message))->index());
 }
 
-void BytecodeGenerator::emitPushNewScope(RegisterID* dst, const Identifier& property, RegisterID* value)
+void BytecodeGenerator::emitPushNameScope(const Identifier& property, RegisterID* value, unsigned attributes)
 {
     ControlFlowContext context;
     context.isFinallyBlock = false;
     m_scopeContextStack.append(context);
     m_dynamicScopeDepth++;
 
-    emitOpcode(op_push_new_scope);
-    instructions().append(dst->index());
+    emitOpcode(op_push_name_scope);
     instructions().append(addConstant(property));
     instructions().append(value->index());
+    instructions().append(attributes);
 }
 
 void BytecodeGenerator::beginSwitch(RegisterID* scrutineeRegister, SwitchInfo::SwitchType type)

Modified: trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h (127392 => 127393)


--- trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h	2012-09-02 21:27:23 UTC (rev 127393)
@@ -296,8 +296,6 @@
         // the next instruction may overwrite it.
         RegisterID* newTemporary();
 
-        RegisterID* highestUsedRegister();
-
         // The same as newTemporary(), but this function returns "suggestion" if
         // "suggestion" is a temporary. This function is helpful in situations
         // where you've put "suggestion" in a RefPtr, but you'd like to allow
@@ -522,9 +520,9 @@
 
         void emitThrowReferenceError(const String& message);
 
-        void emitPushNewScope(RegisterID* dst, const Identifier& property, RegisterID* value);
+        void emitPushNameScope(const Identifier& property, RegisterID* value, unsigned attributes);
 
-        RegisterID* emitPushScope(RegisterID* scope);
+        RegisterID* emitPushWithScope(RegisterID* scope);
         void emitPopScope();
 
         void emitDebugHook(DebugHookID, int firstLine, int lastLine, int column);

Modified: trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -1756,11 +1756,10 @@
 RegisterID* WithNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
 {
     generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column());
-    
-    RefPtr<RegisterID> scope = generator.newTemporary();
-    generator.emitNode(scope.get(), m_expr); // scope must be protected until popped
+
+    RefPtr<RegisterID> scope = generator.emitNode(m_expr);
     generator.emitExpressionInfo(m_divot, m_expressionLength, 0);
-    generator.emitPushScope(scope.get());
+    generator.emitPushWithScope(scope.get());
     RegisterID* result = generator.emitNode(dst, m_statement);
     generator.emitPopScope();
     return result;
@@ -1996,7 +1995,7 @@
             tryData = generator.pushTry(here.get());
         }
         
-        generator.emitPushNewScope(exceptionRegister.get(), m_exceptionIdent, exceptionRegister.get());
+        generator.emitPushNameScope(m_exceptionIdent, exceptionRegister.get(), DontDelete);
         generator.emitNode(dst, m_catchBlock);
         generator.emitPopScope();
         generator.emitLabel(catchEndLabel.get());

Modified: trunk/Source/_javascript_Core/interpreter/Interpreter.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/interpreter/Interpreter.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/interpreter/Interpreter.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -1426,14 +1426,13 @@
 }
     
 #if ENABLE(CLASSIC_INTERPRETER)
-NEVER_INLINE JSScope* Interpreter::createExceptionScope(CallFrame* callFrame, const Instruction* vPC)
+NEVER_INLINE JSScope* Interpreter::createNameScope(CallFrame* callFrame, const Instruction* vPC)
 {
-    int dst = vPC[1].u.operand;
     CodeBlock* codeBlock = callFrame->codeBlock();
-    Identifier& property = codeBlock->identifier(vPC[2].u.operand);
-    JSValue value = callFrame->r(vPC[3].u.operand).jsValue();
-    JSNameScope* scope = JSNameScope::create(callFrame, property, value, DontDelete);
-    callFrame->uncheckedR(dst) = JSValue(scope);
+    Identifier& property = codeBlock->identifier(vPC[1].u.operand);
+    JSValue value = callFrame->r(vPC[2].u.operand).jsValue();
+    unsigned attributes = vPC[3].u.operand;
+    JSNameScope* scope = JSNameScope::create(callFrame, property, value, attributes);
     return scope;
 }
 
@@ -4814,22 +4813,20 @@
 
         NEXT_INSTRUCTION();
     }
-    DEFINE_OPCODE(op_push_scope) {
-        /* push_scope scope(r)
+    DEFINE_OPCODE(op_push_with_scope) {
+        /* push_with_scope scope(r)
 
            Converts register scope to object, and pushes it onto the top
-           of the current scope chain.  The contents of the register scope
-           are replaced by the result of toObject conversion of the scope.
+           of the scope chain.
         */
         int scope = vPC[1].u.operand;
         JSValue v = callFrame->r(scope).jsValue();
         JSObject* o = v.toObject(callFrame);
         CHECK_FOR_EXCEPTION();
 
-        callFrame->uncheckedR(scope) = JSValue(o);
         callFrame->setScope(JSWithScope::create(callFrame, o));
 
-        vPC += OPCODE_LENGTH(op_push_scope);
+        vPC += OPCODE_LENGTH(op_push_with_scope);
         NEXT_INSTRUCTION();
     }
     DEFINE_OPCODE(op_pop_scope) {
@@ -4927,16 +4924,15 @@
     // Appease GCC
     goto *(&&skip_new_scope);
 #endif
-    DEFINE_OPCODE(op_push_new_scope) {
-        /* new_scope dst(r) property(id) value(r)
+    DEFINE_OPCODE(op_push_name_scope) {
+        /* new_scope property(id) value(r) attributes(unsigned)
          
-           Constructs a new NameScopeObject with property set to value.  That scope
-           object is then pushed onto the ScopeChain.  The scope object is then stored
-           in dst for GC.
+           Constructs a name scope of the form { property<attributes>: value },
+           and pushes it onto the scope chain.
          */
-        callFrame->setScope(createExceptionScope(callFrame, vPC));
+        callFrame->setScope(createNameScope(callFrame, vPC));
 
-        vPC += OPCODE_LENGTH(op_push_new_scope);
+        vPC += OPCODE_LENGTH(op_push_name_scope);
         NEXT_INSTRUCTION();
     }
 #if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)

Modified: trunk/Source/_javascript_Core/jit/JIT.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/jit/JIT.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/jit/JIT.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -318,8 +318,8 @@
         DEFINE_OP(op_pre_inc)
         DEFINE_OP(op_profile_did_call)
         DEFINE_OP(op_profile_will_call)
-        DEFINE_OP(op_push_new_scope)
-        DEFINE_OP(op_push_scope)
+        DEFINE_OP(op_push_name_scope)
+        DEFINE_OP(op_push_with_scope)
         case op_put_by_id_out_of_line:
         case op_put_by_id_transition_direct:
         case op_put_by_id_transition_normal:

Modified: trunk/Source/_javascript_Core/jit/JIT.h (127392 => 127393)


--- trunk/Source/_javascript_Core/jit/JIT.h	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/jit/JIT.h	2012-09-02 21:27:23 UTC (rev 127393)
@@ -671,8 +671,8 @@
         void emit_op_pre_inc(Instruction*);
         void emit_op_profile_did_call(Instruction*);
         void emit_op_profile_will_call(Instruction*);
-        void emit_op_push_new_scope(Instruction*);
-        void emit_op_push_scope(Instruction*);
+        void emit_op_push_name_scope(Instruction*);
+        void emit_op_push_with_scope(Instruction*);
         void emit_op_put_by_id(Instruction*);
         void emit_op_put_by_index(Instruction*);
         void emit_op_put_by_val(Instruction*);

Modified: trunk/Source/_javascript_Core/jit/JITOpcodes.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/jit/JITOpcodes.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/jit/JITOpcodes.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -1003,9 +1003,9 @@
     end.link(this);
 }
 
-void JIT::emit_op_push_scope(Instruction* currentInstruction)
+void JIT::emit_op_push_with_scope(Instruction* currentInstruction)
 {
-    JITStubCall stubCall(this, cti_op_push_scope);
+    JITStubCall stubCall(this, cti_op_push_with_scope);
     stubCall.addArgument(currentInstruction[1].u.operand, regT2);
     stubCall.call(currentInstruction[1].u.operand);
 }
@@ -1072,12 +1072,13 @@
     emitPutVirtualRegister(currentInstruction[1].u.operand);
 }
 
-void JIT::emit_op_push_new_scope(Instruction* currentInstruction)
+void JIT::emit_op_push_name_scope(Instruction* currentInstruction)
 {
-    JITStubCall stubCall(this, cti_op_push_new_scope);
-    stubCall.addArgument(TrustedImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
-    stubCall.addArgument(currentInstruction[3].u.operand, regT2);
-    stubCall.call(currentInstruction[1].u.operand);
+    JITStubCall stubCall(this, cti_op_push_name_scope);
+    stubCall.addArgument(TrustedImmPtr(&m_codeBlock->identifier(currentInstruction[1].u.operand)));
+    stubCall.addArgument(currentInstruction[2].u.operand, regT2);
+    stubCall.addArgument(TrustedImm32(currentInstruction[3].u.operand));
+    stubCall.call();
 }
 
 void JIT::emit_op_catch(Instruction* currentInstruction)

Modified: trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/jit/JITOpcodes32_64.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -1358,9 +1358,9 @@
     end.link(this);
 }
 
-void JIT::emit_op_push_scope(Instruction* currentInstruction)
+void JIT::emit_op_push_with_scope(Instruction* currentInstruction)
 {
-    JITStubCall stubCall(this, cti_op_push_scope);
+    JITStubCall stubCall(this, cti_op_push_with_scope);
     stubCall.addArgument(currentInstruction[1].u.operand);
     stubCall.call(currentInstruction[1].u.operand);
 }
@@ -1397,12 +1397,13 @@
     stubCall.call(dst);
 }
 
-void JIT::emit_op_push_new_scope(Instruction* currentInstruction)
+void JIT::emit_op_push_name_scope(Instruction* currentInstruction)
 {
-    JITStubCall stubCall(this, cti_op_push_new_scope);
-    stubCall.addArgument(TrustedImmPtr(&m_codeBlock->identifier(currentInstruction[2].u.operand)));
-    stubCall.addArgument(currentInstruction[3].u.operand);
-    stubCall.call(currentInstruction[1].u.operand);
+    JITStubCall stubCall(this, cti_op_push_name_scope);
+    stubCall.addArgument(TrustedImmPtr(&m_codeBlock->identifier(currentInstruction[1].u.operand)));
+    stubCall.addArgument(currentInstruction[2].u.operand);
+    stubCall.addArgument(TrustedImm32(currentInstruction[3].u.operand));
+    stubCall.call();
 }
 
 void JIT::emit_op_catch(Instruction* currentInstruction)

Modified: trunk/Source/_javascript_Core/jit/JITStubs.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/jit/JITStubs.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/jit/JITStubs.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -3141,7 +3141,7 @@
     return result;
 }
 
-DEFINE_STUB_FUNCTION(JSObject*, op_push_scope)
+DEFINE_STUB_FUNCTION(JSObject*, op_push_with_scope)
 {
     STUB_INIT_STACK_FRAME(stackFrame);
 
@@ -3258,15 +3258,14 @@
     return JSValue::encode(jsBoolean(baseObj->hasProperty(callFrame, property)));
 }
 
-DEFINE_STUB_FUNCTION(JSObject*, op_push_new_scope)
+DEFINE_STUB_FUNCTION(void, op_push_name_scope)
 {
     STUB_INIT_STACK_FRAME(stackFrame);
 
-    JSNameScope* scope = JSNameScope::create(stackFrame.callFrame, stackFrame.args[0].identifier(), stackFrame.args[1].jsValue(), DontDelete);
+    JSNameScope* scope = JSNameScope::create(stackFrame.callFrame, stackFrame.args[0].identifier(), stackFrame.args[1].jsValue(), stackFrame.args[2].int32());
 
     CallFrame* callFrame = stackFrame.callFrame;
     callFrame->setScope(scope);
-    return scope;
 }
 
 DEFINE_STUB_FUNCTION(void, op_jmp_scopes)

Modified: trunk/Source/_javascript_Core/jit/JITStubs.h (127392 => 127393)


--- trunk/Source/_javascript_Core/jit/JITStubs.h	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/jit/JITStubs.h	2012-09-02 21:27:23 UTC (rev 127393)
@@ -417,8 +417,8 @@
     JSObject* JIT_STUB cti_op_new_object(STUB_ARGS_DECLARATION) WTF_INTERNAL;
     JSObject* JIT_STUB cti_op_new_regexp(STUB_ARGS_DECLARATION) WTF_INTERNAL;
     JSObject* JIT_STUB cti_op_push_activation(STUB_ARGS_DECLARATION) WTF_INTERNAL;
-    JSObject* JIT_STUB cti_op_push_new_scope(STUB_ARGS_DECLARATION) WTF_INTERNAL;
-    JSObject* JIT_STUB cti_op_push_scope(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+    void JIT_STUB cti_op_push_name_scope(STUB_ARGS_DECLARATION) WTF_INTERNAL;
+    JSObject* JIT_STUB cti_op_push_with_scope(STUB_ARGS_DECLARATION) WTF_INTERNAL;
     JSObject* JIT_STUB cti_op_put_by_id_transition_realloc(STUB_ARGS_DECLARATION) WTF_INTERNAL;
     JSPropertyNameIterator* JIT_STUB cti_op_get_pnames(STUB_ARGS_DECLARATION) WTF_INTERNAL;
     int JIT_STUB cti_op_eq(STUB_ARGS_DECLARATION) WTF_INTERNAL;

Modified: trunk/Source/_javascript_Core/llint/LLIntSlowPaths.cpp (127392 => 127393)


--- trunk/Source/_javascript_Core/llint/LLIntSlowPaths.cpp	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/llint/LLIntSlowPaths.cpp	2012-09-02 21:27:23 UTC (rev 127393)
@@ -1530,14 +1530,13 @@
     LLINT_END();
 }
 
-LLINT_SLOW_PATH_DECL(slow_path_push_scope)
+LLINT_SLOW_PATH_DECL(slow_path_push_with_scope)
 {
     LLINT_BEGIN();
-    JSValue v = LLINT_OP(1).jsValue();
+    JSValue v = LLINT_OP_C(1).jsValue();
     JSObject* o = v.toObject(exec);
     LLINT_CHECK_EXCEPTION();
     
-    LLINT_OP(1) = o;
     exec->setScope(JSWithScope::create(exec, o));
     
     LLINT_END();
@@ -1550,13 +1549,13 @@
     LLINT_END();
 }
 
-LLINT_SLOW_PATH_DECL(slow_path_push_new_scope)
+LLINT_SLOW_PATH_DECL(slow_path_push_name_scope)
 {
     LLINT_BEGIN();
     CodeBlock* codeBlock = exec->codeBlock();
-    JSNameScope* scope = JSNameScope::create(exec, codeBlock->identifier(pc[2].u.operand), LLINT_OP(3).jsValue(), DontDelete);
+    JSNameScope* scope = JSNameScope::create(exec, codeBlock->identifier(pc[1].u.operand), LLINT_OP(2).jsValue(), pc[3].u.operand);
     exec->setScope(scope);
-    LLINT_RETURN(scope);
+    LLINT_END();
 }
 
 LLINT_SLOW_PATH_DECL(slow_path_throw)

Modified: trunk/Source/_javascript_Core/llint/LLIntSlowPaths.h (127392 => 127393)


--- trunk/Source/_javascript_Core/llint/LLIntSlowPaths.h	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/llint/LLIntSlowPaths.h	2012-09-02 21:27:23 UTC (rev 127393)
@@ -202,9 +202,9 @@
 LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_to_primitive);
 LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_pnames);
 LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_next_pname);
-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_scope);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_with_scope);
 LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_pop_scope);
-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_new_scope);
+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_name_scope);
 LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_throw);
 LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_throw_reference_error);
 LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_debug);

Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm (127392 => 127393)


--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm	2012-09-02 20:26:26 UTC (rev 127392)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter.asm	2012-09-02 21:27:23 UTC (rev 127393)
@@ -773,9 +773,9 @@
     dispatch(0) # The slow_path either advances the PC or jumps us to somewhere else.
 
 
-_llint_op_push_scope:
+_llint_op_push_with_scope:
     traceExecution()
-    callSlowPath(_llint_slow_path_push_scope)
+    callSlowPath(_llint_slow_path_push_with_scope)
     dispatch(2)
 
 
@@ -785,9 +785,9 @@
     dispatch(1)
 
 
-_llint_op_push_new_scope:
+_llint_op_push_name_scope:
     traceExecution()
-    callSlowPath(_llint_slow_path_push_new_scope)
+    callSlowPath(_llint_slow_path_push_name_scope)
     dispatch(4)
 
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to