Fix for bug 585714 (crash (assert) in nanojit: "LIR type error (start of writer pipeline): arg 1 of 'eqi' is 'callq' which has type int64 (expected int32): 0"). r=luke.

This commit is contained in:
Peter Van der Beken 2010-08-24 15:50:15 +02:00
Родитель 515675867c
Коммит e0240fbc11
1 изменённых файлов: 9 добавлений и 6 удалений

Просмотреть файл

@ -202,7 +202,7 @@ def removeStubMember(memberId, member):
def addStubMember(memberId, member, traceable):
mayTrace = False
if member.kind == 'method' and not member.implicit_jscontext:
if member.kind == 'method' and not member.implicit_jscontext and not isVariantType(member.realtype):
# This code MUST match writeTraceableQuickStub
haveCallee = memberNeedsCallee(member)
# Traceable natives support up to MAX_TRACEABLE_NATIVE_ARGS
@ -1062,28 +1062,31 @@ defaultReturnTraceType = ("JSObject *", "OBJECT_OR_NULL", "nsnull")
defaultParamTraceType = ("js::ValueArgType ", "VALUE")
def getTraceParamType(type):
assert type is not '[jsval]'
type = getBuiltinOrNativeTypeName(type)
assert type is not '[jsval]'
return traceParamTypeMap.get(type, defaultParamTraceType)[0]
def getTraceReturnType(type):
assert type is not '[jsval]'
assert not isVariantType(type)
type = getBuiltinOrNativeTypeName(type)
assert type is not '[jsval]'
return traceReturnTypeMap.get(type, defaultReturnTraceType)[0]
def getTraceInfoParamType(type):
assert type is not '[jsval]'
type = getBuiltinOrNativeTypeName(type)
assert type is not '[jsval]'
return traceParamTypeMap.get(type, defaultParamTraceType)[1]
def getTraceInfoReturnType(type):
assert type is not '[jsval]'
assert not isVariantType(type)
type = getBuiltinOrNativeTypeName(type)
assert type is not '[jsval]'
return traceReturnTypeMap.get(type, defaultReturnTraceType)[1]
def getTraceInfoDefaultReturn(type):
assert type is not '[jsval]'
assert not isVariantType(type)
type = getBuiltinOrNativeTypeName(type)
assert type is not '[jsval]'
return traceReturnTypeMap.get(type, defaultReturnTraceType)[2]
def getFailureString(retval, indent):