2008-09-23 Maciej Stachowiak <mjs@apple.com>
Reviewed by Cameron Zwarich.
- inline the fast cases of !==, same as for ===
2.9% speedup on EarleyBoyer benchmark
* VM/CTI.cpp:
(JSC::CTI::compileOpStrictEq): Factored stricteq codegen into this function,
and parameterized so it can do the reverse version as well.
(JSC::CTI::privateCompileMainPass): Use the above for stricteq and nstricteq.
* VM/CTI.h:
(JSC::CTI::): Declare above stuff.
* VM/Machine.cpp:
(JSC::Machine::cti_op_nstricteq): Removed fast cases, now handled inline.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36805 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/JavaScriptCore/VM/CTI.h b/JavaScriptCore/VM/CTI.h
index c0bbae5..156e4ee 100644
--- a/JavaScriptCore/VM/CTI.h
+++ b/JavaScriptCore/VM/CTI.h
@@ -338,6 +338,8 @@
enum CompileOpCallType { OpCallNormal, OpCallEval, OpConstruct };
void compileOpCall(Instruction* instruction, unsigned i, CompileOpCallType type = OpCallNormal);
+ enum CompileOpStrictEqType { OpStrictEq, OpNStrictEq };
+ void compileOpStrictEq(Instruction* instruction, unsigned i, CompileOpStrictEqType type);
void emitGetArg(unsigned src, X86Assembler::RegisterID dst);
void emitGetPutArg(unsigned src, unsigned offset, X86Assembler::RegisterID scratch);