diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-25 15:09:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-25 15:09:11 +0200 |
commit | a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd (patch) | |
tree | b7abd9f49ae1d4d2e426a5883bfccd42b8e2ee12 /Source/JavaScriptCore/llint/LLIntSlowPaths.cpp | |
parent | 8d473cf9743f1d30a16a27114e93bd5af5648d23 (diff) | |
download | qtwebkit-a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd.tar.gz |
Imported WebKit commit eb5c1b8fe4d4b1b90b5137433fc58a91da0e6878 (http://svn.webkit.org/repository/webkit/trunk@118516)
Diffstat (limited to 'Source/JavaScriptCore/llint/LLIntSlowPaths.cpp')
-rw-r--r-- | Source/JavaScriptCore/llint/LLIntSlowPaths.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp b/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp index d184b6e62..066530c87 100644 --- a/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp +++ b/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp @@ -263,7 +263,7 @@ inline bool jitCompileAndSetHeuristics(CodeBlock* codeBlock, ExecState* exec) return false; } - CodeBlock::JITCompilationResult result = codeBlock->jitCompile(exec->globalData()); + CodeBlock::JITCompilationResult result = codeBlock->jitCompile(exec); switch (result) { case CodeBlock::AlreadyCompiled: #if ENABLE(JIT_VERBOSE_OSR) @@ -500,7 +500,7 @@ LLINT_SLOW_PATH_DECL(slow_path_new_regexp) LLINT_SLOW_PATH_DECL(slow_path_not) { LLINT_BEGIN(); - LLINT_RETURN(jsBoolean(!LLINT_OP_C(2).jsValue().toBoolean(exec))); + LLINT_RETURN(jsBoolean(!LLINT_OP_C(2).jsValue().toBoolean())); } LLINT_SLOW_PATH_DECL(slow_path_eq) @@ -952,6 +952,9 @@ inline JSValue getByVal(ExecState* exec, JSValue baseValue, JSValue subscript) return baseValue.get(exec, i); } + + if (isName(subscript)) + return baseValue.get(exec, jsCast<NameInstance*>(subscript.asCell())->privateName()); Identifier property(exec, subscript.toString(exec)->value(exec)); return baseValue.get(exec, property); @@ -1004,7 +1007,13 @@ LLINT_SLOW_PATH_DECL(slow_path_put_by_val) baseValue.putByIndex(exec, i, value, exec->codeBlock()->isStrictMode()); LLINT_END(); } - + + if (isName(subscript)) { + PutPropertySlot slot(exec->codeBlock()->isStrictMode()); + baseValue.put(exec, jsCast<NameInstance*>(subscript.asCell())->privateName(), value, slot); + LLINT_END(); + } + Identifier property(exec, subscript.toString(exec)->value(exec)); LLINT_CHECK_EXCEPTION(); PutPropertySlot slot(exec->codeBlock()->isStrictMode()); @@ -1025,6 +1034,8 @@ LLINT_SLOW_PATH_DECL(slow_path_del_by_val) uint32_t i; if (subscript.getUInt32(i)) couldDelete = baseObject->methodTable()->deletePropertyByIndex(baseObject, exec, i); + else if (isName(subscript)) + couldDelete = baseObject->methodTable()->deleteProperty(baseObject, exec, jsCast<NameInstance*>(subscript.asCell())->privateName()); else { LLINT_CHECK_EXCEPTION(); Identifier property(exec, subscript.toString(exec)->value(exec)); @@ -1088,13 +1099,13 @@ LLINT_SLOW_PATH_DECL(slow_path_jmp_scopes) LLINT_SLOW_PATH_DECL(slow_path_jtrue) { LLINT_BEGIN(); - LLINT_BRANCH(op_jtrue, LLINT_OP_C(1).jsValue().toBoolean(exec)); + LLINT_BRANCH(op_jtrue, LLINT_OP_C(1).jsValue().toBoolean()); } LLINT_SLOW_PATH_DECL(slow_path_jfalse) { LLINT_BEGIN(); - LLINT_BRANCH(op_jfalse, !LLINT_OP_C(1).jsValue().toBoolean(exec)); + LLINT_BRANCH(op_jfalse, !LLINT_OP_C(1).jsValue().toBoolean()); } LLINT_SLOW_PATH_DECL(slow_path_jless) |