author | Tooru Fujisawa <arai_a@mac.com> |
Wed, 10 Aug 2016 22:26:07 +0900 | |
changeset 308892 | bdfe71b2abc66b2a875f49e10c5557c354748e77 |
parent 308891 | ec5f0eea0b6c1fc4b50369ceadbc18972b599953 |
child 308893 | 494760e727953aa80b28fb948ff1d8fc6196ba4b |
push id | 30552 |
push user | kwierso@gmail.com |
push date | Wed, 10 Aug 2016 23:15:29 +0000 |
treeherder | mozilla-central@65520f4cf4cc [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jandem |
bugs | 1016936 |
milestone | 51.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
js/src/jit/BaselineCompiler.cpp | file | annotate | diff | comparison | revisions | |
js/src/jit/BaselineCompiler.h | file | annotate | diff | comparison | revisions |
--- a/js/src/jit/BaselineCompiler.cpp +++ b/js/src/jit/BaselineCompiler.cpp @@ -1291,16 +1291,39 @@ BaselineCompiler::emit_JSOP_HOLE() bool BaselineCompiler::emit_JSOP_NULL() { frame.push(NullValue()); return true; } +typedef bool (*ThrowCheckIsObjectFn)(JSContext*, CheckIsObjectKind); +static const VMFunction ThrowCheckIsObjectInfo = + FunctionInfo<ThrowCheckIsObjectFn>(ThrowCheckIsObject); + +bool +BaselineCompiler::emit_JSOP_CHECKISOBJ() +{ + frame.syncStack(0); + masm.loadValue(frame.addressOfStackValue(frame.peek(-1)), R0); + + Label ok; + masm.branchTestObject(Assembler::Equal, R0, &ok); + + prepareVMCall(); + + pushArg(Imm32(GET_UINT8(pc))); + if (!callVM(ThrowCheckIsObjectInfo)) + return false; + + masm.bind(&ok); + return true; +} + typedef bool (*ThrowUninitializedThisFn)(JSContext*, BaselineFrame* frame); static const VMFunction ThrowUninitializedThisInfo = FunctionInfo<ThrowUninitializedThisFn>(BaselineThrowUninitializedThis); bool BaselineCompiler::emit_JSOP_CHECKTHIS() { frame.syncStack(0);
--- a/js/src/jit/BaselineCompiler.h +++ b/js/src/jit/BaselineCompiler.h @@ -205,16 +205,17 @@ namespace jit { _(JSOP_RESUME) \ _(JSOP_CALLEE) \ _(JSOP_GETRVAL) \ _(JSOP_SETRVAL) \ _(JSOP_RETRVAL) \ _(JSOP_RETURN) \ _(JSOP_FUNCTIONTHIS) \ _(JSOP_GLOBALTHIS) \ + _(JSOP_CHECKISOBJ) \ _(JSOP_CHECKTHIS) \ _(JSOP_CHECKRETURN) \ _(JSOP_NEWTARGET) \ _(JSOP_SUPERCALL) \ _(JSOP_SPREADSUPERCALL) \ _(JSOP_THROWSETCONST) \ _(JSOP_THROWSETALIASEDCONST) \ _(JSOP_INITHIDDENPROP_GETTER) \