forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
51
Kha/Tools/macos/std/neko/_std/haxe/NativeStackTrace.hx
Normal file
51
Kha/Tools/macos/std/neko/_std/haxe/NativeStackTrace.hx
Normal file
@ -0,0 +1,51 @@
|
||||
package haxe;
|
||||
|
||||
import haxe.CallStack.StackItem;
|
||||
|
||||
private typedef NativeTrace = {
|
||||
final skip:Int;
|
||||
final stack:Dynamic;
|
||||
}
|
||||
|
||||
/**
|
||||
Do not use manually.
|
||||
**/
|
||||
@:dox(hide)
|
||||
@:noCompletion
|
||||
class NativeStackTrace {
|
||||
@:ifFeature('haxe.NativeStackTrace.exceptionStack')
|
||||
static public inline function saveStack(exception:Any):Void {
|
||||
}
|
||||
|
||||
static public inline function callStack():NativeTrace {
|
||||
return { skip:1, stack:untyped __dollar__callstack() };
|
||||
}
|
||||
|
||||
static public function exceptionStack():NativeTrace {
|
||||
return { skip:0, stack:untyped __dollar__excstack() };
|
||||
}
|
||||
|
||||
static public function toHaxe(native:NativeTrace, skip:Int = 0):Array<StackItem> {
|
||||
skip += native.skip;
|
||||
var a = new Array();
|
||||
var l = untyped __dollar__asize(native.stack);
|
||||
var i = 0;
|
||||
while (i < l) {
|
||||
var x = native.stack[l - i - 1];
|
||||
//skip all CFunctions until we skip required amount of hx entries
|
||||
if(x == null && skip > i) {
|
||||
skip++;
|
||||
}
|
||||
if(skip > i++) {
|
||||
continue;
|
||||
}
|
||||
if (x == null)
|
||||
a.push(CFunction);
|
||||
else if (untyped __dollar__typeof(x) == __dollar__tstring)
|
||||
a.push(Module(new String(x)));
|
||||
else
|
||||
a.push(FilePos(null, new String(untyped x[0]), untyped x[1]));
|
||||
}
|
||||
return a;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user