Fix OdinMonkey when --disable-ion (no bug, r=me)

--HG--
extra : rebase_source : 3536acf09aecbdcb2ca9156873fc39571328975a
This commit is contained in:
Luke Wagner 2013-03-18 11:14:56 -07:00
parent 964d540d50
commit 80be644629
6 changed files with 23 additions and 6 deletions

View File

@ -46,7 +46,6 @@ VPATH += \
$(srcdir)/ds \
$(srcdir)/frontend \
$(srcdir)/gc \
$(srcdir)/ion \
$(srcdir)/vm \
$(NULL)
@ -145,9 +144,6 @@ CPPSRCS = \
Unicode.cpp \
Xdr.cpp \
Module.cpp \
AsmJS.cpp \
AsmJSLink.cpp \
AsmJSSignalHandlers.cpp \
$(NULL)
# Changes to internal header files, used externally, massively slow down
@ -295,6 +291,9 @@ CPPSRCS += MIR.cpp \
ParallelArrayAnalysis.cpp \
UnreachableCodeElimination.cpp \
EffectiveAddressAnalysis.cpp \
AsmJS.cpp \
AsmJSLink.cpp \
AsmJSSignalHandlers.cpp \
$(NULL)
endif #ENABLE_ION
ifeq (86, $(findstring 86,$(TARGET_CPU)))

View File

@ -905,6 +905,16 @@ js::testingFunc_inParallelSection(JSContext *cx, unsigned argc, jsval *vp)
return true;
}
#ifndef JS_ION
JSBool
js::IsAsmJSCompilationAvailable(JSContext *cx, unsigned argc, Value *vp)
{
CallArgs args = CallArgsFromVp(argc, vp);
args.rval().set(BooleanValue(false));
return true;
}
#endif
static JSFunctionSpecWithHelp TestingFunctions[] = {
JS_FN_HELP("gc", ::GC, 0, 0,
"gc([obj] | 'compartment')",

View File

@ -407,12 +407,14 @@ frontend::CompileFunctionBody(JSContext *cx, HandleFunction fun, CompileOptions
pn = fn->pn_body;
}
#ifdef JS_ION
/*
* Do asm.js compilation once the parse tree has been fully assembled but
* before emitting since we need to know whether to emit JSOP_LINKASMJS.
*/
if (fn->pn_funbox->useAsm && !CompileAsmJS(cx, parser.tokenStream, fn, script))
return false;
#endif
if (!SetSourceMap(cx, parser.tokenStream, ss, script))
return false;

View File

@ -4392,12 +4392,14 @@ EmitFunc(JSContext *cx, BytecodeEmitter *bce, ParseNode *pn)
script->bindings = funbox->bindings;
#ifdef JS_ION
// Do asm.js compilation at the beginning of emitting to avoid
// compiling twice when JS_BufferIsCompilableUnit and to know whether
// to emit JSOP_LINKASMJS. Don't fold constants as this will
// misrepresent the source JS as written to the type checker.
if (funbox->useAsm && !CompileAsmJS(cx, *bce->tokenStream(), pn, script))
return false;
#endif
BytecodeEmitter bce2(bce, bce->parser, funbox, script, bce->evalCaller,
bce->hasGlobalScope, pn->pn_pos.begin.lineno, bce->selfHostingMode);

View File

@ -16,14 +16,14 @@ using namespace js;
using namespace js::frontend;
using namespace mozilla;
#ifdef JS_ASMJS
#include "ion/CodeGenerator.h"
#include "ion/MIR.h"
#include "ion/MIRGraph.h"
using namespace js::ion;
#ifdef JS_ASMJS
/*****************************************************************************/
// ParseNode utilities

View File

@ -17,6 +17,8 @@ using namespace js;
using namespace js::ion;
using namespace mozilla;
#ifdef JS_ASMJS
static bool
LinkFail(JSContext *cx, const char *str)
{
@ -403,3 +405,5 @@ js::LinkAsmJS(JSContext *cx, StackFrame *fp, MutableHandleValue rval)
rval.set(ObjectValue(*obj));
return true;
}
#endif // defined(JS_ASMJS)