diff options
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) |