16748 lines
359 KiB
Plaintext
16748 lines
359 KiB
Plaintext
|
|
mirrors"t
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
var c;
|
|||
|
|
var d=a.Array;
|
|||
|
|
var e=a.isNaN;
|
|||
|
|
var f=a.JSON.stringify;
|
|||
|
|
var g;
|
|||
|
|
var h;
|
|||
|
|
var i;
|
|||
|
|
var j=a.Math.min;
|
|||
|
|
var k=b.ImportNow("promise_state_symbol");
|
|||
|
|
var l=b.ImportNow("promise_result_symbol");
|
|||
|
|
var m;
|
|||
|
|
var n;
|
|||
|
|
var o;
|
|||
|
|
b.Import(function(p){
|
|||
|
|
c=p.ErrorToString;
|
|||
|
|
g=p.MakeError;
|
|||
|
|
h=p.MapEntries;
|
|||
|
|
i=p.MapIteratorNext;
|
|||
|
|
m=p.SetIteratorNext;
|
|||
|
|
n=p.SetValues;
|
|||
|
|
o=p.SymbolToString;
|
|||
|
|
});
|
|||
|
|
var q={
|
|||
|
|
UNDEFINED_TYPE:'undefined',
|
|||
|
|
NULL_TYPE:'null',
|
|||
|
|
BOOLEAN_TYPE:'boolean',
|
|||
|
|
NUMBER_TYPE:'number',
|
|||
|
|
STRING_TYPE:'string',
|
|||
|
|
SYMBOL_TYPE:'symbol',
|
|||
|
|
OBJECT_TYPE:'object',
|
|||
|
|
FUNCTION_TYPE:'function',
|
|||
|
|
REGEXP_TYPE:'regexp',
|
|||
|
|
ERROR_TYPE:'error',
|
|||
|
|
PROPERTY_TYPE:'property',
|
|||
|
|
INTERNAL_PROPERTY_TYPE:'internalProperty',
|
|||
|
|
FRAME_TYPE:'frame',
|
|||
|
|
SCRIPT_TYPE:'script',
|
|||
|
|
CONTEXT_TYPE:'context',
|
|||
|
|
SCOPE_TYPE:'scope',
|
|||
|
|
PROMISE_TYPE:'promise',
|
|||
|
|
MAP_TYPE:'map',
|
|||
|
|
SET_TYPE:'set',
|
|||
|
|
ITERATOR_TYPE:'iterator',
|
|||
|
|
GENERATOR_TYPE:'generator',
|
|||
|
|
}
|
|||
|
|
var r=0;
|
|||
|
|
var s=-1;
|
|||
|
|
var t=[];
|
|||
|
|
var u=true;
|
|||
|
|
function MirrorCacheIsEmpty(){
|
|||
|
|
return r==0&&t.length==0;
|
|||
|
|
}
|
|||
|
|
function ToggleMirrorCache(v){
|
|||
|
|
u=v;
|
|||
|
|
ClearMirrorCache();
|
|||
|
|
}
|
|||
|
|
function ClearMirrorCache(v){
|
|||
|
|
r=0;
|
|||
|
|
t=[];
|
|||
|
|
}
|
|||
|
|
function ObjectIsPromise(v){
|
|||
|
|
return(%_IsJSReceiver(v))&&
|
|||
|
|
!(%DebugGetProperty(v,k)===(void 0));
|
|||
|
|
}
|
|||
|
|
function MakeMirror(v,w){
|
|||
|
|
var x;
|
|||
|
|
if(!w&&u){
|
|||
|
|
for(var y in t){
|
|||
|
|
x=t[y];
|
|||
|
|
if(x.value()===v){
|
|||
|
|
return x;
|
|||
|
|
}
|
|||
|
|
if(x.isNumber()&&e(x.value())&&
|
|||
|
|
typeof v=='number'&&e(v)){
|
|||
|
|
return x;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if((v===(void 0))){
|
|||
|
|
x=new UndefinedMirror();
|
|||
|
|
}else if((v===null)){
|
|||
|
|
x=new NullMirror();
|
|||
|
|
}else if((typeof(v)==='boolean')){
|
|||
|
|
x=new BooleanMirror(v);
|
|||
|
|
}else if((typeof(v)==='number')){
|
|||
|
|
x=new NumberMirror(v);
|
|||
|
|
}else if((typeof(v)==='string')){
|
|||
|
|
x=new StringMirror(v);
|
|||
|
|
}else if((typeof(v)==='symbol')){
|
|||
|
|
x=new SymbolMirror(v);
|
|||
|
|
}else if((%_IsArray(v))){
|
|||
|
|
x=new ArrayMirror(v);
|
|||
|
|
}else if((%IsDate(v))){
|
|||
|
|
x=new DateMirror(v);
|
|||
|
|
}else if((%IsFunction(v))){
|
|||
|
|
x=new FunctionMirror(v);
|
|||
|
|
}else if((%_IsRegExp(v))){
|
|||
|
|
x=new RegExpMirror(v);
|
|||
|
|
}else if((%_ClassOf(v)==='Error')){
|
|||
|
|
x=new ErrorMirror(v);
|
|||
|
|
}else if((%_ClassOf(v)==='Script')){
|
|||
|
|
x=new ScriptMirror(v);
|
|||
|
|
}else if((%_ClassOf(v)==='Map')||(%_ClassOf(v)==='WeakMap')){
|
|||
|
|
x=new MapMirror(v);
|
|||
|
|
}else if((%_ClassOf(v)==='Set')||(%_ClassOf(v)==='WeakSet')){
|
|||
|
|
x=new SetMirror(v);
|
|||
|
|
}else if((%_ClassOf(v)==='Map Iterator')||(%_ClassOf(v)==='Set Iterator')){
|
|||
|
|
x=new IteratorMirror(v);
|
|||
|
|
}else if(ObjectIsPromise(v)){
|
|||
|
|
x=new PromiseMirror(v);
|
|||
|
|
}else if((%_ClassOf(v)==='Generator')){
|
|||
|
|
x=new GeneratorMirror(v);
|
|||
|
|
}else{
|
|||
|
|
x=new ObjectMirror(v,q.OBJECT_TYPE,w);
|
|||
|
|
}
|
|||
|
|
if(u)t[x.handle()]=x;
|
|||
|
|
return x;
|
|||
|
|
}
|
|||
|
|
function LookupMirror(z){
|
|||
|
|
if(!u){
|
|||
|
|
throw g(2,"Mirror cache is disabled");
|
|||
|
|
}
|
|||
|
|
return t[z];
|
|||
|
|
}
|
|||
|
|
function GetUndefinedMirror(){
|
|||
|
|
return MakeMirror((void 0));
|
|||
|
|
}
|
|||
|
|
function inherits(A,B){
|
|||
|
|
var C=function(){};
|
|||
|
|
C.prototype=B.prototype;
|
|||
|
|
A.super_=B.prototype;
|
|||
|
|
A.prototype=new C();
|
|||
|
|
A.prototype.constructor=A;
|
|||
|
|
}
|
|||
|
|
var D=80;
|
|||
|
|
var E={};
|
|||
|
|
E.Data=0;
|
|||
|
|
E.DataConstant=2;
|
|||
|
|
E.AccessorConstant=3;
|
|||
|
|
var F={};
|
|||
|
|
F.None=0;
|
|||
|
|
F.ReadOnly=1;
|
|||
|
|
F.DontEnum=2;
|
|||
|
|
F.DontDelete=4;
|
|||
|
|
var G={Global:0,
|
|||
|
|
Local:1,
|
|||
|
|
With:2,
|
|||
|
|
Closure:3,
|
|||
|
|
Catch:4,
|
|||
|
|
Block:5,
|
|||
|
|
Script:6,
|
|||
|
|
Eval:7,
|
|||
|
|
};
|
|||
|
|
function Mirror(H){
|
|||
|
|
this.type_=H;
|
|||
|
|
}
|
|||
|
|
Mirror.prototype.type=function(){
|
|||
|
|
return this.type_;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isValue=function(){
|
|||
|
|
return this instanceof ValueMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isUndefined=function(){
|
|||
|
|
return this instanceof UndefinedMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isNull=function(){
|
|||
|
|
return this instanceof NullMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isBoolean=function(){
|
|||
|
|
return this instanceof BooleanMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isNumber=function(){
|
|||
|
|
return this instanceof NumberMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isString=function(){
|
|||
|
|
return this instanceof StringMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isSymbol=function(){
|
|||
|
|
return this instanceof SymbolMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isObject=function(){
|
|||
|
|
return this instanceof ObjectMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isFunction=function(){
|
|||
|
|
return this instanceof FunctionMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isUnresolvedFunction=function(){
|
|||
|
|
return this instanceof UnresolvedFunctionMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isArray=function(){
|
|||
|
|
return this instanceof ArrayMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isDate=function(){
|
|||
|
|
return this instanceof DateMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isRegExp=function(){
|
|||
|
|
return this instanceof RegExpMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isError=function(){
|
|||
|
|
return this instanceof ErrorMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isPromise=function(){
|
|||
|
|
return this instanceof PromiseMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isGenerator=function(){
|
|||
|
|
return this instanceof GeneratorMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isProperty=function(){
|
|||
|
|
return this instanceof PropertyMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isInternalProperty=function(){
|
|||
|
|
return this instanceof InternalPropertyMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isFrame=function(){
|
|||
|
|
return this instanceof FrameMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isScript=function(){
|
|||
|
|
return this instanceof ScriptMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isContext=function(){
|
|||
|
|
return this instanceof ContextMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isScope=function(){
|
|||
|
|
return this instanceof ScopeMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isMap=function(){
|
|||
|
|
return this instanceof MapMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isSet=function(){
|
|||
|
|
return this instanceof SetMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.isIterator=function(){
|
|||
|
|
return this instanceof IteratorMirror;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.allocateHandle_=function(){
|
|||
|
|
if(u)this.handle_=r++;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.allocateTransientHandle_=function(){
|
|||
|
|
this.handle_=s--;
|
|||
|
|
};
|
|||
|
|
Mirror.prototype.toText=function(){
|
|||
|
|
return"#<"+this.constructor.name+">";
|
|||
|
|
};
|
|||
|
|
function ValueMirror(H,v,I){
|
|||
|
|
%_Call(Mirror,this,H);
|
|||
|
|
this.value_=v;
|
|||
|
|
if(!I){
|
|||
|
|
this.allocateHandle_();
|
|||
|
|
}else{
|
|||
|
|
this.allocateTransientHandle_();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
inherits(ValueMirror,Mirror);
|
|||
|
|
Mirror.prototype.handle=function(){
|
|||
|
|
return this.handle_;
|
|||
|
|
};
|
|||
|
|
ValueMirror.prototype.isPrimitive=function(){
|
|||
|
|
var H=this.type();
|
|||
|
|
return H==='undefined'||
|
|||
|
|
H==='null'||
|
|||
|
|
H==='boolean'||
|
|||
|
|
H==='number'||
|
|||
|
|
H==='string'||
|
|||
|
|
H==='symbol';
|
|||
|
|
};
|
|||
|
|
ValueMirror.prototype.value=function(){
|
|||
|
|
return this.value_;
|
|||
|
|
};
|
|||
|
|
function UndefinedMirror(){
|
|||
|
|
%_Call(ValueMirror,this,q.UNDEFINED_TYPE,(void 0));
|
|||
|
|
}
|
|||
|
|
inherits(UndefinedMirror,ValueMirror);
|
|||
|
|
UndefinedMirror.prototype.toText=function(){
|
|||
|
|
return'undefined';
|
|||
|
|
};
|
|||
|
|
function NullMirror(){
|
|||
|
|
%_Call(ValueMirror,this,q.NULL_TYPE,null);
|
|||
|
|
}
|
|||
|
|
inherits(NullMirror,ValueMirror);
|
|||
|
|
NullMirror.prototype.toText=function(){
|
|||
|
|
return'null';
|
|||
|
|
};
|
|||
|
|
function BooleanMirror(v){
|
|||
|
|
%_Call(ValueMirror,this,q.BOOLEAN_TYPE,v);
|
|||
|
|
}
|
|||
|
|
inherits(BooleanMirror,ValueMirror);
|
|||
|
|
BooleanMirror.prototype.toText=function(){
|
|||
|
|
return this.value_?'true':'false';
|
|||
|
|
};
|
|||
|
|
function NumberMirror(v){
|
|||
|
|
%_Call(ValueMirror,this,q.NUMBER_TYPE,v);
|
|||
|
|
}
|
|||
|
|
inherits(NumberMirror,ValueMirror);
|
|||
|
|
NumberMirror.prototype.toText=function(){
|
|||
|
|
return %_NumberToString(this.value_);
|
|||
|
|
};
|
|||
|
|
function StringMirror(v){
|
|||
|
|
%_Call(ValueMirror,this,q.STRING_TYPE,v);
|
|||
|
|
}
|
|||
|
|
inherits(StringMirror,ValueMirror);
|
|||
|
|
StringMirror.prototype.length=function(){
|
|||
|
|
return this.value_.length;
|
|||
|
|
};
|
|||
|
|
StringMirror.prototype.getTruncatedValue=function(J){
|
|||
|
|
if(J!=-1&&this.length()>J){
|
|||
|
|
return this.value_.substring(0,J)+
|
|||
|
|
'... (length: '+this.length()+')';
|
|||
|
|
}
|
|||
|
|
return this.value_;
|
|||
|
|
};
|
|||
|
|
StringMirror.prototype.toText=function(){
|
|||
|
|
return this.getTruncatedValue(D);
|
|||
|
|
};
|
|||
|
|
function SymbolMirror(v){
|
|||
|
|
%_Call(ValueMirror,this,q.SYMBOL_TYPE,v);
|
|||
|
|
}
|
|||
|
|
inherits(SymbolMirror,ValueMirror);
|
|||
|
|
SymbolMirror.prototype.description=function(){
|
|||
|
|
return %SymbolDescription(%_ValueOf(this.value_));
|
|||
|
|
}
|
|||
|
|
SymbolMirror.prototype.toText=function(){
|
|||
|
|
return %_Call(o,this.value_);
|
|||
|
|
}
|
|||
|
|
function ObjectMirror(v,H,I){
|
|||
|
|
H=H||q.OBJECT_TYPE;
|
|||
|
|
%_Call(ValueMirror,this,H,v,I);
|
|||
|
|
}
|
|||
|
|
inherits(ObjectMirror,ValueMirror);
|
|||
|
|
ObjectMirror.prototype.className=function(){
|
|||
|
|
return %_ClassOf(this.value_);
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.constructorFunction=function(){
|
|||
|
|
return MakeMirror(%DebugGetProperty(this.value_,'constructor'));
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.prototypeObject=function(){
|
|||
|
|
return MakeMirror(%DebugGetProperty(this.value_,'prototype'));
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.protoObject=function(){
|
|||
|
|
return MakeMirror(%DebugGetPrototype(this.value_));
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.hasNamedInterceptor=function(){
|
|||
|
|
var K=%GetInterceptorInfo(this.value_);
|
|||
|
|
return(K&2)!=0;
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.hasIndexedInterceptor=function(){
|
|||
|
|
var K=%GetInterceptorInfo(this.value_);
|
|||
|
|
return(K&1)!=0;
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.propertyNames=function(){
|
|||
|
|
return %GetOwnPropertyKeys(this.value_,0);
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.properties=function(){
|
|||
|
|
var L=this.propertyNames();
|
|||
|
|
var M=new d(L.length);
|
|||
|
|
for(var N=0;N<L.length;N++){
|
|||
|
|
M[N]=this.property(L[N]);
|
|||
|
|
}
|
|||
|
|
return M;
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.internalProperties=function(){
|
|||
|
|
return ObjectMirror.GetInternalProperties(this.value_);
|
|||
|
|
}
|
|||
|
|
ObjectMirror.prototype.property=function(O){
|
|||
|
|
var P=%DebugGetPropertyDetails(this.value_,(%_ToName(O)));
|
|||
|
|
if(P){
|
|||
|
|
return new PropertyMirror(this,O,P);
|
|||
|
|
}
|
|||
|
|
return GetUndefinedMirror();
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.lookupProperty=function(v){
|
|||
|
|
var M=this.properties();
|
|||
|
|
for(var N=0;N<M.length;N++){
|
|||
|
|
var Q=M[N];
|
|||
|
|
if(Q.propertyType()!=E.AccessorConstant){
|
|||
|
|
if(Q.value_===v.value_){
|
|||
|
|
return Q;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return GetUndefinedMirror();
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.referencedBy=function(R){
|
|||
|
|
var S=%DebugReferencedBy(this.value_,
|
|||
|
|
Mirror.prototype,R||0);
|
|||
|
|
for(var N=0;N<S.length;N++){
|
|||
|
|
S[N]=MakeMirror(S[N]);
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
ObjectMirror.prototype.toText=function(){
|
|||
|
|
var O;
|
|||
|
|
var A=this.constructorFunction();
|
|||
|
|
if(!A.isFunction()){
|
|||
|
|
O=this.className();
|
|||
|
|
}else{
|
|||
|
|
O=A.name();
|
|||
|
|
if(!O){
|
|||
|
|
O=this.className();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return'#<'+O+'>';
|
|||
|
|
};
|
|||
|
|
ObjectMirror.GetInternalProperties=function(v){
|
|||
|
|
var M=%DebugGetInternalProperties(v);
|
|||
|
|
var S=[];
|
|||
|
|
for(var N=0;N<M.length;N+=2){
|
|||
|
|
S.push(new InternalPropertyMirror(M[N],M[N+1]));
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
}
|
|||
|
|
function FunctionMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v,q.FUNCTION_TYPE);
|
|||
|
|
this.resolved_=true;
|
|||
|
|
}
|
|||
|
|
inherits(FunctionMirror,ObjectMirror);
|
|||
|
|
FunctionMirror.prototype.resolved=function(){
|
|||
|
|
return this.resolved_;
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.name=function(){
|
|||
|
|
return %FunctionGetName(this.value_);
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.debugName=function(){
|
|||
|
|
return %FunctionGetDebugName(this.value_);
|
|||
|
|
}
|
|||
|
|
FunctionMirror.prototype.inferredName=function(){
|
|||
|
|
return %FunctionGetInferredName(this.value_);
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.source=function(){
|
|||
|
|
if(this.resolved()){
|
|||
|
|
return %FunctionToString(this.value_);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.script=function(){
|
|||
|
|
if(this.resolved()){
|
|||
|
|
if(this.script_){
|
|||
|
|
return this.script_;
|
|||
|
|
}
|
|||
|
|
var T=%FunctionGetScript(this.value_);
|
|||
|
|
if(T){
|
|||
|
|
return this.script_=MakeMirror(T);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.sourcePosition_=function(){
|
|||
|
|
if(this.resolved()){
|
|||
|
|
return %FunctionGetScriptSourcePosition(this.value_);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.sourceLocation=function(){
|
|||
|
|
if(this.resolved()){
|
|||
|
|
var T=this.script();
|
|||
|
|
if(T){
|
|||
|
|
return T.locationFromPosition(this.sourcePosition_(),true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.constructedBy=function(U){
|
|||
|
|
if(this.resolved()){
|
|||
|
|
var S=%DebugConstructedBy(this.value_,U||0);
|
|||
|
|
for(var N=0;N<S.length;N++){
|
|||
|
|
S[N]=MakeMirror(S[N]);
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
}else{
|
|||
|
|
return[];
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.scopeCount=function(){
|
|||
|
|
if(this.resolved()){
|
|||
|
|
if((this.scopeCount_===(void 0))){
|
|||
|
|
this.scopeCount_=%GetFunctionScopeCount(this.value());
|
|||
|
|
}
|
|||
|
|
return this.scopeCount_;
|
|||
|
|
}else{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.scope=function(V){
|
|||
|
|
if(this.resolved()){
|
|||
|
|
return new ScopeMirror((void 0),this,V);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.toText=function(){
|
|||
|
|
return this.source();
|
|||
|
|
};
|
|||
|
|
FunctionMirror.prototype.context=function(){
|
|||
|
|
if(this.resolved()){
|
|||
|
|
if(!this._context)
|
|||
|
|
this._context=new ContextMirror(%FunctionGetContextData(this.value_));
|
|||
|
|
return this._context;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
function UnresolvedFunctionMirror(v){
|
|||
|
|
%_Call(ValueMirror,this,q.FUNCTION_TYPE,v);
|
|||
|
|
this.propertyCount_=0;
|
|||
|
|
this.elementCount_=0;
|
|||
|
|
this.resolved_=false;
|
|||
|
|
}
|
|||
|
|
inherits(UnresolvedFunctionMirror,FunctionMirror);
|
|||
|
|
UnresolvedFunctionMirror.prototype.className=function(){
|
|||
|
|
return'Function';
|
|||
|
|
};
|
|||
|
|
UnresolvedFunctionMirror.prototype.constructorFunction=function(){
|
|||
|
|
return GetUndefinedMirror();
|
|||
|
|
};
|
|||
|
|
UnresolvedFunctionMirror.prototype.prototypeObject=function(){
|
|||
|
|
return GetUndefinedMirror();
|
|||
|
|
};
|
|||
|
|
UnresolvedFunctionMirror.prototype.protoObject=function(){
|
|||
|
|
return GetUndefinedMirror();
|
|||
|
|
};
|
|||
|
|
UnresolvedFunctionMirror.prototype.name=function(){
|
|||
|
|
return this.value_;
|
|||
|
|
};
|
|||
|
|
UnresolvedFunctionMirror.prototype.inferredName=function(){
|
|||
|
|
return(void 0);
|
|||
|
|
};
|
|||
|
|
UnresolvedFunctionMirror.prototype.propertyNames=function(W,X){
|
|||
|
|
return[];
|
|||
|
|
};
|
|||
|
|
function ArrayMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v);
|
|||
|
|
}
|
|||
|
|
inherits(ArrayMirror,ObjectMirror);
|
|||
|
|
ArrayMirror.prototype.length=function(){
|
|||
|
|
return this.value_.length;
|
|||
|
|
};
|
|||
|
|
ArrayMirror.prototype.indexedPropertiesFromRange=function(opt_from_index,
|
|||
|
|
opt_to_index){
|
|||
|
|
var Y=opt_from_index||0;
|
|||
|
|
var Z=opt_to_index||this.length()-1;
|
|||
|
|
if(Y>Z)return new d();
|
|||
|
|
var aa=new d(Z-Y+1);
|
|||
|
|
for(var N=Y;N<=Z;N++){
|
|||
|
|
var P=%DebugGetPropertyDetails(this.value_,(%_ToString(N)));
|
|||
|
|
var v;
|
|||
|
|
if(P){
|
|||
|
|
v=new PropertyMirror(this,N,P);
|
|||
|
|
}else{
|
|||
|
|
v=GetUndefinedMirror();
|
|||
|
|
}
|
|||
|
|
aa[N-Y]=v;
|
|||
|
|
}
|
|||
|
|
return aa;
|
|||
|
|
};
|
|||
|
|
function DateMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v);
|
|||
|
|
}
|
|||
|
|
inherits(DateMirror,ObjectMirror);
|
|||
|
|
DateMirror.prototype.toText=function(){
|
|||
|
|
var ab=f(this.value_);
|
|||
|
|
return ab.substring(1,ab.length-1);
|
|||
|
|
};
|
|||
|
|
function RegExpMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v,q.REGEXP_TYPE);
|
|||
|
|
}
|
|||
|
|
inherits(RegExpMirror,ObjectMirror);
|
|||
|
|
RegExpMirror.prototype.source=function(){
|
|||
|
|
return this.value_.source;
|
|||
|
|
};
|
|||
|
|
RegExpMirror.prototype.global=function(){
|
|||
|
|
return this.value_.global;
|
|||
|
|
};
|
|||
|
|
RegExpMirror.prototype.ignoreCase=function(){
|
|||
|
|
return this.value_.ignoreCase;
|
|||
|
|
};
|
|||
|
|
RegExpMirror.prototype.multiline=function(){
|
|||
|
|
return this.value_.multiline;
|
|||
|
|
};
|
|||
|
|
RegExpMirror.prototype.sticky=function(){
|
|||
|
|
return this.value_.sticky;
|
|||
|
|
};
|
|||
|
|
RegExpMirror.prototype.unicode=function(){
|
|||
|
|
return this.value_.unicode;
|
|||
|
|
};
|
|||
|
|
RegExpMirror.prototype.toText=function(){
|
|||
|
|
return"/"+this.source()+"/";
|
|||
|
|
};
|
|||
|
|
function ErrorMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v,q.ERROR_TYPE);
|
|||
|
|
}
|
|||
|
|
inherits(ErrorMirror,ObjectMirror);
|
|||
|
|
ErrorMirror.prototype.message=function(){
|
|||
|
|
return this.value_.message;
|
|||
|
|
};
|
|||
|
|
ErrorMirror.prototype.toText=function(){
|
|||
|
|
var ac;
|
|||
|
|
try{
|
|||
|
|
ac=%_Call(c,this.value_);
|
|||
|
|
}catch(e){
|
|||
|
|
ac='#<Error>';
|
|||
|
|
}
|
|||
|
|
return ac;
|
|||
|
|
};
|
|||
|
|
function PromiseMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v,q.PROMISE_TYPE);
|
|||
|
|
}
|
|||
|
|
inherits(PromiseMirror,ObjectMirror);
|
|||
|
|
function PromiseGetStatus_(v){
|
|||
|
|
var ad=%DebugGetProperty(v,k);
|
|||
|
|
if(ad==0)return"pending";
|
|||
|
|
if(ad==1)return"resolved";
|
|||
|
|
return"rejected";
|
|||
|
|
}
|
|||
|
|
function PromiseGetValue_(v){
|
|||
|
|
return %DebugGetProperty(v,l);
|
|||
|
|
}
|
|||
|
|
PromiseMirror.prototype.status=function(){
|
|||
|
|
return PromiseGetStatus_(this.value_);
|
|||
|
|
};
|
|||
|
|
PromiseMirror.prototype.promiseValue=function(){
|
|||
|
|
return MakeMirror(PromiseGetValue_(this.value_));
|
|||
|
|
};
|
|||
|
|
function MapMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v,q.MAP_TYPE);
|
|||
|
|
}
|
|||
|
|
inherits(MapMirror,ObjectMirror);
|
|||
|
|
MapMirror.prototype.entries=function(ae){
|
|||
|
|
var S=[];
|
|||
|
|
if((%_ClassOf(this.value_)==='WeakMap')){
|
|||
|
|
var af=%GetWeakMapEntries(this.value_,ae||0);
|
|||
|
|
for(var N=0;N<af.length;N+=2){
|
|||
|
|
S.push({
|
|||
|
|
key:af[N],
|
|||
|
|
value:af[N+1]
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
}
|
|||
|
|
var ag=%_Call(h,this.value_);
|
|||
|
|
var ah;
|
|||
|
|
while((!ae||S.length<ae)&&
|
|||
|
|
!(ah=ag.next()).done){
|
|||
|
|
S.push({
|
|||
|
|
key:ah.value[0],
|
|||
|
|
value:ah.value[1]
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
function SetMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v,q.SET_TYPE);
|
|||
|
|
}
|
|||
|
|
inherits(SetMirror,ObjectMirror);
|
|||
|
|
function IteratorGetValues_(ag,ai,ae){
|
|||
|
|
var S=[];
|
|||
|
|
var ah;
|
|||
|
|
while((!ae||S.length<ae)&&
|
|||
|
|
!(ah=%_Call(ai,ag)).done){
|
|||
|
|
S.push(ah.value);
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
}
|
|||
|
|
SetMirror.prototype.values=function(ae){
|
|||
|
|
if((%_ClassOf(this.value_)==='WeakSet')){
|
|||
|
|
return %GetWeakSetValues(this.value_,ae||0);
|
|||
|
|
}
|
|||
|
|
var ag=%_Call(n,this.value_);
|
|||
|
|
return IteratorGetValues_(ag,m,ae);
|
|||
|
|
};
|
|||
|
|
function IteratorMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v,q.ITERATOR_TYPE);
|
|||
|
|
}
|
|||
|
|
inherits(IteratorMirror,ObjectMirror);
|
|||
|
|
IteratorMirror.prototype.preview=function(ae){
|
|||
|
|
if((%_ClassOf(this.value_)==='Map Iterator')){
|
|||
|
|
return IteratorGetValues_(%MapIteratorClone(this.value_),
|
|||
|
|
i,
|
|||
|
|
ae);
|
|||
|
|
}else if((%_ClassOf(this.value_)==='Set Iterator')){
|
|||
|
|
return IteratorGetValues_(%SetIteratorClone(this.value_),
|
|||
|
|
m,
|
|||
|
|
ae);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
function GeneratorMirror(v){
|
|||
|
|
%_Call(ObjectMirror,this,v,q.GENERATOR_TYPE);
|
|||
|
|
}
|
|||
|
|
inherits(GeneratorMirror,ObjectMirror);
|
|||
|
|
function GeneratorGetStatus_(v){
|
|||
|
|
var aj=%GeneratorGetContinuation(v);
|
|||
|
|
if(aj<-1)return"running";
|
|||
|
|
if(aj==-1)return"closed";
|
|||
|
|
return"suspended";
|
|||
|
|
}
|
|||
|
|
GeneratorMirror.prototype.status=function(){
|
|||
|
|
return GeneratorGetStatus_(this.value_);
|
|||
|
|
};
|
|||
|
|
GeneratorMirror.prototype.sourcePosition_=function(){
|
|||
|
|
return %GeneratorGetSourcePosition(this.value_);
|
|||
|
|
};
|
|||
|
|
GeneratorMirror.prototype.sourceLocation=function(){
|
|||
|
|
var ak=this.sourcePosition_();
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
var T=this.func().script();
|
|||
|
|
if(T){
|
|||
|
|
return T.locationFromPosition(ak,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
GeneratorMirror.prototype.func=function(){
|
|||
|
|
if(!this.func_){
|
|||
|
|
this.func_=MakeMirror(%GeneratorGetFunction(this.value_));
|
|||
|
|
}
|
|||
|
|
return this.func_;
|
|||
|
|
};
|
|||
|
|
GeneratorMirror.prototype.receiver=function(){
|
|||
|
|
if(!this.receiver_){
|
|||
|
|
this.receiver_=MakeMirror(%GeneratorGetReceiver(this.value_));
|
|||
|
|
}
|
|||
|
|
return this.receiver_;
|
|||
|
|
};
|
|||
|
|
function PropertyMirror(x,O,P){
|
|||
|
|
%_Call(Mirror,this,q.PROPERTY_TYPE);
|
|||
|
|
this.mirror_=x;
|
|||
|
|
this.name_=O;
|
|||
|
|
this.value_=P[0];
|
|||
|
|
this.details_=P[1];
|
|||
|
|
this.is_interceptor_=P[2];
|
|||
|
|
if(P.length>3){
|
|||
|
|
this.exception_=P[3];
|
|||
|
|
this.getter_=P[4];
|
|||
|
|
this.setter_=P[5];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
inherits(PropertyMirror,Mirror);
|
|||
|
|
PropertyMirror.prototype.isReadOnly=function(){
|
|||
|
|
return(this.attributes()&F.ReadOnly)!=0;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.isEnum=function(){
|
|||
|
|
return(this.attributes()&F.DontEnum)==0;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.canDelete=function(){
|
|||
|
|
return(this.attributes()&F.DontDelete)==0;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.name=function(){
|
|||
|
|
return this.name_;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.toText=function(){
|
|||
|
|
if((typeof(this.name_)==='symbol'))return %SymbolDescriptiveString(this.name_);
|
|||
|
|
return this.name_;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.isIndexed=function(){
|
|||
|
|
for(var N=0;N<this.name_.length;N++){
|
|||
|
|
if(this.name_[N]<'0'||'9'<this.name_[N]){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.value=function(){
|
|||
|
|
return MakeMirror(this.value_,false);
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.isException=function(){
|
|||
|
|
return this.exception_?true:false;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.attributes=function(){
|
|||
|
|
return %DebugPropertyAttributesFromDetails(this.details_);
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.propertyType=function(){
|
|||
|
|
return %DebugPropertyTypeFromDetails(this.details_);
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.hasGetter=function(){
|
|||
|
|
return this.getter_?true:false;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.hasSetter=function(){
|
|||
|
|
return this.setter_?true:false;
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.getter=function(){
|
|||
|
|
if(this.hasGetter()){
|
|||
|
|
return MakeMirror(this.getter_);
|
|||
|
|
}else{
|
|||
|
|
return GetUndefinedMirror();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.setter=function(){
|
|||
|
|
if(this.hasSetter()){
|
|||
|
|
return MakeMirror(this.setter_);
|
|||
|
|
}else{
|
|||
|
|
return GetUndefinedMirror();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
PropertyMirror.prototype.isNative=function(){
|
|||
|
|
return this.is_interceptor_||
|
|||
|
|
((this.propertyType()==E.AccessorConstant)&&
|
|||
|
|
!this.hasGetter()&&!this.hasSetter());
|
|||
|
|
};
|
|||
|
|
function InternalPropertyMirror(O,v){
|
|||
|
|
%_Call(Mirror,this,q.INTERNAL_PROPERTY_TYPE);
|
|||
|
|
this.name_=O;
|
|||
|
|
this.value_=v;
|
|||
|
|
}
|
|||
|
|
inherits(InternalPropertyMirror,Mirror);
|
|||
|
|
InternalPropertyMirror.prototype.name=function(){
|
|||
|
|
return this.name_;
|
|||
|
|
};
|
|||
|
|
InternalPropertyMirror.prototype.value=function(){
|
|||
|
|
return MakeMirror(this.value_,false);
|
|||
|
|
};
|
|||
|
|
var al=0;
|
|||
|
|
var am=1;
|
|||
|
|
var an=2;
|
|||
|
|
var ao=3;
|
|||
|
|
var ap=4;
|
|||
|
|
var aq=5;
|
|||
|
|
var ar=6;
|
|||
|
|
var as=7;
|
|||
|
|
var at=8;
|
|||
|
|
var au=9;
|
|||
|
|
var av=0;
|
|||
|
|
var aw=1;
|
|||
|
|
var ax=2;
|
|||
|
|
var ay=1<<0;
|
|||
|
|
var az=1<<1;
|
|||
|
|
var aA=7<<2;
|
|||
|
|
function FrameDetails(aB,V){
|
|||
|
|
this.break_id_=aB;
|
|||
|
|
this.details_=%GetFrameDetails(aB,V);
|
|||
|
|
}
|
|||
|
|
FrameDetails.prototype.frameId=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
return this.details_[al];
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.receiver=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
return this.details_[am];
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.func=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
return this.details_[an];
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.isConstructCall=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
return this.details_[ar];
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.isAtReturn=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
return this.details_[as];
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.isDebuggerFrame=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
var aC=ay;
|
|||
|
|
return(this.details_[at]&aC)==aC;
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.isOptimizedFrame=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
var aC=az;
|
|||
|
|
return(this.details_[at]&aC)==aC;
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.isInlinedFrame=function(){
|
|||
|
|
return this.inlinedFrameIndex()>0;
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.inlinedFrameIndex=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
var aC=aA;
|
|||
|
|
return(this.details_[at]&aC)>>2;
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.argumentCount=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
return this.details_[ao];
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.argumentName=function(V){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
if(V>=0&&V<this.argumentCount()){
|
|||
|
|
return this.details_[au+
|
|||
|
|
V*ax+
|
|||
|
|
av];
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.argumentValue=function(V){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
if(V>=0&&V<this.argumentCount()){
|
|||
|
|
return this.details_[au+
|
|||
|
|
V*ax+
|
|||
|
|
aw];
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.localCount=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
return this.details_[ap];
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.sourcePosition=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
return this.details_[aq];
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.localName=function(V){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
if(V>=0&&V<this.localCount()){
|
|||
|
|
var aD=au+
|
|||
|
|
this.argumentCount()*ax;
|
|||
|
|
return this.details_[aD+
|
|||
|
|
V*ax+
|
|||
|
|
av];
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.localValue=function(V){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
if(V>=0&&V<this.localCount()){
|
|||
|
|
var aD=au+
|
|||
|
|
this.argumentCount()*ax;
|
|||
|
|
return this.details_[aD+
|
|||
|
|
V*ax+
|
|||
|
|
aw];
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.returnValue=function(){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
var aE=
|
|||
|
|
au+
|
|||
|
|
(this.argumentCount()+this.localCount())*ax;
|
|||
|
|
if(this.details_[as]){
|
|||
|
|
return this.details_[aE];
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameDetails.prototype.scopeCount=function(){
|
|||
|
|
if((this.scopeCount_===(void 0))){
|
|||
|
|
this.scopeCount_=%GetScopeCount(this.break_id_,this.frameId());
|
|||
|
|
}
|
|||
|
|
return this.scopeCount_;
|
|||
|
|
};
|
|||
|
|
function FrameMirror(aB,V){
|
|||
|
|
%_Call(Mirror,this,q.FRAME_TYPE);
|
|||
|
|
this.break_id_=aB;
|
|||
|
|
this.index_=V;
|
|||
|
|
this.details_=new FrameDetails(aB,V);
|
|||
|
|
}
|
|||
|
|
inherits(FrameMirror,Mirror);
|
|||
|
|
FrameMirror.prototype.details=function(){
|
|||
|
|
return this.details_;
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.index=function(){
|
|||
|
|
return this.index_;
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.func=function(){
|
|||
|
|
if(this.func_){
|
|||
|
|
return this.func_;
|
|||
|
|
}
|
|||
|
|
var aC=this.details_.func();
|
|||
|
|
if((%IsFunction(aC))){
|
|||
|
|
return this.func_=MakeMirror(aC);
|
|||
|
|
}else{
|
|||
|
|
return new UnresolvedFunctionMirror(aC);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.receiver=function(){
|
|||
|
|
return MakeMirror(this.details_.receiver());
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.isConstructCall=function(){
|
|||
|
|
return this.details_.isConstructCall();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.isAtReturn=function(){
|
|||
|
|
return this.details_.isAtReturn();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.isDebuggerFrame=function(){
|
|||
|
|
return this.details_.isDebuggerFrame();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.isOptimizedFrame=function(){
|
|||
|
|
return this.details_.isOptimizedFrame();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.isInlinedFrame=function(){
|
|||
|
|
return this.details_.isInlinedFrame();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.inlinedFrameIndex=function(){
|
|||
|
|
return this.details_.inlinedFrameIndex();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.argumentCount=function(){
|
|||
|
|
return this.details_.argumentCount();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.argumentName=function(V){
|
|||
|
|
return this.details_.argumentName(V);
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.argumentValue=function(V){
|
|||
|
|
return MakeMirror(this.details_.argumentValue(V));
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.localCount=function(){
|
|||
|
|
return this.details_.localCount();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.localName=function(V){
|
|||
|
|
return this.details_.localName(V);
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.localValue=function(V){
|
|||
|
|
return MakeMirror(this.details_.localValue(V));
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.returnValue=function(){
|
|||
|
|
return MakeMirror(this.details_.returnValue());
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.sourcePosition=function(){
|
|||
|
|
return this.details_.sourcePosition();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.sourceLocation=function(){
|
|||
|
|
var aF=this.func();
|
|||
|
|
if(aF.resolved()){
|
|||
|
|
var T=aF.script();
|
|||
|
|
if(T){
|
|||
|
|
return T.locationFromPosition(this.sourcePosition(),true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.sourceLine=function(){
|
|||
|
|
var aG=this.sourceLocation();
|
|||
|
|
if(aG){
|
|||
|
|
return aG.line;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.sourceColumn=function(){
|
|||
|
|
var aG=this.sourceLocation();
|
|||
|
|
if(aG){
|
|||
|
|
return aG.column;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.sourceLineText=function(){
|
|||
|
|
var aG=this.sourceLocation();
|
|||
|
|
if(aG){
|
|||
|
|
return aG.sourceText;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.scopeCount=function(){
|
|||
|
|
return this.details_.scopeCount();
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.scope=function(V){
|
|||
|
|
return new ScopeMirror(this,(void 0),V);
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.allScopes=function(aH){
|
|||
|
|
var aI=%GetAllScopesDetails(this.break_id_,
|
|||
|
|
this.details_.frameId(),
|
|||
|
|
this.details_.inlinedFrameIndex(),
|
|||
|
|
!!aH);
|
|||
|
|
var S=[];
|
|||
|
|
for(var N=0;N<aI.length;++N){
|
|||
|
|
S.push(new ScopeMirror(this,(void 0),N,aI[N]));
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.evaluate=function(source,disable_break,
|
|||
|
|
opt_context_object){
|
|||
|
|
return MakeMirror(%DebugEvaluate(this.break_id_,
|
|||
|
|
this.details_.frameId(),
|
|||
|
|
this.details_.inlinedFrameIndex(),
|
|||
|
|
source,
|
|||
|
|
(!!(disable_break)),
|
|||
|
|
opt_context_object));
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.invocationText=function(){
|
|||
|
|
var S='';
|
|||
|
|
var aF=this.func();
|
|||
|
|
var aJ=this.receiver();
|
|||
|
|
if(this.isConstructCall()){
|
|||
|
|
S+='new ';
|
|||
|
|
S+=aF.name()?aF.name():'[anonymous]';
|
|||
|
|
}else if(this.isDebuggerFrame()){
|
|||
|
|
S+='[debugger]';
|
|||
|
|
}else{
|
|||
|
|
var aK=
|
|||
|
|
!aJ.className||(aJ.className()!='global');
|
|||
|
|
if(aK){
|
|||
|
|
S+=aJ.toText();
|
|||
|
|
}
|
|||
|
|
var Q=GetUndefinedMirror();
|
|||
|
|
if(aJ.isObject()){
|
|||
|
|
for(var aL=aJ;
|
|||
|
|
!aL.isNull()&&Q.isUndefined();
|
|||
|
|
aL=aL.protoObject()){
|
|||
|
|
Q=aL.lookupProperty(aF);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!Q.isUndefined()){
|
|||
|
|
if(!Q.isIndexed()){
|
|||
|
|
if(aK){
|
|||
|
|
S+='.';
|
|||
|
|
}
|
|||
|
|
S+=Q.toText();
|
|||
|
|
}else{
|
|||
|
|
S+='[';
|
|||
|
|
S+=Q.toText();
|
|||
|
|
S+=']';
|
|||
|
|
}
|
|||
|
|
if(aF.name()&&aF.name()!=Q.name()){
|
|||
|
|
S+='(aka '+aF.name()+')';
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
if(aK){
|
|||
|
|
S+='.';
|
|||
|
|
}
|
|||
|
|
S+=aF.name()?aF.name():'[anonymous]';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!this.isDebuggerFrame()){
|
|||
|
|
S+='(';
|
|||
|
|
for(var N=0;N<this.argumentCount();N++){
|
|||
|
|
if(N!=0)S+=', ';
|
|||
|
|
if(this.argumentName(N)){
|
|||
|
|
S+=this.argumentName(N);
|
|||
|
|
S+='=';
|
|||
|
|
}
|
|||
|
|
S+=this.argumentValue(N).toText();
|
|||
|
|
}
|
|||
|
|
S+=')';
|
|||
|
|
}
|
|||
|
|
if(this.isAtReturn()){
|
|||
|
|
S+=' returning ';
|
|||
|
|
S+=this.returnValue().toText();
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.sourceAndPositionText=function(){
|
|||
|
|
var S='';
|
|||
|
|
var aF=this.func();
|
|||
|
|
if(aF.resolved()){
|
|||
|
|
var T=aF.script();
|
|||
|
|
if(T){
|
|||
|
|
if(T.name()){
|
|||
|
|
S+=T.name();
|
|||
|
|
}else{
|
|||
|
|
S+='[unnamed]';
|
|||
|
|
}
|
|||
|
|
if(!this.isDebuggerFrame()){
|
|||
|
|
var aG=this.sourceLocation();
|
|||
|
|
S+=' line ';
|
|||
|
|
S+=!(aG===(void 0))?(aG.line+1):'?';
|
|||
|
|
S+=' column ';
|
|||
|
|
S+=!(aG===(void 0))?(aG.column+1):'?';
|
|||
|
|
if(!(this.sourcePosition()===(void 0))){
|
|||
|
|
S+=' (position '+(this.sourcePosition()+1)+')';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
S+='[no source]';
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
S+='[unresolved]';
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.localsText=function(){
|
|||
|
|
var S='';
|
|||
|
|
var aM=this.localCount();
|
|||
|
|
if(aM>0){
|
|||
|
|
for(var N=0;N<aM;++N){
|
|||
|
|
S+=' var ';
|
|||
|
|
S+=this.localName(N);
|
|||
|
|
S+=' = ';
|
|||
|
|
S+=this.localValue(N).toText();
|
|||
|
|
if(N<aM-1)S+='\n';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.restart=function(){
|
|||
|
|
var S=%LiveEditRestartFrame(this.break_id_,this.index_);
|
|||
|
|
if((S===(void 0))){
|
|||
|
|
S="Failed to find requested frame";
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
FrameMirror.prototype.toText=function(aN){
|
|||
|
|
var S='';
|
|||
|
|
S+='#'+(this.index()<=9?'0':'')+this.index();
|
|||
|
|
S+=' ';
|
|||
|
|
S+=this.invocationText();
|
|||
|
|
S+=' ';
|
|||
|
|
S+=this.sourceAndPositionText();
|
|||
|
|
if(aN){
|
|||
|
|
S+='\n';
|
|||
|
|
S+=this.localsText();
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
var aO=0;
|
|||
|
|
var aP=1;
|
|||
|
|
var aQ=2;
|
|||
|
|
var aR=3;
|
|||
|
|
var aS=4;
|
|||
|
|
var aT=5;
|
|||
|
|
function ScopeDetails(aU,aV,V,aW){
|
|||
|
|
if(aU){
|
|||
|
|
this.break_id_=aU.break_id_;
|
|||
|
|
this.details_=aW||
|
|||
|
|
%GetScopeDetails(aU.break_id_,
|
|||
|
|
aU.details_.frameId(),
|
|||
|
|
aU.details_.inlinedFrameIndex(),
|
|||
|
|
V);
|
|||
|
|
this.frame_id_=aU.details_.frameId();
|
|||
|
|
this.inlined_frame_id_=aU.details_.inlinedFrameIndex();
|
|||
|
|
}else{
|
|||
|
|
this.details_=aW||%GetFunctionScopeDetails(aV.value(),V);
|
|||
|
|
this.fun_value_=aV.value();
|
|||
|
|
this.break_id_=(void 0);
|
|||
|
|
}
|
|||
|
|
this.index_=V;
|
|||
|
|
}
|
|||
|
|
ScopeDetails.prototype.type=function(){
|
|||
|
|
if(!(this.break_id_===(void 0))){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
}
|
|||
|
|
return this.details_[aO];
|
|||
|
|
};
|
|||
|
|
ScopeDetails.prototype.object=function(){
|
|||
|
|
if(!(this.break_id_===(void 0))){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
}
|
|||
|
|
return this.details_[aP];
|
|||
|
|
};
|
|||
|
|
ScopeDetails.prototype.name=function(){
|
|||
|
|
if(!(this.break_id_===(void 0))){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
}
|
|||
|
|
return this.details_[aQ];
|
|||
|
|
};
|
|||
|
|
ScopeDetails.prototype.startPosition=function(){
|
|||
|
|
if(!(this.break_id_===(void 0))){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
}
|
|||
|
|
return this.details_[aR];
|
|||
|
|
}
|
|||
|
|
ScopeDetails.prototype.endPosition=function(){
|
|||
|
|
if(!(this.break_id_===(void 0))){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
}
|
|||
|
|
return this.details_[aS];
|
|||
|
|
}
|
|||
|
|
ScopeDetails.prototype.func=function(){
|
|||
|
|
if(!(this.break_id_===(void 0))){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
}
|
|||
|
|
return this.details_[aT];
|
|||
|
|
}
|
|||
|
|
ScopeDetails.prototype.setVariableValueImpl=function(O,aX){
|
|||
|
|
var aY;
|
|||
|
|
if(!(this.break_id_===(void 0))){
|
|||
|
|
%CheckExecutionState(this.break_id_);
|
|||
|
|
aY=%SetScopeVariableValue(this.break_id_,this.frame_id_,
|
|||
|
|
this.inlined_frame_id_,this.index_,O,aX);
|
|||
|
|
}else{
|
|||
|
|
aY=%SetScopeVariableValue(this.fun_value_,null,null,this.index_,
|
|||
|
|
O,aX);
|
|||
|
|
}
|
|||
|
|
if(!aY)throw g(2,"Failed to set variable value");
|
|||
|
|
};
|
|||
|
|
function ScopeMirror(aU,aV,V,aW){
|
|||
|
|
%_Call(Mirror,this,q.SCOPE_TYPE);
|
|||
|
|
if(aU){
|
|||
|
|
this.frame_index_=aU.index_;
|
|||
|
|
}else{
|
|||
|
|
this.frame_index_=(void 0);
|
|||
|
|
}
|
|||
|
|
this.scope_index_=V;
|
|||
|
|
this.details_=new ScopeDetails(aU,aV,V,aW);
|
|||
|
|
}
|
|||
|
|
inherits(ScopeMirror,Mirror);
|
|||
|
|
ScopeMirror.prototype.details=function(){
|
|||
|
|
return this.details_;
|
|||
|
|
};
|
|||
|
|
ScopeMirror.prototype.frameIndex=function(){
|
|||
|
|
return this.frame_index_;
|
|||
|
|
};
|
|||
|
|
ScopeMirror.prototype.scopeIndex=function(){
|
|||
|
|
return this.scope_index_;
|
|||
|
|
};
|
|||
|
|
ScopeMirror.prototype.scopeType=function(){
|
|||
|
|
return this.details_.type();
|
|||
|
|
};
|
|||
|
|
ScopeMirror.prototype.scopeObject=function(){
|
|||
|
|
var I=this.scopeType()==G.Local||
|
|||
|
|
this.scopeType()==G.Closure||
|
|||
|
|
this.scopeType()==G.Script;
|
|||
|
|
return MakeMirror(this.details_.object(),I);
|
|||
|
|
};
|
|||
|
|
ScopeMirror.prototype.setVariableValue=function(O,aX){
|
|||
|
|
this.details_.setVariableValueImpl(O,aX);
|
|||
|
|
};
|
|||
|
|
function ScriptMirror(T){
|
|||
|
|
%_Call(Mirror,this,q.SCRIPT_TYPE);
|
|||
|
|
this.script_=T;
|
|||
|
|
this.context_=new ContextMirror(T.context_data);
|
|||
|
|
this.allocateHandle_();
|
|||
|
|
}
|
|||
|
|
inherits(ScriptMirror,Mirror);
|
|||
|
|
ScriptMirror.prototype.value=function(){
|
|||
|
|
return this.script_;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.name=function(){
|
|||
|
|
return this.script_.name||this.script_.nameOrSourceURL();
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.id=function(){
|
|||
|
|
return this.script_.id;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.source=function(){
|
|||
|
|
return this.script_.source;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.setSource=function(aZ){
|
|||
|
|
%DebugSetScriptSource(this.script_,aZ);
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.lineOffset=function(){
|
|||
|
|
return this.script_.line_offset;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.columnOffset=function(){
|
|||
|
|
return this.script_.column_offset;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.data=function(){
|
|||
|
|
return this.script_.data;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.scriptType=function(){
|
|||
|
|
return this.script_.type;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.compilationType=function(){
|
|||
|
|
return this.script_.compilation_type;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.lineCount=function(){
|
|||
|
|
return %ScriptLineCount(this.script_);
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.locationFromPosition=function(
|
|||
|
|
position,include_resource_offset){
|
|||
|
|
return this.script_.locationFromPosition(position,include_resource_offset);
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.context=function(){
|
|||
|
|
return this.context_;
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.evalFromScript=function(){
|
|||
|
|
return MakeMirror(this.script_.eval_from_script);
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.evalFromFunctionName=function(){
|
|||
|
|
return MakeMirror(this.script_.eval_from_function_name);
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.evalFromLocation=function(){
|
|||
|
|
var ba=this.evalFromScript();
|
|||
|
|
if(!ba.isUndefined()){
|
|||
|
|
var bb=this.script_.eval_from_script_position;
|
|||
|
|
return ba.locationFromPosition(bb,true);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
ScriptMirror.prototype.toText=function(){
|
|||
|
|
var S='';
|
|||
|
|
S+=this.name();
|
|||
|
|
S+=' (lines: ';
|
|||
|
|
if(this.lineOffset()>0){
|
|||
|
|
S+=this.lineOffset();
|
|||
|
|
S+='-';
|
|||
|
|
S+=this.lineOffset()+this.lineCount()-1;
|
|||
|
|
}else{
|
|||
|
|
S+=this.lineCount();
|
|||
|
|
}
|
|||
|
|
S+=')';
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
function ContextMirror(bc){
|
|||
|
|
%_Call(Mirror,this,q.CONTEXT_TYPE);
|
|||
|
|
this.data_=bc;
|
|||
|
|
this.allocateHandle_();
|
|||
|
|
}
|
|||
|
|
inherits(ContextMirror,Mirror);
|
|||
|
|
ContextMirror.prototype.data=function(){
|
|||
|
|
return this.data_;
|
|||
|
|
};
|
|||
|
|
function MakeMirrorSerializer(P,bd){
|
|||
|
|
return new JSONProtocolSerializer(P,bd);
|
|||
|
|
}
|
|||
|
|
function JSONProtocolSerializer(P,bd){
|
|||
|
|
this.details_=P;
|
|||
|
|
this.options_=bd;
|
|||
|
|
this.mirrors_=[];
|
|||
|
|
}
|
|||
|
|
JSONProtocolSerializer.prototype.serializeReference=function(x){
|
|||
|
|
return this.serialize_(x,true,true);
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.serializeValue=function(x){
|
|||
|
|
var be=this.serialize_(x,false,true);
|
|||
|
|
return be;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.serializeReferencedObjects=function(){
|
|||
|
|
var bf=[];
|
|||
|
|
var bg=this.mirrors_.length;
|
|||
|
|
for(var N=0;N<bg;N++){
|
|||
|
|
bf.push(this.serialize_(this.mirrors_[N],false,false));
|
|||
|
|
}
|
|||
|
|
return bf;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.includeSource_=function(){
|
|||
|
|
return this.options_&&this.options_.includeSource;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.inlineRefs_=function(){
|
|||
|
|
return this.options_&&this.options_.inlineRefs;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.maxStringLength_=function(){
|
|||
|
|
if((this.options_===(void 0))||
|
|||
|
|
(this.options_.maxStringLength===(void 0))){
|
|||
|
|
return D;
|
|||
|
|
}
|
|||
|
|
return this.options_.maxStringLength;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.add_=function(x){
|
|||
|
|
for(var N=0;N<this.mirrors_.length;N++){
|
|||
|
|
if(this.mirrors_[N]===x){
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
this.mirrors_.push(x);
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.serializeReferenceWithDisplayData_=
|
|||
|
|
function(x){
|
|||
|
|
var bh={};
|
|||
|
|
bh.ref=x.handle();
|
|||
|
|
bh.type=x.type();
|
|||
|
|
switch(x.type()){
|
|||
|
|
case q.UNDEFINED_TYPE:
|
|||
|
|
case q.NULL_TYPE:
|
|||
|
|
case q.BOOLEAN_TYPE:
|
|||
|
|
case q.NUMBER_TYPE:
|
|||
|
|
bh.value=x.value();
|
|||
|
|
break;
|
|||
|
|
case q.STRING_TYPE:
|
|||
|
|
bh.value=x.getTruncatedValue(this.maxStringLength_());
|
|||
|
|
break;
|
|||
|
|
case q.SYMBOL_TYPE:
|
|||
|
|
bh.description=x.description();
|
|||
|
|
break;
|
|||
|
|
case q.FUNCTION_TYPE:
|
|||
|
|
bh.name=x.name();
|
|||
|
|
bh.inferredName=x.inferredName();
|
|||
|
|
if(x.script()){
|
|||
|
|
bh.scriptId=x.script().id();
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case q.ERROR_TYPE:
|
|||
|
|
case q.REGEXP_TYPE:
|
|||
|
|
bh.value=x.toText();
|
|||
|
|
break;
|
|||
|
|
case q.OBJECT_TYPE:
|
|||
|
|
bh.className=x.className();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
return bh;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.serialize_=function(x,reference,
|
|||
|
|
P){
|
|||
|
|
if(reference&&
|
|||
|
|
(x.isValue()||x.isScript()||x.isContext())){
|
|||
|
|
if(this.inlineRefs_()&&x.isValue()){
|
|||
|
|
return this.serializeReferenceWithDisplayData_(x);
|
|||
|
|
}else{
|
|||
|
|
this.add_(x);
|
|||
|
|
return{'ref':x.handle()};
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bf={};
|
|||
|
|
if(x.isValue()||x.isScript()||x.isContext()){
|
|||
|
|
bf.handle=x.handle();
|
|||
|
|
}
|
|||
|
|
bf.type=x.type();
|
|||
|
|
switch(x.type()){
|
|||
|
|
case q.UNDEFINED_TYPE:
|
|||
|
|
case q.NULL_TYPE:
|
|||
|
|
break;
|
|||
|
|
case q.BOOLEAN_TYPE:
|
|||
|
|
bf.value=x.value();
|
|||
|
|
break;
|
|||
|
|
case q.NUMBER_TYPE:
|
|||
|
|
bf.value=NumberToJSON_(x.value());
|
|||
|
|
break;
|
|||
|
|
case q.STRING_TYPE:
|
|||
|
|
if(this.maxStringLength_()!=-1&&
|
|||
|
|
x.length()>this.maxStringLength_()){
|
|||
|
|
var bi=x.getTruncatedValue(this.maxStringLength_());
|
|||
|
|
bf.value=bi;
|
|||
|
|
bf.fromIndex=0;
|
|||
|
|
bf.toIndex=this.maxStringLength_();
|
|||
|
|
}else{
|
|||
|
|
bf.value=x.value();
|
|||
|
|
}
|
|||
|
|
bf.length=x.length();
|
|||
|
|
break;
|
|||
|
|
case q.SYMBOL_TYPE:
|
|||
|
|
bf.description=x.description();
|
|||
|
|
break;
|
|||
|
|
case q.OBJECT_TYPE:
|
|||
|
|
case q.FUNCTION_TYPE:
|
|||
|
|
case q.ERROR_TYPE:
|
|||
|
|
case q.REGEXP_TYPE:
|
|||
|
|
case q.PROMISE_TYPE:
|
|||
|
|
case q.GENERATOR_TYPE:
|
|||
|
|
this.serializeObject_(x,bf,P);
|
|||
|
|
break;
|
|||
|
|
case q.PROPERTY_TYPE:
|
|||
|
|
case q.INTERNAL_PROPERTY_TYPE:
|
|||
|
|
throw g(2,
|
|||
|
|
'PropertyMirror cannot be serialized independently');
|
|||
|
|
break;
|
|||
|
|
case q.FRAME_TYPE:
|
|||
|
|
this.serializeFrame_(x,bf);
|
|||
|
|
break;
|
|||
|
|
case q.SCOPE_TYPE:
|
|||
|
|
this.serializeScope_(x,bf);
|
|||
|
|
break;
|
|||
|
|
case q.SCRIPT_TYPE:
|
|||
|
|
if(x.name()){
|
|||
|
|
bf.name=x.name();
|
|||
|
|
}
|
|||
|
|
bf.id=x.id();
|
|||
|
|
bf.lineOffset=x.lineOffset();
|
|||
|
|
bf.columnOffset=x.columnOffset();
|
|||
|
|
bf.lineCount=x.lineCount();
|
|||
|
|
if(x.data()){
|
|||
|
|
bf.data=x.data();
|
|||
|
|
}
|
|||
|
|
if(this.includeSource_()){
|
|||
|
|
bf.source=x.source();
|
|||
|
|
}else{
|
|||
|
|
var bj=x.source().substring(0,80);
|
|||
|
|
bf.sourceStart=bj;
|
|||
|
|
}
|
|||
|
|
bf.sourceLength=x.source().length;
|
|||
|
|
bf.scriptType=x.scriptType();
|
|||
|
|
bf.compilationType=x.compilationType();
|
|||
|
|
if(x.compilationType()==1&&
|
|||
|
|
x.evalFromScript()){
|
|||
|
|
bf.evalFromScript=
|
|||
|
|
this.serializeReference(x.evalFromScript());
|
|||
|
|
var bk=x.evalFromLocation();
|
|||
|
|
if(bk){
|
|||
|
|
bf.evalFromLocation={line:bk.line,
|
|||
|
|
column:bk.column};
|
|||
|
|
}
|
|||
|
|
if(x.evalFromFunctionName()){
|
|||
|
|
bf.evalFromFunctionName=x.evalFromFunctionName();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(x.context()){
|
|||
|
|
bf.context=this.serializeReference(x.context());
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case q.CONTEXT_TYPE:
|
|||
|
|
bf.data=x.data();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
bf.text=x.toText();
|
|||
|
|
return bf;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.serializeObject_=function(x,bf,
|
|||
|
|
P){
|
|||
|
|
bf.className=x.className();
|
|||
|
|
bf.constructorFunction=
|
|||
|
|
this.serializeReference(x.constructorFunction());
|
|||
|
|
bf.protoObject=this.serializeReference(x.protoObject());
|
|||
|
|
bf.prototypeObject=this.serializeReference(x.prototypeObject());
|
|||
|
|
if(x.hasNamedInterceptor()){
|
|||
|
|
bf.namedInterceptor=true;
|
|||
|
|
}
|
|||
|
|
if(x.hasIndexedInterceptor()){
|
|||
|
|
bf.indexedInterceptor=true;
|
|||
|
|
}
|
|||
|
|
if(x.isFunction()){
|
|||
|
|
bf.name=x.name();
|
|||
|
|
if(!(x.inferredName()===(void 0))){
|
|||
|
|
bf.inferredName=x.inferredName();
|
|||
|
|
}
|
|||
|
|
bf.resolved=x.resolved();
|
|||
|
|
if(x.resolved()){
|
|||
|
|
bf.source=x.source();
|
|||
|
|
}
|
|||
|
|
if(x.script()){
|
|||
|
|
bf.script=this.serializeReference(x.script());
|
|||
|
|
bf.scriptId=x.script().id();
|
|||
|
|
serializeLocationFields(x.sourceLocation(),bf);
|
|||
|
|
}
|
|||
|
|
bf.scopes=[];
|
|||
|
|
for(var N=0;N<x.scopeCount();N++){
|
|||
|
|
var bl=x.scope(N);
|
|||
|
|
bf.scopes.push({
|
|||
|
|
type:bl.scopeType(),
|
|||
|
|
index:N
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(x.isGenerator()){
|
|||
|
|
bf.status=x.status();
|
|||
|
|
bf.func=this.serializeReference(x.func())
|
|||
|
|
bf.receiver=this.serializeReference(x.receiver())
|
|||
|
|
serializeLocationFields(x.sourceLocation(),bf);
|
|||
|
|
}
|
|||
|
|
if(x.isDate()){
|
|||
|
|
bf.value=x.value();
|
|||
|
|
}
|
|||
|
|
if(x.isPromise()){
|
|||
|
|
bf.status=x.status();
|
|||
|
|
bf.promiseValue=this.serializeReference(x.promiseValue());
|
|||
|
|
}
|
|||
|
|
var M=x.propertyNames();
|
|||
|
|
for(var N=0;N<M.length;N++){
|
|||
|
|
var bm=x.property(M[N]);
|
|||
|
|
M[N]=this.serializeProperty_(bm);
|
|||
|
|
if(P){
|
|||
|
|
this.add_(bm.value());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
bf.properties=M;
|
|||
|
|
var bn=x.internalProperties();
|
|||
|
|
if(bn.length>0){
|
|||
|
|
var bo=[];
|
|||
|
|
for(var N=0;N<bn.length;N++){
|
|||
|
|
bo.push(this.serializeInternalProperty_(bn[N]));
|
|||
|
|
}
|
|||
|
|
bf.internalProperties=bo;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
function serializeLocationFields(aG,bf){
|
|||
|
|
if(!aG){
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
bf.position=aG.position;
|
|||
|
|
var bp=aG.line;
|
|||
|
|
if(!(bp===(void 0))){
|
|||
|
|
bf.line=bp;
|
|||
|
|
}
|
|||
|
|
var bq=aG.column;
|
|||
|
|
if(!(bq===(void 0))){
|
|||
|
|
bf.column=bq;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
JSONProtocolSerializer.prototype.serializeProperty_=function(bm){
|
|||
|
|
var S={};
|
|||
|
|
S.name=bm.name();
|
|||
|
|
var br=bm.value();
|
|||
|
|
if(this.inlineRefs_()&&br.isValue()){
|
|||
|
|
S.value=this.serializeReferenceWithDisplayData_(br);
|
|||
|
|
}else{
|
|||
|
|
if(bm.attributes()!=F.None){
|
|||
|
|
S.attributes=bm.attributes();
|
|||
|
|
}
|
|||
|
|
S.propertyType=bm.propertyType();
|
|||
|
|
S.ref=br.handle();
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.serializeInternalProperty_=
|
|||
|
|
function(bm){
|
|||
|
|
var S={};
|
|||
|
|
S.name=bm.name();
|
|||
|
|
var br=bm.value();
|
|||
|
|
if(this.inlineRefs_()&&br.isValue()){
|
|||
|
|
S.value=this.serializeReferenceWithDisplayData_(br);
|
|||
|
|
}else{
|
|||
|
|
S.ref=br.handle();
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.serializeFrame_=function(x,bf){
|
|||
|
|
bf.index=x.index();
|
|||
|
|
bf.receiver=this.serializeReference(x.receiver());
|
|||
|
|
var aF=x.func();
|
|||
|
|
bf.func=this.serializeReference(aF);
|
|||
|
|
var T=aF.script();
|
|||
|
|
if(T){
|
|||
|
|
bf.script=this.serializeReference(T);
|
|||
|
|
}
|
|||
|
|
bf.constructCall=x.isConstructCall();
|
|||
|
|
bf.atReturn=x.isAtReturn();
|
|||
|
|
if(x.isAtReturn()){
|
|||
|
|
bf.returnValue=this.serializeReference(x.returnValue());
|
|||
|
|
}
|
|||
|
|
bf.debuggerFrame=x.isDebuggerFrame();
|
|||
|
|
var K=new d(x.argumentCount());
|
|||
|
|
for(var N=0;N<x.argumentCount();N++){
|
|||
|
|
var bs={};
|
|||
|
|
var bt=x.argumentName(N);
|
|||
|
|
if(bt){
|
|||
|
|
bs.name=bt;
|
|||
|
|
}
|
|||
|
|
bs.value=this.serializeReference(x.argumentValue(N));
|
|||
|
|
K[N]=bs;
|
|||
|
|
}
|
|||
|
|
bf.arguments=K;
|
|||
|
|
var K=new d(x.localCount());
|
|||
|
|
for(var N=0;N<x.localCount();N++){
|
|||
|
|
var bu={};
|
|||
|
|
bu.name=x.localName(N);
|
|||
|
|
bu.value=this.serializeReference(x.localValue(N));
|
|||
|
|
K[N]=bu;
|
|||
|
|
}
|
|||
|
|
bf.locals=K;
|
|||
|
|
serializeLocationFields(x.sourceLocation(),bf);
|
|||
|
|
var bv=x.sourceLineText();
|
|||
|
|
if(!(bv===(void 0))){
|
|||
|
|
bf.sourceLineText=bv;
|
|||
|
|
}
|
|||
|
|
bf.scopes=[];
|
|||
|
|
for(var N=0;N<x.scopeCount();N++){
|
|||
|
|
var bl=x.scope(N);
|
|||
|
|
bf.scopes.push({
|
|||
|
|
type:bl.scopeType(),
|
|||
|
|
index:N
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
JSONProtocolSerializer.prototype.serializeScope_=function(x,bf){
|
|||
|
|
bf.index=x.scopeIndex();
|
|||
|
|
bf.frameIndex=x.frameIndex();
|
|||
|
|
bf.type=x.scopeType();
|
|||
|
|
bf.object=this.inlineRefs_()?
|
|||
|
|
this.serializeValue(x.scopeObject()):
|
|||
|
|
this.serializeReference(x.scopeObject());
|
|||
|
|
};
|
|||
|
|
function NumberToJSON_(v){
|
|||
|
|
if(e(v)){
|
|||
|
|
return'NaN';
|
|||
|
|
}
|
|||
|
|
if(!(%_IsSmi(%IS_VAR(v))||((v==v)&&(v!=1/0)&&(v!=-1/0)))){
|
|||
|
|
if(v>0){
|
|||
|
|
return'Infinity';
|
|||
|
|
}else{
|
|||
|
|
return'-Infinity';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return v;
|
|||
|
|
}
|
|||
|
|
b.InstallFunctions(a,2,[
|
|||
|
|
"MakeMirror",MakeMirror,
|
|||
|
|
"MakeMirrorSerializer",MakeMirrorSerializer,
|
|||
|
|
"LookupMirror",LookupMirror,
|
|||
|
|
"ToggleMirrorCache",ToggleMirrorCache,
|
|||
|
|
"MirrorCacheIsEmpty",MirrorCacheIsEmpty,
|
|||
|
|
]);
|
|||
|
|
b.InstallConstants(a,[
|
|||
|
|
"ScopeType",G,
|
|||
|
|
"PropertyType",E,
|
|||
|
|
"PropertyAttribute",F,
|
|||
|
|
"Mirror",Mirror,
|
|||
|
|
"ValueMirror",ValueMirror,
|
|||
|
|
"UndefinedMirror",UndefinedMirror,
|
|||
|
|
"NullMirror",NullMirror,
|
|||
|
|
"BooleanMirror",BooleanMirror,
|
|||
|
|
"NumberMirror",NumberMirror,
|
|||
|
|
"StringMirror",StringMirror,
|
|||
|
|
"SymbolMirror",SymbolMirror,
|
|||
|
|
"ObjectMirror",ObjectMirror,
|
|||
|
|
"FunctionMirror",FunctionMirror,
|
|||
|
|
"UnresolvedFunctionMirror",UnresolvedFunctionMirror,
|
|||
|
|
"ArrayMirror",ArrayMirror,
|
|||
|
|
"DateMirror",DateMirror,
|
|||
|
|
"RegExpMirror",RegExpMirror,
|
|||
|
|
"ErrorMirror",ErrorMirror,
|
|||
|
|
"PromiseMirror",PromiseMirror,
|
|||
|
|
"MapMirror",MapMirror,
|
|||
|
|
"SetMirror",SetMirror,
|
|||
|
|
"IteratorMirror",IteratorMirror,
|
|||
|
|
"GeneratorMirror",GeneratorMirror,
|
|||
|
|
"PropertyMirror",PropertyMirror,
|
|||
|
|
"InternalPropertyMirror",InternalPropertyMirror,
|
|||
|
|
"FrameMirror",FrameMirror,
|
|||
|
|
"ScriptMirror",ScriptMirror,
|
|||
|
|
"ScopeMirror",ScopeMirror,
|
|||
|
|
"FrameDetails",FrameDetails,
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(b,2,[
|
|||
|
|
"ClearMirrorCache",ClearMirrorCache
|
|||
|
|
]);
|
|||
|
|
b.Export(function(bw){
|
|||
|
|
bw.MirrorType=q;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
debug.b
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
var c=a.FrameMirror;
|
|||
|
|
var d=a.Array;
|
|||
|
|
var e=a.RegExp;
|
|||
|
|
var f=a.isNaN;
|
|||
|
|
var g=a.JSON.parse;
|
|||
|
|
var h=a.JSON.stringify;
|
|||
|
|
var i=a.LookupMirror;
|
|||
|
|
var j;
|
|||
|
|
var k;
|
|||
|
|
var l=a.MakeMirror;
|
|||
|
|
var m=a.MakeMirrorSerializer;
|
|||
|
|
var n=a.Math.min;
|
|||
|
|
var o=a.Mirror;
|
|||
|
|
var p;
|
|||
|
|
var q=a.parseInt;
|
|||
|
|
var r=a.ValueMirror;
|
|||
|
|
b.Import(function(s){
|
|||
|
|
j=s.MakeError;
|
|||
|
|
k=s.MakeTypeError;
|
|||
|
|
p=s.MirrorType;
|
|||
|
|
});
|
|||
|
|
var t=10;
|
|||
|
|
var u={};
|
|||
|
|
var v=/^(?:\s*(?:\/\*.*?\*\/)*)*/;
|
|||
|
|
u.DebugEvent={Break:1,
|
|||
|
|
Exception:2,
|
|||
|
|
NewFunction:3,
|
|||
|
|
BeforeCompile:4,
|
|||
|
|
AfterCompile:5,
|
|||
|
|
CompileError:6,
|
|||
|
|
AsyncTaskEvent:7};
|
|||
|
|
u.ExceptionBreak={Caught:0,
|
|||
|
|
Uncaught:1};
|
|||
|
|
u.StepAction={StepOut:0,
|
|||
|
|
StepNext:1,
|
|||
|
|
StepIn:2,
|
|||
|
|
StepFrame:3};
|
|||
|
|
u.ScriptType={Native:0,
|
|||
|
|
Extension:1,
|
|||
|
|
Normal:2};
|
|||
|
|
u.ScriptCompilationType={Host:0,
|
|||
|
|
Eval:1,
|
|||
|
|
JSON:2};
|
|||
|
|
u.ScriptBreakPointType={ScriptId:0,
|
|||
|
|
ScriptName:1,
|
|||
|
|
ScriptRegExp:2};
|
|||
|
|
u.BreakPositionAlignment={
|
|||
|
|
Statement:0,
|
|||
|
|
BreakPosition:1
|
|||
|
|
};
|
|||
|
|
function ScriptTypeFlag(w){
|
|||
|
|
return(1<<w);
|
|||
|
|
}
|
|||
|
|
var x=0;
|
|||
|
|
var y=1;
|
|||
|
|
var z=[];
|
|||
|
|
var A=[];
|
|||
|
|
var B={
|
|||
|
|
breakPointsActive:{
|
|||
|
|
value:true,
|
|||
|
|
getValue:function(){return this.value;},
|
|||
|
|
setValue:function(C){
|
|||
|
|
this.value=!!C;
|
|||
|
|
%SetBreakPointsActive(this.value);
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
breakOnCaughtException:{
|
|||
|
|
getValue:function(){return u.isBreakOnException();},
|
|||
|
|
setValue:function(C){
|
|||
|
|
if(C){
|
|||
|
|
u.setBreakOnException();
|
|||
|
|
}else{
|
|||
|
|
u.clearBreakOnException();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
breakOnUncaughtException:{
|
|||
|
|
getValue:function(){return u.isBreakOnUncaughtException();},
|
|||
|
|
setValue:function(C){
|
|||
|
|
if(C){
|
|||
|
|
u.setBreakOnUncaughtException();
|
|||
|
|
}else{
|
|||
|
|
u.clearBreakOnUncaughtException();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
function MakeBreakPoint(D,E){
|
|||
|
|
var F=new BreakPoint(D,E);
|
|||
|
|
z.push(F);
|
|||
|
|
return F;
|
|||
|
|
}
|
|||
|
|
function BreakPoint(D,E){
|
|||
|
|
this.source_position_=D;
|
|||
|
|
if(E){
|
|||
|
|
this.script_break_point_=E;
|
|||
|
|
}else{
|
|||
|
|
this.number_=y++;
|
|||
|
|
}
|
|||
|
|
this.active_=true;
|
|||
|
|
this.condition_=null;
|
|||
|
|
}
|
|||
|
|
BreakPoint.prototype.number=function(){
|
|||
|
|
return this.number_;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.func=function(){
|
|||
|
|
return this.func_;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.source_position=function(){
|
|||
|
|
return this.source_position_;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.active=function(){
|
|||
|
|
if(this.script_break_point()){
|
|||
|
|
return this.script_break_point().active();
|
|||
|
|
}
|
|||
|
|
return this.active_;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.condition=function(){
|
|||
|
|
if(this.script_break_point()&&this.script_break_point().condition()){
|
|||
|
|
return this.script_break_point().condition();
|
|||
|
|
}
|
|||
|
|
return this.condition_;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.script_break_point=function(){
|
|||
|
|
return this.script_break_point_;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.enable=function(){
|
|||
|
|
this.active_=true;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.disable=function(){
|
|||
|
|
this.active_=false;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.setCondition=function(G){
|
|||
|
|
this.condition_=G;
|
|||
|
|
};
|
|||
|
|
BreakPoint.prototype.isTriggered=function(H){
|
|||
|
|
if(!this.active())return false;
|
|||
|
|
if(this.condition()){
|
|||
|
|
try{
|
|||
|
|
var I=H.frame(0).evaluate(this.condition());
|
|||
|
|
if(!(I instanceof r)||!I.value_){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}catch(e){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
};
|
|||
|
|
function IsBreakPointTriggered(J,F){
|
|||
|
|
return F.isTriggered(MakeExecutionState(J));
|
|||
|
|
}
|
|||
|
|
function ScriptBreakPoint(w,script_id_or_name,opt_line,opt_column,
|
|||
|
|
opt_groupId,opt_position_alignment){
|
|||
|
|
this.type_=w;
|
|||
|
|
if(w==u.ScriptBreakPointType.ScriptId){
|
|||
|
|
this.script_id_=script_id_or_name;
|
|||
|
|
}else if(w==u.ScriptBreakPointType.ScriptName){
|
|||
|
|
this.script_name_=script_id_or_name;
|
|||
|
|
}else if(w==u.ScriptBreakPointType.ScriptRegExp){
|
|||
|
|
this.script_regexp_object_=new e(script_id_or_name);
|
|||
|
|
}else{
|
|||
|
|
throw j(2,"Unexpected breakpoint type "+w);
|
|||
|
|
}
|
|||
|
|
this.line_=opt_line||0;
|
|||
|
|
this.column_=opt_column;
|
|||
|
|
this.groupId_=opt_groupId;
|
|||
|
|
this.position_alignment_=(opt_position_alignment===(void 0))
|
|||
|
|
?u.BreakPositionAlignment.Statement:opt_position_alignment;
|
|||
|
|
this.active_=true;
|
|||
|
|
this.condition_=null;
|
|||
|
|
this.break_points_=[];
|
|||
|
|
}
|
|||
|
|
ScriptBreakPoint.prototype.cloneForOtherScript=function(K){
|
|||
|
|
var L=new ScriptBreakPoint(u.ScriptBreakPointType.ScriptId,
|
|||
|
|
K.id,this.line_,this.column_,this.groupId_,
|
|||
|
|
this.position_alignment_);
|
|||
|
|
L.number_=y++;
|
|||
|
|
A.push(L);
|
|||
|
|
L.active_=this.active_;
|
|||
|
|
L.condition_=this.condition_;
|
|||
|
|
return L;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.number=function(){
|
|||
|
|
return this.number_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.groupId=function(){
|
|||
|
|
return this.groupId_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.type=function(){
|
|||
|
|
return this.type_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.script_id=function(){
|
|||
|
|
return this.script_id_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.script_name=function(){
|
|||
|
|
return this.script_name_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.script_regexp_object=function(){
|
|||
|
|
return this.script_regexp_object_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.line=function(){
|
|||
|
|
return this.line_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.column=function(){
|
|||
|
|
return this.column_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.actual_locations=function(){
|
|||
|
|
var M=[];
|
|||
|
|
for(var N=0;N<this.break_points_.length;N++){
|
|||
|
|
M.push(this.break_points_[N].actual_location);
|
|||
|
|
}
|
|||
|
|
return M;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.update_positions=function(O,P){
|
|||
|
|
this.line_=O;
|
|||
|
|
this.column_=P;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.active=function(){
|
|||
|
|
return this.active_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.condition=function(){
|
|||
|
|
return this.condition_;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.enable=function(){
|
|||
|
|
this.active_=true;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.disable=function(){
|
|||
|
|
this.active_=false;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.setCondition=function(G){
|
|||
|
|
this.condition_=G;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.matchesScript=function(Q){
|
|||
|
|
if(this.type_==u.ScriptBreakPointType.ScriptId){
|
|||
|
|
return this.script_id_==Q.id;
|
|||
|
|
}else{
|
|||
|
|
if(!(Q.line_offset<=this.line_&&
|
|||
|
|
this.line_<Q.line_offset+%ScriptLineCount(Q))){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if(this.type_==u.ScriptBreakPointType.ScriptName){
|
|||
|
|
return this.script_name_==Q.nameOrSourceURL();
|
|||
|
|
}else if(this.type_==u.ScriptBreakPointType.ScriptRegExp){
|
|||
|
|
return this.script_regexp_object_.test(Q.nameOrSourceURL());
|
|||
|
|
}else{
|
|||
|
|
throw j(2,"Unexpected breakpoint type "+this.type_);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.set=function(Q){
|
|||
|
|
var P=this.column();
|
|||
|
|
var O=this.line();
|
|||
|
|
if((P===(void 0))){
|
|||
|
|
var R=%ScriptSourceLine(Q,O||Q.line_offset);
|
|||
|
|
if(!Q.sourceColumnStart_){
|
|||
|
|
Q.sourceColumnStart_=new d(%ScriptLineCount(Q));
|
|||
|
|
}
|
|||
|
|
if((Q.sourceColumnStart_[O]===(void 0))){
|
|||
|
|
Q.sourceColumnStart_[O]=
|
|||
|
|
R.match(v)[0].length;
|
|||
|
|
}
|
|||
|
|
P=Q.sourceColumnStart_[O];
|
|||
|
|
}
|
|||
|
|
var S=u.findScriptSourcePosition(Q,this.line(),P);
|
|||
|
|
if((S===null))return;
|
|||
|
|
var F=MakeBreakPoint(S,this);
|
|||
|
|
var T=%SetScriptBreakPoint(Q,S,
|
|||
|
|
this.position_alignment_,
|
|||
|
|
F);
|
|||
|
|
if((T===(void 0))){
|
|||
|
|
T=S;
|
|||
|
|
}
|
|||
|
|
var U=Q.locationFromPosition(T,true);
|
|||
|
|
F.actual_location={line:U.line,
|
|||
|
|
column:U.column,
|
|||
|
|
script_id:Q.id};
|
|||
|
|
this.break_points_.push(F);
|
|||
|
|
return F;
|
|||
|
|
};
|
|||
|
|
ScriptBreakPoint.prototype.clear=function(){
|
|||
|
|
var V=[];
|
|||
|
|
for(var N=0;N<z.length;N++){
|
|||
|
|
if(z[N].script_break_point()&&
|
|||
|
|
z[N].script_break_point()===this){
|
|||
|
|
%ClearBreakPoint(z[N]);
|
|||
|
|
}else{
|
|||
|
|
V.push(z[N]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
z=V;
|
|||
|
|
this.break_points_=[];
|
|||
|
|
};
|
|||
|
|
function UpdateScriptBreakPoints(Q){
|
|||
|
|
for(var N=0;N<A.length;N++){
|
|||
|
|
var F=A[N];
|
|||
|
|
if((F.type()==u.ScriptBreakPointType.ScriptName||
|
|||
|
|
F.type()==u.ScriptBreakPointType.ScriptRegExp)&&
|
|||
|
|
F.matchesScript(Q)){
|
|||
|
|
F.set(Q);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function GetScriptBreakPoints(Q){
|
|||
|
|
var W=[];
|
|||
|
|
for(var N=0;N<A.length;N++){
|
|||
|
|
if(A[N].matchesScript(Q)){
|
|||
|
|
W.push(A[N]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return W;
|
|||
|
|
}
|
|||
|
|
u.setListener=function(X,Y){
|
|||
|
|
if(!(%IsFunction(X))&&!(X===(void 0))&&!(X===null)){
|
|||
|
|
throw k(33);
|
|||
|
|
}
|
|||
|
|
%SetDebugEventListener(X,Y);
|
|||
|
|
};
|
|||
|
|
u.breakLocations=function(Z,aa){
|
|||
|
|
if(!(%IsFunction(Z)))throw k(33);
|
|||
|
|
var ab=(aa===(void 0))
|
|||
|
|
?u.BreakPositionAlignment.Statement:aa;
|
|||
|
|
return %GetBreakLocations(Z,ab);
|
|||
|
|
};
|
|||
|
|
u.findScript=function(ac){
|
|||
|
|
if((%IsFunction(ac))){
|
|||
|
|
return %FunctionGetScript(ac);
|
|||
|
|
}else if((%_IsRegExp(ac))){
|
|||
|
|
var ad=u.scripts();
|
|||
|
|
var ae=null;
|
|||
|
|
var af=0;
|
|||
|
|
for(var N in ad){
|
|||
|
|
var Q=ad[N];
|
|||
|
|
if(ac.test(Q.name)){
|
|||
|
|
ae=Q;
|
|||
|
|
af++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(af==1){
|
|||
|
|
return ae;
|
|||
|
|
}else{
|
|||
|
|
return(void 0);
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
return %GetScript(ac);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
u.scriptSource=function(ac){
|
|||
|
|
return this.findScript(ac).source;
|
|||
|
|
};
|
|||
|
|
u.source=function(Z){
|
|||
|
|
if(!(%IsFunction(Z)))throw k(33);
|
|||
|
|
return %FunctionGetSourceCode(Z);
|
|||
|
|
};
|
|||
|
|
u.sourcePosition=function(Z){
|
|||
|
|
if(!(%IsFunction(Z)))throw k(33);
|
|||
|
|
return %FunctionGetScriptSourcePosition(Z);
|
|||
|
|
};
|
|||
|
|
u.findFunctionSourceLocation=function(ag,ah,ai){
|
|||
|
|
var Q=%FunctionGetScript(ag);
|
|||
|
|
var aj=%FunctionGetScriptSourcePosition(ag);
|
|||
|
|
return %ScriptLocationFromLine(Q,ah,ai,aj);
|
|||
|
|
};
|
|||
|
|
u.findScriptSourcePosition=function(Q,ah,ai){
|
|||
|
|
var ak=%ScriptLocationFromLine(Q,ah,ai,0);
|
|||
|
|
return ak?ak.position:null;
|
|||
|
|
};
|
|||
|
|
u.findBreakPoint=function(al,am){
|
|||
|
|
var F;
|
|||
|
|
for(var N=0;N<z.length;N++){
|
|||
|
|
if(z[N].number()==al){
|
|||
|
|
F=z[N];
|
|||
|
|
if(am){
|
|||
|
|
z.splice(N,1);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(F){
|
|||
|
|
return F;
|
|||
|
|
}else{
|
|||
|
|
return this.findScriptBreakPoint(al,am);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
u.findBreakPointActualLocations=function(al){
|
|||
|
|
for(var N=0;N<A.length;N++){
|
|||
|
|
if(A[N].number()==al){
|
|||
|
|
return A[N].actual_locations();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for(var N=0;N<z.length;N++){
|
|||
|
|
if(z[N].number()==al){
|
|||
|
|
return[z[N].actual_location];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return[];
|
|||
|
|
};
|
|||
|
|
u.setBreakPoint=function(ag,ah,ai,an){
|
|||
|
|
if(!(%IsFunction(ag)))throw k(33);
|
|||
|
|
if(%FunctionIsAPIFunction(ag)){
|
|||
|
|
throw j(2,'Cannot set break point in native code.');
|
|||
|
|
}
|
|||
|
|
var ao=
|
|||
|
|
this.findFunctionSourceLocation(ag,ah,ai).position;
|
|||
|
|
var D=ao-this.sourcePosition(ag);
|
|||
|
|
var Q=%FunctionGetScript(ag);
|
|||
|
|
if(Q.type==u.ScriptType.Native){
|
|||
|
|
throw j(2,'Cannot set break point in native code.');
|
|||
|
|
}
|
|||
|
|
if(Q&&Q.id){
|
|||
|
|
D+=%FunctionGetScriptSourcePosition(ag);
|
|||
|
|
var ak=Q.locationFromPosition(D,false);
|
|||
|
|
return this.setScriptBreakPointById(Q.id,
|
|||
|
|
ak.line,ak.column,
|
|||
|
|
an);
|
|||
|
|
}else{
|
|||
|
|
var F=MakeBreakPoint(D);
|
|||
|
|
var T=
|
|||
|
|
%SetFunctionBreakPoint(ag,D,F);
|
|||
|
|
T+=this.sourcePosition(ag);
|
|||
|
|
var U=Q.locationFromPosition(T,true);
|
|||
|
|
F.actual_location={line:U.line,
|
|||
|
|
column:U.column,
|
|||
|
|
script_id:Q.id};
|
|||
|
|
F.setCondition(an);
|
|||
|
|
return F.number();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
u.setBreakPointByScriptIdAndPosition=function(script_id,S,
|
|||
|
|
G,enabled,
|
|||
|
|
opt_position_alignment)
|
|||
|
|
{
|
|||
|
|
var F=MakeBreakPoint(S);
|
|||
|
|
F.setCondition(G);
|
|||
|
|
if(!enabled){
|
|||
|
|
F.disable();
|
|||
|
|
}
|
|||
|
|
var ad=this.scripts();
|
|||
|
|
var ap=(opt_position_alignment===(void 0))
|
|||
|
|
?u.BreakPositionAlignment.Statement:opt_position_alignment;
|
|||
|
|
for(var N=0;N<ad.length;N++){
|
|||
|
|
if(script_id==ad[N].id){
|
|||
|
|
F.actual_position=%SetScriptBreakPoint(ad[N],S,
|
|||
|
|
ap,F);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return F;
|
|||
|
|
};
|
|||
|
|
u.enableBreakPoint=function(al){
|
|||
|
|
var F=this.findBreakPoint(al,false);
|
|||
|
|
if(F){
|
|||
|
|
F.enable();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
u.disableBreakPoint=function(al){
|
|||
|
|
var F=this.findBreakPoint(al,false);
|
|||
|
|
if(F){
|
|||
|
|
F.disable();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
u.changeBreakPointCondition=function(al,G){
|
|||
|
|
var F=this.findBreakPoint(al,false);
|
|||
|
|
F.setCondition(G);
|
|||
|
|
};
|
|||
|
|
u.clearBreakPoint=function(al){
|
|||
|
|
var F=this.findBreakPoint(al,true);
|
|||
|
|
if(F){
|
|||
|
|
return %ClearBreakPoint(F);
|
|||
|
|
}else{
|
|||
|
|
F=this.findScriptBreakPoint(al,true);
|
|||
|
|
if(!F)throw j(2,'Invalid breakpoint');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
u.clearAllBreakPoints=function(){
|
|||
|
|
for(var N=0;N<z.length;N++){
|
|||
|
|
var F=z[N];
|
|||
|
|
%ClearBreakPoint(F);
|
|||
|
|
}
|
|||
|
|
z=[];
|
|||
|
|
};
|
|||
|
|
u.disableAllBreakPoints=function(){
|
|||
|
|
for(var N=1;N<y;N++){
|
|||
|
|
u.disableBreakPoint(N);
|
|||
|
|
}
|
|||
|
|
%ChangeBreakOnException(u.ExceptionBreak.Caught,false);
|
|||
|
|
%ChangeBreakOnException(u.ExceptionBreak.Uncaught,false);
|
|||
|
|
};
|
|||
|
|
u.findScriptBreakPoint=function(al,am){
|
|||
|
|
var aq;
|
|||
|
|
for(var N=0;N<A.length;N++){
|
|||
|
|
if(A[N].number()==al){
|
|||
|
|
aq=A[N];
|
|||
|
|
if(am){
|
|||
|
|
aq.clear();
|
|||
|
|
A.splice(N,1);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return aq;
|
|||
|
|
};
|
|||
|
|
u.setScriptBreakPoint=function(w,script_id_or_name,
|
|||
|
|
ah,ai,an,
|
|||
|
|
opt_groupId,opt_position_alignment){
|
|||
|
|
var aq=
|
|||
|
|
new ScriptBreakPoint(w,script_id_or_name,ah,ai,
|
|||
|
|
opt_groupId,opt_position_alignment);
|
|||
|
|
aq.number_=y++;
|
|||
|
|
aq.setCondition(an);
|
|||
|
|
A.push(aq);
|
|||
|
|
var ad=this.scripts();
|
|||
|
|
for(var N=0;N<ad.length;N++){
|
|||
|
|
if(aq.matchesScript(ad[N])){
|
|||
|
|
aq.set(ad[N]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return aq.number();
|
|||
|
|
};
|
|||
|
|
u.setScriptBreakPointById=function(script_id,
|
|||
|
|
ah,ai,
|
|||
|
|
an,opt_groupId,
|
|||
|
|
opt_position_alignment){
|
|||
|
|
return this.setScriptBreakPoint(u.ScriptBreakPointType.ScriptId,
|
|||
|
|
script_id,ah,ai,
|
|||
|
|
an,opt_groupId,
|
|||
|
|
opt_position_alignment);
|
|||
|
|
};
|
|||
|
|
u.setScriptBreakPointByName=function(script_name,
|
|||
|
|
ah,ai,
|
|||
|
|
an,opt_groupId){
|
|||
|
|
return this.setScriptBreakPoint(u.ScriptBreakPointType.ScriptName,
|
|||
|
|
script_name,ah,ai,
|
|||
|
|
an,opt_groupId);
|
|||
|
|
};
|
|||
|
|
u.setScriptBreakPointByRegExp=function(script_regexp,
|
|||
|
|
ah,ai,
|
|||
|
|
an,opt_groupId){
|
|||
|
|
return this.setScriptBreakPoint(u.ScriptBreakPointType.ScriptRegExp,
|
|||
|
|
script_regexp,ah,ai,
|
|||
|
|
an,opt_groupId);
|
|||
|
|
};
|
|||
|
|
u.enableScriptBreakPoint=function(al){
|
|||
|
|
var aq=this.findScriptBreakPoint(al,false);
|
|||
|
|
aq.enable();
|
|||
|
|
};
|
|||
|
|
u.disableScriptBreakPoint=function(al){
|
|||
|
|
var aq=this.findScriptBreakPoint(al,false);
|
|||
|
|
aq.disable();
|
|||
|
|
};
|
|||
|
|
u.changeScriptBreakPointCondition=function(
|
|||
|
|
al,G){
|
|||
|
|
var aq=this.findScriptBreakPoint(al,false);
|
|||
|
|
aq.setCondition(G);
|
|||
|
|
};
|
|||
|
|
u.scriptBreakPoints=function(){
|
|||
|
|
return A;
|
|||
|
|
};
|
|||
|
|
u.clearStepping=function(){
|
|||
|
|
%ClearStepping();
|
|||
|
|
};
|
|||
|
|
u.setBreakOnException=function(){
|
|||
|
|
return %ChangeBreakOnException(u.ExceptionBreak.Caught,true);
|
|||
|
|
};
|
|||
|
|
u.clearBreakOnException=function(){
|
|||
|
|
return %ChangeBreakOnException(u.ExceptionBreak.Caught,false);
|
|||
|
|
};
|
|||
|
|
u.isBreakOnException=function(){
|
|||
|
|
return!!%IsBreakOnException(u.ExceptionBreak.Caught);
|
|||
|
|
};
|
|||
|
|
u.setBreakOnUncaughtException=function(){
|
|||
|
|
return %ChangeBreakOnException(u.ExceptionBreak.Uncaught,true);
|
|||
|
|
};
|
|||
|
|
u.clearBreakOnUncaughtException=function(){
|
|||
|
|
return %ChangeBreakOnException(u.ExceptionBreak.Uncaught,false);
|
|||
|
|
};
|
|||
|
|
u.isBreakOnUncaughtException=function(){
|
|||
|
|
return!!%IsBreakOnException(u.ExceptionBreak.Uncaught);
|
|||
|
|
};
|
|||
|
|
u.showBreakPoints=function(Z,ar,as){
|
|||
|
|
if(!(%IsFunction(Z)))throw j(33);
|
|||
|
|
var at=ar?this.scriptSource(Z):this.source(Z);
|
|||
|
|
var au=ar?this.sourcePosition(Z):0;
|
|||
|
|
var M=this.breakLocations(Z,as);
|
|||
|
|
if(!M)return at;
|
|||
|
|
M.sort(function(av,aw){return av-aw;});
|
|||
|
|
var W="";
|
|||
|
|
var ax=0;
|
|||
|
|
var ay;
|
|||
|
|
for(var N=0;N<M.length;N++){
|
|||
|
|
ay=M[N]-au;
|
|||
|
|
W+=at.slice(ax,ay);
|
|||
|
|
W+="[B"+N+"]";
|
|||
|
|
ax=ay;
|
|||
|
|
}
|
|||
|
|
ay=at.length;
|
|||
|
|
W+=at.substring(ax,ay);
|
|||
|
|
return W;
|
|||
|
|
};
|
|||
|
|
u.scripts=function(){
|
|||
|
|
return %DebugGetLoadedScripts();
|
|||
|
|
};
|
|||
|
|
u.debuggerFlags=function(){
|
|||
|
|
return B;
|
|||
|
|
};
|
|||
|
|
u.MakeMirror=l;
|
|||
|
|
function MakeExecutionState(J){
|
|||
|
|
return new ExecutionState(J);
|
|||
|
|
}
|
|||
|
|
function ExecutionState(J){
|
|||
|
|
this.break_id=J;
|
|||
|
|
this.selected_frame=0;
|
|||
|
|
}
|
|||
|
|
ExecutionState.prototype.prepareStep=function(az){
|
|||
|
|
if(az===u.StepAction.StepIn||
|
|||
|
|
az===u.StepAction.StepOut||
|
|||
|
|
az===u.StepAction.StepNext||
|
|||
|
|
az===u.StepAction.StepFrame){
|
|||
|
|
return %PrepareStep(this.break_id,az);
|
|||
|
|
}
|
|||
|
|
throw k(33);
|
|||
|
|
};
|
|||
|
|
ExecutionState.prototype.evaluateGlobal=function(at,disable_break,
|
|||
|
|
opt_additional_context){
|
|||
|
|
return l(%DebugEvaluateGlobal(this.break_id,at,
|
|||
|
|
(!!(disable_break)),
|
|||
|
|
opt_additional_context));
|
|||
|
|
};
|
|||
|
|
ExecutionState.prototype.frameCount=function(){
|
|||
|
|
return %GetFrameCount(this.break_id);
|
|||
|
|
};
|
|||
|
|
ExecutionState.prototype.frame=function(aA){
|
|||
|
|
if(aA==null)aA=this.selected_frame;
|
|||
|
|
if(aA<0||aA>=this.frameCount()){
|
|||
|
|
throw k(32);
|
|||
|
|
}
|
|||
|
|
return new c(this.break_id,aA);
|
|||
|
|
};
|
|||
|
|
ExecutionState.prototype.setSelectedFrame=function(aB){
|
|||
|
|
var N=(%_ToNumber(aB));
|
|||
|
|
if(N<0||N>=this.frameCount()){
|
|||
|
|
throw k(32);
|
|||
|
|
}
|
|||
|
|
this.selected_frame=N;
|
|||
|
|
};
|
|||
|
|
ExecutionState.prototype.selectedFrame=function(){
|
|||
|
|
return this.selected_frame;
|
|||
|
|
};
|
|||
|
|
ExecutionState.prototype.debugCommandProcessor=function(aC){
|
|||
|
|
return new DebugCommandProcessor(this,aC);
|
|||
|
|
};
|
|||
|
|
function MakeBreakEvent(J,aD){
|
|||
|
|
return new BreakEvent(J,aD);
|
|||
|
|
}
|
|||
|
|
function BreakEvent(J,aD){
|
|||
|
|
this.frame_=new c(J,0);
|
|||
|
|
this.break_points_hit_=aD;
|
|||
|
|
}
|
|||
|
|
BreakEvent.prototype.eventType=function(){
|
|||
|
|
return u.DebugEvent.Break;
|
|||
|
|
};
|
|||
|
|
BreakEvent.prototype.func=function(){
|
|||
|
|
return this.frame_.func();
|
|||
|
|
};
|
|||
|
|
BreakEvent.prototype.sourceLine=function(){
|
|||
|
|
return this.frame_.sourceLine();
|
|||
|
|
};
|
|||
|
|
BreakEvent.prototype.sourceColumn=function(){
|
|||
|
|
return this.frame_.sourceColumn();
|
|||
|
|
};
|
|||
|
|
BreakEvent.prototype.sourceLineText=function(){
|
|||
|
|
return this.frame_.sourceLineText();
|
|||
|
|
};
|
|||
|
|
BreakEvent.prototype.breakPointsHit=function(){
|
|||
|
|
return this.break_points_hit_;
|
|||
|
|
};
|
|||
|
|
BreakEvent.prototype.toJSONProtocol=function(){
|
|||
|
|
var aE={seq:x++,
|
|||
|
|
type:"event",
|
|||
|
|
event:"break",
|
|||
|
|
body:{invocationText:this.frame_.invocationText()}
|
|||
|
|
};
|
|||
|
|
var Q=this.func().script();
|
|||
|
|
if(Q){
|
|||
|
|
aE.body.sourceLine=this.sourceLine(),
|
|||
|
|
aE.body.sourceColumn=this.sourceColumn(),
|
|||
|
|
aE.body.sourceLineText=this.sourceLineText(),
|
|||
|
|
aE.body.script=MakeScriptObject_(Q,false);
|
|||
|
|
}
|
|||
|
|
if(this.breakPointsHit()){
|
|||
|
|
aE.body.breakpoints=[];
|
|||
|
|
for(var N=0;N<this.breakPointsHit().length;N++){
|
|||
|
|
var aF=this.breakPointsHit()[N];
|
|||
|
|
var aq=aF.script_break_point();
|
|||
|
|
var aG;
|
|||
|
|
if(aq){
|
|||
|
|
aG=aq.number();
|
|||
|
|
}else{
|
|||
|
|
aG=aF.number();
|
|||
|
|
}
|
|||
|
|
aE.body.breakpoints.push(aG);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return h(ObjectToProtocolObject_(aE));
|
|||
|
|
};
|
|||
|
|
function MakeExceptionEvent(J,aH,aI,aJ){
|
|||
|
|
return new ExceptionEvent(J,aH,aI,aJ);
|
|||
|
|
}
|
|||
|
|
function ExceptionEvent(J,aH,aI,aJ){
|
|||
|
|
this.exec_state_=new ExecutionState(J);
|
|||
|
|
this.exception_=aH;
|
|||
|
|
this.uncaught_=aI;
|
|||
|
|
this.promise_=aJ;
|
|||
|
|
}
|
|||
|
|
ExceptionEvent.prototype.eventType=function(){
|
|||
|
|
return u.DebugEvent.Exception;
|
|||
|
|
};
|
|||
|
|
ExceptionEvent.prototype.exception=function(){
|
|||
|
|
return this.exception_;
|
|||
|
|
};
|
|||
|
|
ExceptionEvent.prototype.uncaught=function(){
|
|||
|
|
return this.uncaught_;
|
|||
|
|
};
|
|||
|
|
ExceptionEvent.prototype.promise=function(){
|
|||
|
|
return this.promise_;
|
|||
|
|
};
|
|||
|
|
ExceptionEvent.prototype.func=function(){
|
|||
|
|
return this.exec_state_.frame(0).func();
|
|||
|
|
};
|
|||
|
|
ExceptionEvent.prototype.sourceLine=function(){
|
|||
|
|
return this.exec_state_.frame(0).sourceLine();
|
|||
|
|
};
|
|||
|
|
ExceptionEvent.prototype.sourceColumn=function(){
|
|||
|
|
return this.exec_state_.frame(0).sourceColumn();
|
|||
|
|
};
|
|||
|
|
ExceptionEvent.prototype.sourceLineText=function(){
|
|||
|
|
return this.exec_state_.frame(0).sourceLineText();
|
|||
|
|
};
|
|||
|
|
ExceptionEvent.prototype.toJSONProtocol=function(){
|
|||
|
|
var aE=new ProtocolMessage();
|
|||
|
|
aE.event="exception";
|
|||
|
|
aE.body={uncaught:this.uncaught_,
|
|||
|
|
exception:l(this.exception_)
|
|||
|
|
};
|
|||
|
|
if(this.exec_state_.frameCount()>0){
|
|||
|
|
aE.body.sourceLine=this.sourceLine();
|
|||
|
|
aE.body.sourceColumn=this.sourceColumn();
|
|||
|
|
aE.body.sourceLineText=this.sourceLineText();
|
|||
|
|
var Q=this.func().script();
|
|||
|
|
if(Q){
|
|||
|
|
aE.body.script=MakeScriptObject_(Q,false);
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
aE.body.sourceLine=-1;
|
|||
|
|
}
|
|||
|
|
return aE.toJSONProtocol();
|
|||
|
|
};
|
|||
|
|
function MakeCompileEvent(Q,w){
|
|||
|
|
return new CompileEvent(Q,w);
|
|||
|
|
}
|
|||
|
|
function CompileEvent(Q,w){
|
|||
|
|
this.script_=l(Q);
|
|||
|
|
this.type_=w;
|
|||
|
|
}
|
|||
|
|
CompileEvent.prototype.eventType=function(){
|
|||
|
|
return this.type_;
|
|||
|
|
};
|
|||
|
|
CompileEvent.prototype.script=function(){
|
|||
|
|
return this.script_;
|
|||
|
|
};
|
|||
|
|
CompileEvent.prototype.toJSONProtocol=function(){
|
|||
|
|
var aE=new ProtocolMessage();
|
|||
|
|
aE.running=true;
|
|||
|
|
switch(this.type_){
|
|||
|
|
case u.DebugEvent.BeforeCompile:
|
|||
|
|
aE.event="beforeCompile";
|
|||
|
|
break;
|
|||
|
|
case u.DebugEvent.AfterCompile:
|
|||
|
|
aE.event="afterCompile";
|
|||
|
|
break;
|
|||
|
|
case u.DebugEvent.CompileError:
|
|||
|
|
aE.event="compileError";
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
aE.body={};
|
|||
|
|
aE.body.script=this.script_;
|
|||
|
|
return aE.toJSONProtocol();
|
|||
|
|
};
|
|||
|
|
function MakeScriptObject_(Q,aK){
|
|||
|
|
var aE={id:Q.id(),
|
|||
|
|
name:Q.name(),
|
|||
|
|
lineOffset:Q.lineOffset(),
|
|||
|
|
columnOffset:Q.columnOffset(),
|
|||
|
|
lineCount:Q.lineCount(),
|
|||
|
|
};
|
|||
|
|
if(!(Q.data()===(void 0))){
|
|||
|
|
aE.data=Q.data();
|
|||
|
|
}
|
|||
|
|
if(aK){
|
|||
|
|
aE.source=Q.source();
|
|||
|
|
}
|
|||
|
|
return aE;
|
|||
|
|
}
|
|||
|
|
function MakeAsyncTaskEvent(aL){
|
|||
|
|
return new AsyncTaskEvent(aL);
|
|||
|
|
}
|
|||
|
|
function AsyncTaskEvent(aL){
|
|||
|
|
this.type_=aL.type;
|
|||
|
|
this.name_=aL.name;
|
|||
|
|
this.id_=aL.id;
|
|||
|
|
}
|
|||
|
|
AsyncTaskEvent.prototype.type=function(){
|
|||
|
|
return this.type_;
|
|||
|
|
}
|
|||
|
|
AsyncTaskEvent.prototype.name=function(){
|
|||
|
|
return this.name_;
|
|||
|
|
}
|
|||
|
|
AsyncTaskEvent.prototype.id=function(){
|
|||
|
|
return this.id_;
|
|||
|
|
}
|
|||
|
|
function DebugCommandProcessor(H,aC){
|
|||
|
|
this.exec_state_=H;
|
|||
|
|
this.running_=aC||false;
|
|||
|
|
}
|
|||
|
|
DebugCommandProcessor.prototype.processDebugRequest=function(aM){
|
|||
|
|
return this.processDebugJSONRequest(aM);
|
|||
|
|
};
|
|||
|
|
function ProtocolMessage(aM){
|
|||
|
|
this.seq=x++;
|
|||
|
|
if(aM){
|
|||
|
|
this.type='response';
|
|||
|
|
this.request_seq=aM.seq;
|
|||
|
|
this.command=aM.command;
|
|||
|
|
}else{
|
|||
|
|
this.type='event';
|
|||
|
|
}
|
|||
|
|
this.success=true;
|
|||
|
|
this.running=(void 0);
|
|||
|
|
}
|
|||
|
|
ProtocolMessage.prototype.setOption=function(aN,C){
|
|||
|
|
if(!this.options_){
|
|||
|
|
this.options_={};
|
|||
|
|
}
|
|||
|
|
this.options_[aN]=C;
|
|||
|
|
};
|
|||
|
|
ProtocolMessage.prototype.failed=function(aO,aP){
|
|||
|
|
this.success=false;
|
|||
|
|
this.message=aO;
|
|||
|
|
if((typeof(aP)==='object')){
|
|||
|
|
this.error_details=aP;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
ProtocolMessage.prototype.toJSONProtocol=function(){
|
|||
|
|
var aQ={};
|
|||
|
|
aQ.seq=this.seq;
|
|||
|
|
if(this.request_seq){
|
|||
|
|
aQ.request_seq=this.request_seq;
|
|||
|
|
}
|
|||
|
|
aQ.type=this.type;
|
|||
|
|
if(this.event){
|
|||
|
|
aQ.event=this.event;
|
|||
|
|
}
|
|||
|
|
if(this.command){
|
|||
|
|
aQ.command=this.command;
|
|||
|
|
}
|
|||
|
|
if(this.success){
|
|||
|
|
aQ.success=this.success;
|
|||
|
|
}else{
|
|||
|
|
aQ.success=false;
|
|||
|
|
}
|
|||
|
|
if(this.body){
|
|||
|
|
var aR;
|
|||
|
|
var aS=m(true,this.options_);
|
|||
|
|
if(this.body instanceof o){
|
|||
|
|
aR=aS.serializeValue(this.body);
|
|||
|
|
}else if(this.body instanceof d){
|
|||
|
|
aR=[];
|
|||
|
|
for(var N=0;N<this.body.length;N++){
|
|||
|
|
if(this.body[N]instanceof o){
|
|||
|
|
aR.push(aS.serializeValue(this.body[N]));
|
|||
|
|
}else{
|
|||
|
|
aR.push(ObjectToProtocolObject_(this.body[N],aS));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
aR=ObjectToProtocolObject_(this.body,aS);
|
|||
|
|
}
|
|||
|
|
aQ.body=aR;
|
|||
|
|
aQ.refs=aS.serializeReferencedObjects();
|
|||
|
|
}
|
|||
|
|
if(this.message){
|
|||
|
|
aQ.message=this.message;
|
|||
|
|
}
|
|||
|
|
if(this.error_details){
|
|||
|
|
aQ.error_details=this.error_details;
|
|||
|
|
}
|
|||
|
|
aQ.running=this.running;
|
|||
|
|
return h(aQ);
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.createResponse=function(aM){
|
|||
|
|
return new ProtocolMessage(aM);
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.processDebugJSONRequest=function(
|
|||
|
|
json_request){
|
|||
|
|
var aM;
|
|||
|
|
var aT;
|
|||
|
|
try{
|
|||
|
|
try{
|
|||
|
|
aM=g(json_request);
|
|||
|
|
aT=this.createResponse(aM);
|
|||
|
|
if(!aM.type){
|
|||
|
|
throw j(2,'Type not specified');
|
|||
|
|
}
|
|||
|
|
if(aM.type!='request'){
|
|||
|
|
throw j(2,
|
|||
|
|
"Illegal type '"+aM.type+"' in request");
|
|||
|
|
}
|
|||
|
|
if(!aM.command){
|
|||
|
|
throw j(2,'Command not specified');
|
|||
|
|
}
|
|||
|
|
if(aM.arguments){
|
|||
|
|
var aU=aM.arguments;
|
|||
|
|
if(aU.inlineRefs||aU.compactFormat){
|
|||
|
|
aT.setOption('inlineRefs',true);
|
|||
|
|
}
|
|||
|
|
if(!(aU.maxStringLength===(void 0))){
|
|||
|
|
aT.setOption('maxStringLength',aU.maxStringLength);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var aV=aM.command.toLowerCase();
|
|||
|
|
var aW=DebugCommandProcessor.prototype.dispatch_[aV];
|
|||
|
|
if((%IsFunction(aW))){
|
|||
|
|
%_Call(aW,this,aM,aT);
|
|||
|
|
}else{
|
|||
|
|
throw j(2,
|
|||
|
|
'Unknown command "'+aM.command+'" in request');
|
|||
|
|
}
|
|||
|
|
}catch(e){
|
|||
|
|
if(!aT){
|
|||
|
|
aT=this.createResponse();
|
|||
|
|
}
|
|||
|
|
aT.success=false;
|
|||
|
|
aT.message=(%_ToString(e));
|
|||
|
|
}
|
|||
|
|
try{
|
|||
|
|
if(!(aT.running===(void 0))){
|
|||
|
|
this.running_=aT.running;
|
|||
|
|
}
|
|||
|
|
aT.running=this.running_;
|
|||
|
|
return aT.toJSONProtocol();
|
|||
|
|
}catch(e){
|
|||
|
|
return'{"seq":'+aT.seq+','+
|
|||
|
|
'"request_seq":'+aM.seq+','+
|
|||
|
|
'"type":"response",'+
|
|||
|
|
'"success":false,'+
|
|||
|
|
'"message":"Internal error: '+(%_ToString(e))+'"}';
|
|||
|
|
}
|
|||
|
|
}catch(e){
|
|||
|
|
return'{"seq":0,"type":"response","success":false,"message":"Internal error"}';
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.continueRequest_=function(aM,aT){
|
|||
|
|
if(aM.arguments){
|
|||
|
|
var az=u.StepAction.StepIn;
|
|||
|
|
var aX=aM.arguments.stepaction;
|
|||
|
|
if(aX){
|
|||
|
|
if(aX=='in'){
|
|||
|
|
az=u.StepAction.StepIn;
|
|||
|
|
}else if(aX=='next'){
|
|||
|
|
az=u.StepAction.StepNext;
|
|||
|
|
}else if(aX=='out'){
|
|||
|
|
az=u.StepAction.StepOut;
|
|||
|
|
}else{
|
|||
|
|
throw j(2,
|
|||
|
|
'Invalid stepaction argument "'+aX+'".');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
this.exec_state_.prepareStep(az);
|
|||
|
|
}
|
|||
|
|
aT.running=true;
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.breakRequest_=function(aM,aT){
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.setBreakPointRequest_=
|
|||
|
|
function(aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
aT.failed('Missing arguments');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var w=aM.arguments.type;
|
|||
|
|
var aY=aM.arguments.target;
|
|||
|
|
var O=aM.arguments.line;
|
|||
|
|
var P=aM.arguments.column;
|
|||
|
|
var aZ=(aM.arguments.enabled===(void 0))?
|
|||
|
|
true:aM.arguments.enabled;
|
|||
|
|
var G=aM.arguments.condition;
|
|||
|
|
var ba=aM.arguments.groupId;
|
|||
|
|
if(!w||(aY===(void 0))){
|
|||
|
|
aT.failed('Missing argument "type" or "target"');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var al;
|
|||
|
|
if(w=='function'){
|
|||
|
|
if(!(typeof(aY)==='string')){
|
|||
|
|
aT.failed('Argument "target" is not a string value');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var Z;
|
|||
|
|
try{
|
|||
|
|
Z=this.exec_state_.evaluateGlobal(aY).value();
|
|||
|
|
}catch(e){
|
|||
|
|
aT.failed('Error: "'+(%_ToString(e))+
|
|||
|
|
'" evaluating "'+aY+'"');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if(!(%IsFunction(Z))){
|
|||
|
|
aT.failed('"'+aY+'" does not evaluate to a function');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
al=u.setBreakPoint(Z,O,P,G);
|
|||
|
|
}else if(w=='handle'){
|
|||
|
|
var bb=q(aY,10);
|
|||
|
|
var I=i(bb);
|
|||
|
|
if(!I){
|
|||
|
|
return aT.failed('Object #'+bb+'# not found');
|
|||
|
|
}
|
|||
|
|
if(!I.isFunction()){
|
|||
|
|
return aT.failed('Object #'+bb+'# is not a function');
|
|||
|
|
}
|
|||
|
|
al=u.setBreakPoint(I.value(),
|
|||
|
|
O,P,G);
|
|||
|
|
}else if(w=='script'){
|
|||
|
|
al=
|
|||
|
|
u.setScriptBreakPointByName(aY,O,P,G,
|
|||
|
|
ba);
|
|||
|
|
}else if(w=='scriptId'){
|
|||
|
|
al=
|
|||
|
|
u.setScriptBreakPointById(aY,O,P,G,ba);
|
|||
|
|
}else if(w=='scriptRegExp'){
|
|||
|
|
al=
|
|||
|
|
u.setScriptBreakPointByRegExp(aY,O,P,G,
|
|||
|
|
ba);
|
|||
|
|
}else{
|
|||
|
|
aT.failed('Illegal type "'+w+'"');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var F=u.findBreakPoint(al);
|
|||
|
|
if(!aZ){
|
|||
|
|
u.disableBreakPoint(al);
|
|||
|
|
}
|
|||
|
|
aT.body={type:w,
|
|||
|
|
breakpoint:al};
|
|||
|
|
if(F instanceof ScriptBreakPoint){
|
|||
|
|
if(F.type()==u.ScriptBreakPointType.ScriptId){
|
|||
|
|
aT.body.type='scriptId';
|
|||
|
|
aT.body.script_id=F.script_id();
|
|||
|
|
}else if(F.type()==u.ScriptBreakPointType.ScriptName){
|
|||
|
|
aT.body.type='scriptName';
|
|||
|
|
aT.body.script_name=F.script_name();
|
|||
|
|
}else if(F.type()==u.ScriptBreakPointType.ScriptRegExp){
|
|||
|
|
aT.body.type='scriptRegExp';
|
|||
|
|
aT.body.script_regexp=F.script_regexp_object().source;
|
|||
|
|
}else{
|
|||
|
|
throw j(2,
|
|||
|
|
"Unexpected breakpoint type: "+F.type());
|
|||
|
|
}
|
|||
|
|
aT.body.line=F.line();
|
|||
|
|
aT.body.column=F.column();
|
|||
|
|
aT.body.actual_locations=F.actual_locations();
|
|||
|
|
}else{
|
|||
|
|
aT.body.type='function';
|
|||
|
|
aT.body.actual_locations=[F.actual_location];
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.changeBreakPointRequest_=function(
|
|||
|
|
aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
aT.failed('Missing arguments');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var F=(%_ToNumber(aM.arguments.breakpoint));
|
|||
|
|
var aZ=aM.arguments.enabled;
|
|||
|
|
var G=aM.arguments.condition;
|
|||
|
|
if(!F){
|
|||
|
|
aT.failed('Missing argument "breakpoint"');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if(!(aZ===(void 0))){
|
|||
|
|
if(aZ){
|
|||
|
|
u.enableBreakPoint(F);
|
|||
|
|
}else{
|
|||
|
|
u.disableBreakPoint(F);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!(G===(void 0))){
|
|||
|
|
u.changeBreakPointCondition(F,G);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.clearBreakPointGroupRequest_=function(
|
|||
|
|
aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
aT.failed('Missing arguments');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var bc=aM.arguments.groupId;
|
|||
|
|
if(!bc){
|
|||
|
|
aT.failed('Missing argument "groupId"');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var bd=[];
|
|||
|
|
var be=[];
|
|||
|
|
for(var N=0;N<A.length;N++){
|
|||
|
|
var bf=A[N];
|
|||
|
|
if(bf.groupId()==bc){
|
|||
|
|
bd.push(bf.number());
|
|||
|
|
bf.clear();
|
|||
|
|
}else{
|
|||
|
|
be.push(bf);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
A=be;
|
|||
|
|
aT.body={breakpoints:bd};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.clearBreakPointRequest_=function(
|
|||
|
|
aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
aT.failed('Missing arguments');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var F=(%_ToNumber(aM.arguments.breakpoint));
|
|||
|
|
if(!F){
|
|||
|
|
aT.failed('Missing argument "breakpoint"');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
u.clearBreakPoint(F);
|
|||
|
|
aT.body={breakpoint:F};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.listBreakpointsRequest_=function(
|
|||
|
|
aM,aT){
|
|||
|
|
var bg=[];
|
|||
|
|
for(var N=0;N<A.length;N++){
|
|||
|
|
var F=A[N];
|
|||
|
|
var bh={
|
|||
|
|
number:F.number(),
|
|||
|
|
line:F.line(),
|
|||
|
|
column:F.column(),
|
|||
|
|
groupId:F.groupId(),
|
|||
|
|
active:F.active(),
|
|||
|
|
condition:F.condition(),
|
|||
|
|
actual_locations:F.actual_locations()
|
|||
|
|
};
|
|||
|
|
if(F.type()==u.ScriptBreakPointType.ScriptId){
|
|||
|
|
bh.type='scriptId';
|
|||
|
|
bh.script_id=F.script_id();
|
|||
|
|
}else if(F.type()==u.ScriptBreakPointType.ScriptName){
|
|||
|
|
bh.type='scriptName';
|
|||
|
|
bh.script_name=F.script_name();
|
|||
|
|
}else if(F.type()==u.ScriptBreakPointType.ScriptRegExp){
|
|||
|
|
bh.type='scriptRegExp';
|
|||
|
|
bh.script_regexp=F.script_regexp_object().source;
|
|||
|
|
}else{
|
|||
|
|
throw j(2,
|
|||
|
|
"Unexpected breakpoint type: "+F.type());
|
|||
|
|
}
|
|||
|
|
bg.push(bh);
|
|||
|
|
}
|
|||
|
|
aT.body={
|
|||
|
|
breakpoints:bg,
|
|||
|
|
breakOnExceptions:u.isBreakOnException(),
|
|||
|
|
breakOnUncaughtExceptions:u.isBreakOnUncaughtException()
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.disconnectRequest_=
|
|||
|
|
function(aM,aT){
|
|||
|
|
u.disableAllBreakPoints();
|
|||
|
|
this.continueRequest_(aM,aT);
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.setExceptionBreakRequest_=
|
|||
|
|
function(aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
aT.failed('Missing arguments');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var w=aM.arguments.type;
|
|||
|
|
if(!w){
|
|||
|
|
aT.failed('Missing argument "type"');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var aZ;
|
|||
|
|
if(w=='all'){
|
|||
|
|
aZ=!u.isBreakOnException();
|
|||
|
|
}else if(w=='uncaught'){
|
|||
|
|
aZ=!u.isBreakOnUncaughtException();
|
|||
|
|
}
|
|||
|
|
if(!(aM.arguments.enabled===(void 0))){
|
|||
|
|
aZ=aM.arguments.enabled;
|
|||
|
|
if((aZ!=true)&&(aZ!=false)){
|
|||
|
|
aT.failed('Illegal value for "enabled":"'+aZ+'"');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(w=='all'){
|
|||
|
|
%ChangeBreakOnException(u.ExceptionBreak.Caught,aZ);
|
|||
|
|
}else if(w=='uncaught'){
|
|||
|
|
%ChangeBreakOnException(u.ExceptionBreak.Uncaught,aZ);
|
|||
|
|
}else{
|
|||
|
|
aT.failed('Unknown "type":"'+w+'"');
|
|||
|
|
}
|
|||
|
|
aT.body={'type':w,'enabled':aZ};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.backtraceRequest_=function(
|
|||
|
|
aM,aT){
|
|||
|
|
var bi=this.exec_state_.frameCount();
|
|||
|
|
if(bi==0){
|
|||
|
|
aT.body={
|
|||
|
|
totalFrames:bi
|
|||
|
|
};
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var bj=0;
|
|||
|
|
var bk=t;
|
|||
|
|
if(aM.arguments){
|
|||
|
|
if(aM.arguments.fromFrame){
|
|||
|
|
bj=aM.arguments.fromFrame;
|
|||
|
|
}
|
|||
|
|
if(aM.arguments.toFrame){
|
|||
|
|
bk=aM.arguments.toFrame;
|
|||
|
|
}
|
|||
|
|
if(aM.arguments.bottom){
|
|||
|
|
var bl=bi-bj;
|
|||
|
|
bj=bi-bk;
|
|||
|
|
bk=bl;
|
|||
|
|
}
|
|||
|
|
if(bj<0||bk<0){
|
|||
|
|
return aT.failed('Invalid frame number');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
bk=n(bi,bk);
|
|||
|
|
if(bk<=bj){
|
|||
|
|
var bm='Invalid frame range';
|
|||
|
|
return aT.failed(bm);
|
|||
|
|
}
|
|||
|
|
var bn=[];
|
|||
|
|
for(var N=bj;N<bk;N++){
|
|||
|
|
bn.push(this.exec_state_.frame(N));
|
|||
|
|
}
|
|||
|
|
aT.body={
|
|||
|
|
fromFrame:bj,
|
|||
|
|
toFrame:bk,
|
|||
|
|
totalFrames:bi,
|
|||
|
|
frames:bn
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.frameRequest_=function(aM,aT){
|
|||
|
|
if(this.exec_state_.frameCount()==0){
|
|||
|
|
return aT.failed('No frames');
|
|||
|
|
}
|
|||
|
|
if(aM.arguments){
|
|||
|
|
var aB=aM.arguments.number;
|
|||
|
|
if(aB<0||this.exec_state_.frameCount()<=aB){
|
|||
|
|
return aT.failed('Invalid frame number');
|
|||
|
|
}
|
|||
|
|
this.exec_state_.setSelectedFrame(aM.arguments.number);
|
|||
|
|
}
|
|||
|
|
aT.body=this.exec_state_.frame();
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.resolveFrameFromScopeDescription_=
|
|||
|
|
function(bo){
|
|||
|
|
if(bo&&!(bo.frameNumber===(void 0))){
|
|||
|
|
var bp=bo.frameNumber;
|
|||
|
|
if(bp<0||this.exec_state_.frameCount()<=bp){
|
|||
|
|
throw k(32);
|
|||
|
|
}
|
|||
|
|
return this.exec_state_.frame(bp);
|
|||
|
|
}else{
|
|||
|
|
return this.exec_state_.frame();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.resolveScopeHolder_=
|
|||
|
|
function(bo){
|
|||
|
|
if(bo&&"functionHandle"in bo){
|
|||
|
|
if(!(typeof(bo.functionHandle)==='number')){
|
|||
|
|
throw j(2,'Function handle must be a number');
|
|||
|
|
}
|
|||
|
|
var bq=i(bo.functionHandle);
|
|||
|
|
if(!bq){
|
|||
|
|
throw j(2,'Failed to find function object by handle');
|
|||
|
|
}
|
|||
|
|
if(!bq.isFunction()){
|
|||
|
|
throw j(2,
|
|||
|
|
'Value of non-function type is found by handle');
|
|||
|
|
}
|
|||
|
|
return bq;
|
|||
|
|
}else{
|
|||
|
|
if(this.exec_state_.frameCount()==0){
|
|||
|
|
throw j(2,'No scopes');
|
|||
|
|
}
|
|||
|
|
var br=this.resolveFrameFromScopeDescription_(bo);
|
|||
|
|
return br;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
DebugCommandProcessor.prototype.scopesRequest_=function(aM,aT){
|
|||
|
|
var bs=this.resolveScopeHolder_(aM.arguments);
|
|||
|
|
var bt=bs.scopeCount();
|
|||
|
|
var bu=[];
|
|||
|
|
for(var N=0;N<bt;N++){
|
|||
|
|
bu.push(bs.scope(N));
|
|||
|
|
}
|
|||
|
|
aT.body={
|
|||
|
|
fromScope:0,
|
|||
|
|
toScope:bt,
|
|||
|
|
totalScopes:bt,
|
|||
|
|
scopes:bu
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.scopeRequest_=function(aM,aT){
|
|||
|
|
var bs=this.resolveScopeHolder_(aM.arguments);
|
|||
|
|
var bv=0;
|
|||
|
|
if(aM.arguments&&!(aM.arguments.number===(void 0))){
|
|||
|
|
bv=(%_ToNumber(aM.arguments.number));
|
|||
|
|
if(bv<0||bs.scopeCount()<=bv){
|
|||
|
|
return aT.failed('Invalid scope number');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
aT.body=bs.scope(bv);
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.resolveValue_=function(bw){
|
|||
|
|
if("handle"in bw){
|
|||
|
|
var bx=i(bw.handle);
|
|||
|
|
if(!bx){
|
|||
|
|
throw j(2,"Failed to resolve value by handle, ' #"+
|
|||
|
|
bw.handle+"# not found");
|
|||
|
|
}
|
|||
|
|
return bx.value();
|
|||
|
|
}else if("stringDescription"in bw){
|
|||
|
|
if(bw.type==p.BOOLEAN_TYPE){
|
|||
|
|
return(!!(bw.stringDescription));
|
|||
|
|
}else if(bw.type==p.NUMBER_TYPE){
|
|||
|
|
return(%_ToNumber(bw.stringDescription));
|
|||
|
|
}if(bw.type==p.STRING_TYPE){
|
|||
|
|
return(%_ToString(bw.stringDescription));
|
|||
|
|
}else{
|
|||
|
|
throw j(2,"Unknown type");
|
|||
|
|
}
|
|||
|
|
}else if("value"in bw){
|
|||
|
|
return bw.value;
|
|||
|
|
}else if(bw.type==p.UNDEFINED_TYPE){
|
|||
|
|
return(void 0);
|
|||
|
|
}else if(bw.type==p.NULL_TYPE){
|
|||
|
|
return null;
|
|||
|
|
}else{
|
|||
|
|
throw j(2,"Failed to parse value description");
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.setVariableValueRequest_=
|
|||
|
|
function(aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
aT.failed('Missing arguments');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if((aM.arguments.name===(void 0))){
|
|||
|
|
aT.failed('Missing variable name');
|
|||
|
|
}
|
|||
|
|
var by=aM.arguments.name;
|
|||
|
|
var bo=aM.arguments.scope;
|
|||
|
|
var bs=this.resolveScopeHolder_(bo);
|
|||
|
|
if((bo.number===(void 0))){
|
|||
|
|
aT.failed('Missing scope number');
|
|||
|
|
}
|
|||
|
|
var bv=(%_ToNumber(bo.number));
|
|||
|
|
var bz=bs.scope(bv);
|
|||
|
|
var bA=
|
|||
|
|
DebugCommandProcessor.resolveValue_(aM.arguments.newValue);
|
|||
|
|
bz.setVariableValue(by,bA);
|
|||
|
|
var bB=l(bA);
|
|||
|
|
aT.body={
|
|||
|
|
newValue:bB
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.evaluateRequest_=function(aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
return aT.failed('Missing arguments');
|
|||
|
|
}
|
|||
|
|
var bC=aM.arguments.expression;
|
|||
|
|
var br=aM.arguments.frame;
|
|||
|
|
var a=aM.arguments.global;
|
|||
|
|
var bD=aM.arguments.disable_break;
|
|||
|
|
var bE=aM.arguments.additional_context;
|
|||
|
|
try{
|
|||
|
|
bC=(%_ToString(bC));
|
|||
|
|
}catch(e){
|
|||
|
|
return aT.failed('Failed to convert expression argument to string');
|
|||
|
|
}
|
|||
|
|
if(!(br===(void 0))&&a){
|
|||
|
|
return aT.failed('Arguments "frame" and "global" are exclusive');
|
|||
|
|
}
|
|||
|
|
var bF;
|
|||
|
|
if(bE){
|
|||
|
|
bF={};
|
|||
|
|
for(var N=0;N<bE.length;N++){
|
|||
|
|
var bG=bE[N];
|
|||
|
|
if(!(typeof(bG.name)==='string')){
|
|||
|
|
return aT.failed("Context element #"+N+
|
|||
|
|
" doesn't contain name:string property");
|
|||
|
|
}
|
|||
|
|
var bH=DebugCommandProcessor.resolveValue_(bG);
|
|||
|
|
bF[bG.name]=bH;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(a){
|
|||
|
|
aT.body=this.exec_state_.evaluateGlobal(
|
|||
|
|
bC,(!!(bD)),bF);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if((bD===(void 0))){
|
|||
|
|
bD=true;
|
|||
|
|
}
|
|||
|
|
if(this.exec_state_.frameCount()==0){
|
|||
|
|
return aT.failed('No frames');
|
|||
|
|
}
|
|||
|
|
if(!(br===(void 0))){
|
|||
|
|
var bI=(%_ToNumber(br));
|
|||
|
|
if(bI<0||bI>=this.exec_state_.frameCount()){
|
|||
|
|
return aT.failed('Invalid frame "'+br+'"');
|
|||
|
|
}
|
|||
|
|
aT.body=this.exec_state_.frame(bI).evaluate(
|
|||
|
|
bC,(!!(bD)),bF);
|
|||
|
|
return;
|
|||
|
|
}else{
|
|||
|
|
aT.body=this.exec_state_.frame().evaluate(
|
|||
|
|
bC,(!!(bD)),bF);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.lookupRequest_=function(aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
return aT.failed('Missing arguments');
|
|||
|
|
}
|
|||
|
|
var bJ=aM.arguments.handles;
|
|||
|
|
if((bJ===(void 0))){
|
|||
|
|
return aT.failed('Argument "handles" missing');
|
|||
|
|
}
|
|||
|
|
if(!(aM.arguments.includeSource===(void 0))){
|
|||
|
|
var bK=(!!(aM.arguments.includeSource));
|
|||
|
|
aT.setOption('includeSource',bK);
|
|||
|
|
}
|
|||
|
|
var bL={};
|
|||
|
|
for(var N=0;N<bJ.length;N++){
|
|||
|
|
var bb=bJ[N];
|
|||
|
|
var I=i(bb);
|
|||
|
|
if(!I){
|
|||
|
|
return aT.failed('Object #'+bb+'# not found');
|
|||
|
|
}
|
|||
|
|
bL[bb]=I;
|
|||
|
|
}
|
|||
|
|
aT.body=bL;
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.referencesRequest_=
|
|||
|
|
function(aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
return aT.failed('Missing arguments');
|
|||
|
|
}
|
|||
|
|
var w=aM.arguments.type;
|
|||
|
|
var bb=aM.arguments.handle;
|
|||
|
|
if((w===(void 0))){
|
|||
|
|
return aT.failed('Argument "type" missing');
|
|||
|
|
}
|
|||
|
|
if((bb===(void 0))){
|
|||
|
|
return aT.failed('Argument "handle" missing');
|
|||
|
|
}
|
|||
|
|
if(w!='referencedBy'&&w!='constructedBy'){
|
|||
|
|
return aT.failed('Invalid type "'+w+'"');
|
|||
|
|
}
|
|||
|
|
var I=i(bb);
|
|||
|
|
if(I){
|
|||
|
|
if(w=='referencedBy'){
|
|||
|
|
aT.body=I.referencedBy();
|
|||
|
|
}else{
|
|||
|
|
aT.body=I.constructedBy();
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
return aT.failed('Object #'+bb+'# not found');
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.sourceRequest_=function(aM,aT){
|
|||
|
|
if(this.exec_state_.frameCount()==0){
|
|||
|
|
return aT.failed('No source');
|
|||
|
|
}
|
|||
|
|
var bM;
|
|||
|
|
var bN;
|
|||
|
|
var br=this.exec_state_.frame();
|
|||
|
|
if(aM.arguments){
|
|||
|
|
bM=aM.arguments.fromLine;
|
|||
|
|
bN=aM.arguments.toLine;
|
|||
|
|
if(!(aM.arguments.frame===(void 0))){
|
|||
|
|
var bI=(%_ToNumber(aM.arguments.frame));
|
|||
|
|
if(bI<0||bI>=this.exec_state_.frameCount()){
|
|||
|
|
return aT.failed('Invalid frame "'+br+'"');
|
|||
|
|
}
|
|||
|
|
br=this.exec_state_.frame(bI);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var Q=br.func().script();
|
|||
|
|
if(!Q){
|
|||
|
|
return aT.failed('No source');
|
|||
|
|
}
|
|||
|
|
var bO=Q.value();
|
|||
|
|
var bP=bO.line_offset;
|
|||
|
|
var bQ=%ScriptLineCount(bO);
|
|||
|
|
bM=(bM===(void 0))?0:bM-bP;
|
|||
|
|
bN=(bN===(void 0))?bQ:bN-bP;
|
|||
|
|
if(bM<0)bM=0;
|
|||
|
|
if(bN>bQ)bN=bQ;
|
|||
|
|
if(bM>=bQ||bN<0||bM>bN){
|
|||
|
|
return aT.failed('Invalid line interval');
|
|||
|
|
}
|
|||
|
|
aT.body={};
|
|||
|
|
aT.body.fromLine=bM+bP;
|
|||
|
|
aT.body.toLine=bN+bP;
|
|||
|
|
aT.body.fromPosition=%ScriptLineStartPosition(bO,bM);
|
|||
|
|
aT.body.toPosition=
|
|||
|
|
(bN==0)?0:%ScriptLineEndPosition(bO,bN-1);
|
|||
|
|
aT.body.totalLines=%ScriptLineCount(bO);
|
|||
|
|
aT.body.source=%_SubString(bO.source,
|
|||
|
|
aT.body.fromPosition,
|
|||
|
|
aT.body.toPosition);
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.scriptsRequest_=function(aM,aT){
|
|||
|
|
var bR=ScriptTypeFlag(u.ScriptType.Normal);
|
|||
|
|
var bK=false;
|
|||
|
|
var bS=null;
|
|||
|
|
if(aM.arguments){
|
|||
|
|
if(!(aM.arguments.types===(void 0))){
|
|||
|
|
bR=(%_ToNumber(aM.arguments.types));
|
|||
|
|
if(f(bR)||bR<0){
|
|||
|
|
return aT.failed('Invalid types "'+
|
|||
|
|
aM.arguments.types+'"');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!(aM.arguments.includeSource===(void 0))){
|
|||
|
|
bK=(!!(aM.arguments.includeSource));
|
|||
|
|
aT.setOption('includeSource',bK);
|
|||
|
|
}
|
|||
|
|
if((%_IsArray(aM.arguments.ids))){
|
|||
|
|
bS={};
|
|||
|
|
var bT=aM.arguments.ids;
|
|||
|
|
for(var N=0;N<bT.length;N++){
|
|||
|
|
bS[bT[N]]=true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bU=null;
|
|||
|
|
var bV=null;
|
|||
|
|
if(!(aM.arguments.filter===(void 0))){
|
|||
|
|
var bW=(%_ToNumber(aM.arguments.filter));
|
|||
|
|
if(!f(bW)){
|
|||
|
|
bV=bW;
|
|||
|
|
}
|
|||
|
|
bU=aM.arguments.filter;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var ad=%DebugGetLoadedScripts();
|
|||
|
|
aT.body=[];
|
|||
|
|
for(var N=0;N<ad.length;N++){
|
|||
|
|
if(bS&&!bS[ad[N].id]){
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if(bU||bV){
|
|||
|
|
var Q=ad[N];
|
|||
|
|
var bX=false;
|
|||
|
|
if(bV&&!bX){
|
|||
|
|
if(Q.id&&Q.id===bV){
|
|||
|
|
bX=true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(bU&&!bX){
|
|||
|
|
if(Q.name&&Q.name.indexOf(bU)>=0){
|
|||
|
|
bX=true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!bX)continue;
|
|||
|
|
}
|
|||
|
|
if(bR&ScriptTypeFlag(ad[N].type)){
|
|||
|
|
aT.body.push(l(ad[N]));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.suspendRequest_=function(aM,aT){
|
|||
|
|
aT.running=false;
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.versionRequest_=function(aM,aT){
|
|||
|
|
aT.body={
|
|||
|
|
V8Version:%GetV8Version()
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.changeLiveRequest_=function(
|
|||
|
|
aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
return aT.failed('Missing arguments');
|
|||
|
|
}
|
|||
|
|
var bY=aM.arguments.script_id;
|
|||
|
|
var bZ=!!aM.arguments.preview_only;
|
|||
|
|
var ad=%DebugGetLoadedScripts();
|
|||
|
|
var ca=null;
|
|||
|
|
for(var N=0;N<ad.length;N++){
|
|||
|
|
if(ad[N].id==bY){
|
|||
|
|
ca=ad[N];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!ca){
|
|||
|
|
aT.failed('Script not found');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var cb=new d();
|
|||
|
|
if(!(typeof(aM.arguments.new_source)==='string')){
|
|||
|
|
throw"new_source argument expected";
|
|||
|
|
}
|
|||
|
|
var cc=aM.arguments.new_source;
|
|||
|
|
var cd;
|
|||
|
|
try{
|
|||
|
|
cd=u.LiveEdit.SetScriptSource(ca,
|
|||
|
|
cc,bZ,cb);
|
|||
|
|
}catch(e){
|
|||
|
|
if(e instanceof u.LiveEdit.Failure&&"details"in e){
|
|||
|
|
aT.failed(e.message,e.details);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
throw e;
|
|||
|
|
}
|
|||
|
|
aT.body={change_log:cb,result:cd};
|
|||
|
|
if(!bZ&&!this.running_&&cd.stack_modified){
|
|||
|
|
aT.body.stepin_recommended=true;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.restartFrameRequest_=function(
|
|||
|
|
aM,aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
return aT.failed('Missing arguments');
|
|||
|
|
}
|
|||
|
|
var br=aM.arguments.frame;
|
|||
|
|
if(this.exec_state_.frameCount()==0){
|
|||
|
|
return aT.failed('No frames');
|
|||
|
|
}
|
|||
|
|
var ce;
|
|||
|
|
if(!(br===(void 0))){
|
|||
|
|
var bI=(%_ToNumber(br));
|
|||
|
|
if(bI<0||bI>=this.exec_state_.frameCount()){
|
|||
|
|
return aT.failed('Invalid frame "'+br+'"');
|
|||
|
|
}
|
|||
|
|
ce=this.exec_state_.frame(bI);
|
|||
|
|
}else{
|
|||
|
|
ce=this.exec_state_.frame();
|
|||
|
|
}
|
|||
|
|
var cd=ce.restart();
|
|||
|
|
aT.body={result:cd};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.debuggerFlagsRequest_=function(aM,
|
|||
|
|
aT){
|
|||
|
|
if(!aM.arguments){
|
|||
|
|
aT.failed('Missing arguments');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var cf=aM.arguments.flags;
|
|||
|
|
aT.body={flags:[]};
|
|||
|
|
if(!(cf===(void 0))){
|
|||
|
|
for(var N=0;N<cf.length;N++){
|
|||
|
|
var aN=cf[N].name;
|
|||
|
|
var cg=B[aN];
|
|||
|
|
if(!cg){
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if('value'in cf[N]){
|
|||
|
|
cg.setValue(cf[N].value);
|
|||
|
|
}
|
|||
|
|
aT.body.flags.push({name:aN,value:cg.getValue()});
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
for(var aN in B){
|
|||
|
|
var C=B[aN].getValue();
|
|||
|
|
aT.body.flags.push({name:aN,value:C});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.v8FlagsRequest_=function(aM,aT){
|
|||
|
|
var cf=aM.arguments.flags;
|
|||
|
|
if(!cf)cf='';
|
|||
|
|
%SetFlags(cf);
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.gcRequest_=function(aM,aT){
|
|||
|
|
var w=aM.arguments.type;
|
|||
|
|
if(!w)w='all';
|
|||
|
|
var ch=%GetHeapUsage();
|
|||
|
|
%CollectGarbage(w);
|
|||
|
|
var ci=%GetHeapUsage();
|
|||
|
|
aT.body={"before":ch,"after":ci};
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.dispatch_=(function(){
|
|||
|
|
var cj=DebugCommandProcessor.prototype;
|
|||
|
|
return{
|
|||
|
|
"continue":cj.continueRequest_,
|
|||
|
|
"break":cj.breakRequest_,
|
|||
|
|
"setbreakpoint":cj.setBreakPointRequest_,
|
|||
|
|
"changebreakpoint":cj.changeBreakPointRequest_,
|
|||
|
|
"clearbreakpoint":cj.clearBreakPointRequest_,
|
|||
|
|
"clearbreakpointgroup":cj.clearBreakPointGroupRequest_,
|
|||
|
|
"disconnect":cj.disconnectRequest_,
|
|||
|
|
"setexceptionbreak":cj.setExceptionBreakRequest_,
|
|||
|
|
"listbreakpoints":cj.listBreakpointsRequest_,
|
|||
|
|
"backtrace":cj.backtraceRequest_,
|
|||
|
|
"frame":cj.frameRequest_,
|
|||
|
|
"scopes":cj.scopesRequest_,
|
|||
|
|
"scope":cj.scopeRequest_,
|
|||
|
|
"setvariablevalue":cj.setVariableValueRequest_,
|
|||
|
|
"evaluate":cj.evaluateRequest_,
|
|||
|
|
"lookup":cj.lookupRequest_,
|
|||
|
|
"references":cj.referencesRequest_,
|
|||
|
|
"source":cj.sourceRequest_,
|
|||
|
|
"scripts":cj.scriptsRequest_,
|
|||
|
|
"suspend":cj.suspendRequest_,
|
|||
|
|
"version":cj.versionRequest_,
|
|||
|
|
"changelive":cj.changeLiveRequest_,
|
|||
|
|
"restartframe":cj.restartFrameRequest_,
|
|||
|
|
"flags":cj.debuggerFlagsRequest_,
|
|||
|
|
"v8flag":cj.v8FlagsRequest_,
|
|||
|
|
"gc":cj.gcRequest_,
|
|||
|
|
};
|
|||
|
|
})();
|
|||
|
|
DebugCommandProcessor.prototype.isRunning=function(){
|
|||
|
|
return this.running_;
|
|||
|
|
};
|
|||
|
|
DebugCommandProcessor.prototype.systemBreak=function(ck,aU){
|
|||
|
|
return %SystemBreak();
|
|||
|
|
};
|
|||
|
|
function ObjectToProtocolObject_(cl,cm){
|
|||
|
|
var cn={};
|
|||
|
|
for(var aV in cl){
|
|||
|
|
if(typeof aV=='string'){
|
|||
|
|
var co=ValueToProtocolValue_(cl[aV],
|
|||
|
|
cm);
|
|||
|
|
if(!(co===(void 0))){
|
|||
|
|
cn[aV]=co;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return cn;
|
|||
|
|
}
|
|||
|
|
function ArrayToProtocolArray_(bg,cm){
|
|||
|
|
var aQ=[];
|
|||
|
|
for(var N=0;N<bg.length;N++){
|
|||
|
|
aQ.push(ValueToProtocolValue_(bg[N],cm));
|
|||
|
|
}
|
|||
|
|
return aQ;
|
|||
|
|
}
|
|||
|
|
function ValueToProtocolValue_(C,cm){
|
|||
|
|
var aQ;
|
|||
|
|
switch(typeof C){
|
|||
|
|
case'object':
|
|||
|
|
if(C instanceof o){
|
|||
|
|
aQ=cm.serializeValue(C);
|
|||
|
|
}else if((%_IsArray(C))){
|
|||
|
|
aQ=ArrayToProtocolArray_(C,cm);
|
|||
|
|
}else{
|
|||
|
|
aQ=ObjectToProtocolObject_(C,cm);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case'boolean':
|
|||
|
|
case'string':
|
|||
|
|
case'number':
|
|||
|
|
aQ=C;
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
aQ=null;
|
|||
|
|
}
|
|||
|
|
return aQ;
|
|||
|
|
}
|
|||
|
|
b.InstallConstants(a,[
|
|||
|
|
"Debug",u,
|
|||
|
|
"DebugCommandProcessor",DebugCommandProcessor,
|
|||
|
|
"BreakEvent",BreakEvent,
|
|||
|
|
"CompileEvent",CompileEvent,
|
|||
|
|
"BreakPoint",BreakPoint,
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(b,2,[
|
|||
|
|
"MakeExecutionState",MakeExecutionState,
|
|||
|
|
"MakeExceptionEvent",MakeExceptionEvent,
|
|||
|
|
"MakeBreakEvent",MakeBreakEvent,
|
|||
|
|
"MakeCompileEvent",MakeCompileEvent,
|
|||
|
|
"MakeAsyncTaskEvent",MakeAsyncTaskEvent,
|
|||
|
|
"IsBreakPointTriggered",IsBreakPointTriggered,
|
|||
|
|
"UpdateScriptBreakPoints",UpdateScriptBreakPoints,
|
|||
|
|
]);
|
|||
|
|
b.Export(function(cp){
|
|||
|
|
cp.GetScriptBreakPoints=GetScriptBreakPoints;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
liveedit%<25>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
var c=a.Debug.findScriptSourcePosition;
|
|||
|
|
var d;
|
|||
|
|
var e=a.Array;
|
|||
|
|
var f=a.Math.floor;
|
|||
|
|
var g=a.SyntaxError;
|
|||
|
|
b.Import(function(h){
|
|||
|
|
d=h.GetScriptBreakPoints;
|
|||
|
|
});
|
|||
|
|
var i;
|
|||
|
|
function ApplyPatchMultiChunk(script,diff_array,new_source,preview_only,
|
|||
|
|
change_log){
|
|||
|
|
var j=script.source;
|
|||
|
|
var k=GatherCompileInfo(j,script);
|
|||
|
|
var l=BuildCodeInfoTree(k);
|
|||
|
|
var m=new PosTranslator(diff_array);
|
|||
|
|
MarkChangedFunctions(l,m.GetChunks());
|
|||
|
|
FindLiveSharedInfos(l,script);
|
|||
|
|
var n;
|
|||
|
|
try{
|
|||
|
|
n=GatherCompileInfo(new_source,script);
|
|||
|
|
}catch(e){
|
|||
|
|
var o=
|
|||
|
|
new Failure("Failed to compile new version of script: "+e);
|
|||
|
|
if(e instanceof g){
|
|||
|
|
var p={
|
|||
|
|
type:"liveedit_compile_error",
|
|||
|
|
syntaxErrorMessage:e.message
|
|||
|
|
};
|
|||
|
|
CopyErrorPositionToDetails(e,p);
|
|||
|
|
o.details=p;
|
|||
|
|
}
|
|||
|
|
throw o;
|
|||
|
|
}
|
|||
|
|
var q=BuildCodeInfoTree(n);
|
|||
|
|
FindCorrespondingFunctions(l,q);
|
|||
|
|
var r=new e();
|
|||
|
|
var s=new e();
|
|||
|
|
var t=new e();
|
|||
|
|
var u=new e();
|
|||
|
|
function HarvestTodo(v){
|
|||
|
|
function CollectDamaged(w){
|
|||
|
|
s.push(w);
|
|||
|
|
for(var x=0;x<w.children.length;x++){
|
|||
|
|
CollectDamaged(w.children[x]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function CollectNew(y){
|
|||
|
|
for(var x=0;x<y.length;x++){
|
|||
|
|
t.push(y[x]);
|
|||
|
|
CollectNew(y[x].children);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(v.status==i.DAMAGED){
|
|||
|
|
CollectDamaged(v);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if(v.status==i.UNCHANGED){
|
|||
|
|
u.push(v);
|
|||
|
|
}else if(v.status==i.SOURCE_CHANGED){
|
|||
|
|
u.push(v);
|
|||
|
|
}else if(v.status==i.CHANGED){
|
|||
|
|
r.push(v);
|
|||
|
|
CollectNew(v.unmatched_new_nodes);
|
|||
|
|
}
|
|||
|
|
for(var x=0;x<v.children.length;x++){
|
|||
|
|
HarvestTodo(v.children[x]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var z={
|
|||
|
|
change_tree:DescribeChangeTree(l),
|
|||
|
|
textual_diff:{
|
|||
|
|
old_len:j.length,
|
|||
|
|
new_len:new_source.length,
|
|||
|
|
chunks:diff_array
|
|||
|
|
},
|
|||
|
|
updated:false
|
|||
|
|
};
|
|||
|
|
if(preview_only){
|
|||
|
|
return z;
|
|||
|
|
}
|
|||
|
|
HarvestTodo(l);
|
|||
|
|
var A=new e();
|
|||
|
|
var B=new e();
|
|||
|
|
for(var x=0;x<r.length;x++){
|
|||
|
|
var C=r[x].live_shared_function_infos;
|
|||
|
|
var D=
|
|||
|
|
r[x].corresponding_node.info.shared_function_info;
|
|||
|
|
if(C){
|
|||
|
|
for(var E=0;E<C.length;E++){
|
|||
|
|
A.push(C[E]);
|
|||
|
|
B.push(D);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var F=
|
|||
|
|
CheckStackActivations(A,
|
|||
|
|
B,
|
|||
|
|
change_log);
|
|||
|
|
z.stack_modified=F!=0;
|
|||
|
|
var G=TemporaryRemoveBreakPoints(script,change_log);
|
|||
|
|
var H;
|
|||
|
|
if(s.length==0){
|
|||
|
|
%LiveEditReplaceScript(script,new_source,null);
|
|||
|
|
H=(void 0);
|
|||
|
|
}else{
|
|||
|
|
var I=CreateNameForOldScript(script);
|
|||
|
|
H=%LiveEditReplaceScript(script,new_source,
|
|||
|
|
I);
|
|||
|
|
var J=new e();
|
|||
|
|
change_log.push({linked_to_old_script:J});
|
|||
|
|
for(var x=0;x<s.length;x++){
|
|||
|
|
LinkToOldScript(s[x],H,
|
|||
|
|
J);
|
|||
|
|
}
|
|||
|
|
z.created_script_name=I;
|
|||
|
|
}
|
|||
|
|
for(var x=0;x<t.length;x++){
|
|||
|
|
%LiveEditFunctionSetScript(
|
|||
|
|
t[x].info.shared_function_info,script);
|
|||
|
|
}
|
|||
|
|
for(var x=0;x<r.length;x++){
|
|||
|
|
PatchFunctionCode(r[x],change_log);
|
|||
|
|
}
|
|||
|
|
var K=new e();
|
|||
|
|
change_log.push({position_patched:K});
|
|||
|
|
for(var x=0;x<u.length;x++){
|
|||
|
|
PatchPositions(u[x],diff_array,
|
|||
|
|
K);
|
|||
|
|
if(u[x].live_shared_function_infos){
|
|||
|
|
u[x].live_shared_function_infos.
|
|||
|
|
forEach(function(L){
|
|||
|
|
%LiveEditFunctionSourceUpdated(L.raw_array);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
G(m,H);
|
|||
|
|
z.updated=true;
|
|||
|
|
return z;
|
|||
|
|
}
|
|||
|
|
function GatherCompileInfo(M,N){
|
|||
|
|
var O=%LiveEditGatherCompileInfo(N,M);
|
|||
|
|
var P=new e();
|
|||
|
|
var Q=new e();
|
|||
|
|
for(var x=0;x<O.length;x++){
|
|||
|
|
var L=new FunctionCompileInfo(O[x]);
|
|||
|
|
%LiveEditFunctionSetScript(L.shared_function_info,(void 0));
|
|||
|
|
P.push(L);
|
|||
|
|
Q.push(x);
|
|||
|
|
}
|
|||
|
|
for(var x=0;x<P.length;x++){
|
|||
|
|
var R=x;
|
|||
|
|
for(var E=x+1;E<P.length;E++){
|
|||
|
|
if(P[R].start_position>P[E].start_position){
|
|||
|
|
R=E;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(R!=x){
|
|||
|
|
var S=P[R];
|
|||
|
|
var T=Q[R];
|
|||
|
|
P[R]=P[x];
|
|||
|
|
Q[R]=Q[x];
|
|||
|
|
P[x]=S;
|
|||
|
|
Q[x]=T;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var U=0;
|
|||
|
|
function ResetIndexes(V,W){
|
|||
|
|
var X=-1;
|
|||
|
|
while(U<P.length&&
|
|||
|
|
P[U].outer_index==W){
|
|||
|
|
var Y=U;
|
|||
|
|
P[Y].outer_index=V;
|
|||
|
|
if(X!=-1){
|
|||
|
|
P[X].next_sibling_index=Y;
|
|||
|
|
}
|
|||
|
|
X=Y;
|
|||
|
|
U++;
|
|||
|
|
ResetIndexes(Y,Q[Y]);
|
|||
|
|
}
|
|||
|
|
if(X!=-1){
|
|||
|
|
P[X].next_sibling_index=-1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
ResetIndexes(-1,-1);
|
|||
|
|
Assert(U==P.length);
|
|||
|
|
return P;
|
|||
|
|
}
|
|||
|
|
function PatchFunctionCode(v,Z){
|
|||
|
|
var D=v.corresponding_node.info;
|
|||
|
|
if(v.live_shared_function_infos){
|
|||
|
|
v.live_shared_function_infos.forEach(function(aa){
|
|||
|
|
%LiveEditReplaceFunctionCode(D.raw_array,
|
|||
|
|
aa.raw_array);
|
|||
|
|
for(var x=0;x<v.children.length;x++){
|
|||
|
|
if(v.children[x].corresponding_node){
|
|||
|
|
var ab=
|
|||
|
|
v.children[x].corresponding_node.info.
|
|||
|
|
shared_function_info;
|
|||
|
|
if(v.children[x].live_shared_function_infos){
|
|||
|
|
v.children[x].live_shared_function_infos.
|
|||
|
|
forEach(function(ac){
|
|||
|
|
%LiveEditReplaceRefToNestedFunction(
|
|||
|
|
aa.info,
|
|||
|
|
ab,
|
|||
|
|
ac.info);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
Z.push({function_patched:D.function_name});
|
|||
|
|
}else{
|
|||
|
|
Z.push({function_patched:D.function_name,
|
|||
|
|
function_info_not_found:true});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function LinkToOldScript(ad,H,ae){
|
|||
|
|
if(ad.live_shared_function_infos){
|
|||
|
|
ad.live_shared_function_infos.
|
|||
|
|
forEach(function(L){
|
|||
|
|
%LiveEditFunctionSetScript(L.info,H);
|
|||
|
|
});
|
|||
|
|
ae.push({name:ad.info.function_name});
|
|||
|
|
}else{
|
|||
|
|
ae.push(
|
|||
|
|
{name:ad.info.function_name,not_found:true});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function TemporaryRemoveBreakPoints(af,Z){
|
|||
|
|
var ag=d(af);
|
|||
|
|
var ah=[];
|
|||
|
|
Z.push({break_points_update:ah});
|
|||
|
|
var ai=[];
|
|||
|
|
for(var x=0;x<ag.length;x++){
|
|||
|
|
var aj=ag[x];
|
|||
|
|
aj.clear();
|
|||
|
|
var ak=c(af,
|
|||
|
|
aj.line(),aj.column());
|
|||
|
|
var al={
|
|||
|
|
position:ak,
|
|||
|
|
line:aj.line(),
|
|||
|
|
column:aj.column()
|
|||
|
|
};
|
|||
|
|
ai.push(al);
|
|||
|
|
}
|
|||
|
|
return function(m,am){
|
|||
|
|
for(var x=0;x<ag.length;x++){
|
|||
|
|
var aj=ag[x];
|
|||
|
|
if(am){
|
|||
|
|
var an=aj.cloneForOtherScript(am);
|
|||
|
|
an.set(am);
|
|||
|
|
ah.push({
|
|||
|
|
type:"copied_to_old",
|
|||
|
|
id:aj.number(),
|
|||
|
|
new_id:an.number(),
|
|||
|
|
positions:ai[x]
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
var ao=m.Translate(
|
|||
|
|
ai[x].position,
|
|||
|
|
PosTranslator.ShiftWithTopInsideChunkHandler);
|
|||
|
|
var ap=
|
|||
|
|
af.locationFromPosition(ao,false);
|
|||
|
|
aj.update_positions(ap.line,ap.column);
|
|||
|
|
var aq={
|
|||
|
|
position:ao,
|
|||
|
|
line:ap.line,
|
|||
|
|
column:ap.column
|
|||
|
|
};
|
|||
|
|
aj.set(af);
|
|||
|
|
ah.push({type:"position_changed",
|
|||
|
|
id:aj.number(),
|
|||
|
|
old_positions:ai[x],
|
|||
|
|
new_positions:aq
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
function Assert(ar,as){
|
|||
|
|
if(!ar){
|
|||
|
|
if(as){
|
|||
|
|
throw"Assert "+as;
|
|||
|
|
}else{
|
|||
|
|
throw"Assert";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function DiffChunk(at,au,av,aw){
|
|||
|
|
this.pos1=at;
|
|||
|
|
this.pos2=au;
|
|||
|
|
this.len1=av;
|
|||
|
|
this.len2=aw;
|
|||
|
|
}
|
|||
|
|
function PosTranslator(ax){
|
|||
|
|
var ay=new e();
|
|||
|
|
var az=0;
|
|||
|
|
for(var x=0;x<ax.length;x+=3){
|
|||
|
|
var aA=ax[x];
|
|||
|
|
var aB=aA+az;
|
|||
|
|
var aC=ax[x+1];
|
|||
|
|
var aD=ax[x+2];
|
|||
|
|
ay.push(new DiffChunk(aA,aB,aC-aA,
|
|||
|
|
aD-aB));
|
|||
|
|
az=aD-aC;
|
|||
|
|
}
|
|||
|
|
this.chunks=ay;
|
|||
|
|
}
|
|||
|
|
PosTranslator.prototype.GetChunks=function(){
|
|||
|
|
return this.chunks;
|
|||
|
|
};
|
|||
|
|
PosTranslator.prototype.Translate=function(aE,aF){
|
|||
|
|
var aG=this.chunks;
|
|||
|
|
if(aG.length==0||aE<aG[0].pos1){
|
|||
|
|
return aE;
|
|||
|
|
}
|
|||
|
|
var aH=0;
|
|||
|
|
var aI=aG.length-1;
|
|||
|
|
while(aH<aI){
|
|||
|
|
var aJ=f((aH+aI)/2);
|
|||
|
|
if(aE<aG[aJ+1].pos1){
|
|||
|
|
aI=aJ;
|
|||
|
|
}else{
|
|||
|
|
aH=aJ+1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var aK=aG[aH];
|
|||
|
|
if(aE>=aK.pos1+aK.len1){
|
|||
|
|
return aE+aK.pos2+aK.len2-aK.pos1-aK.len1;
|
|||
|
|
}
|
|||
|
|
if(!aF){
|
|||
|
|
aF=PosTranslator.DefaultInsideChunkHandler;
|
|||
|
|
}
|
|||
|
|
return aF(aE,aK);
|
|||
|
|
};
|
|||
|
|
PosTranslator.DefaultInsideChunkHandler=function(aE,aL){
|
|||
|
|
Assert(false,"Cannot translate position in changed area");
|
|||
|
|
};
|
|||
|
|
PosTranslator.ShiftWithTopInsideChunkHandler=
|
|||
|
|
function(aE,aL){
|
|||
|
|
return aE-aL.pos1+aL.pos2;
|
|||
|
|
};
|
|||
|
|
var i={
|
|||
|
|
UNCHANGED:"unchanged",
|
|||
|
|
SOURCE_CHANGED:"source changed",
|
|||
|
|
CHANGED:"changed",
|
|||
|
|
DAMAGED:"damaged"
|
|||
|
|
};
|
|||
|
|
function CodeInfoTreeNode(aM,aN,aO){
|
|||
|
|
this.info=aM;
|
|||
|
|
this.children=aN;
|
|||
|
|
this.array_index=aO;
|
|||
|
|
this.parent=(void 0);
|
|||
|
|
this.status=i.UNCHANGED;
|
|||
|
|
this.status_explanation=(void 0);
|
|||
|
|
this.new_start_pos=(void 0);
|
|||
|
|
this.new_end_pos=(void 0);
|
|||
|
|
this.corresponding_node=(void 0);
|
|||
|
|
this.unmatched_new_nodes=(void 0);
|
|||
|
|
this.textual_corresponding_node=(void 0);
|
|||
|
|
this.textually_unmatched_new_nodes=(void 0);
|
|||
|
|
this.live_shared_function_infos=(void 0);
|
|||
|
|
}
|
|||
|
|
function BuildCodeInfoTree(aP){
|
|||
|
|
var aQ=0;
|
|||
|
|
function BuildNode(){
|
|||
|
|
var aR=aQ;
|
|||
|
|
aQ++;
|
|||
|
|
var aS=new e();
|
|||
|
|
while(aQ<aP.length&&
|
|||
|
|
aP[aQ].outer_index==aR){
|
|||
|
|
aS.push(BuildNode());
|
|||
|
|
}
|
|||
|
|
var w=new CodeInfoTreeNode(aP[aR],aS,
|
|||
|
|
aR);
|
|||
|
|
for(var x=0;x<aS.length;x++){
|
|||
|
|
aS[x].parent=w;
|
|||
|
|
}
|
|||
|
|
return w;
|
|||
|
|
}
|
|||
|
|
var aT=BuildNode();
|
|||
|
|
Assert(aQ==aP.length);
|
|||
|
|
return aT;
|
|||
|
|
}
|
|||
|
|
function MarkChangedFunctions(aU,ay){
|
|||
|
|
var aV=new function(){
|
|||
|
|
var aW=0;
|
|||
|
|
var aX=0;
|
|||
|
|
this.current=function(){return ay[aW];};
|
|||
|
|
this.next=function(){
|
|||
|
|
var aK=ay[aW];
|
|||
|
|
aX=aK.pos2+aK.len2-(aK.pos1+aK.len1);
|
|||
|
|
aW++;
|
|||
|
|
};
|
|||
|
|
this.done=function(){return aW>=ay.length;};
|
|||
|
|
this.TranslatePos=function(aE){return aE+aX;};
|
|||
|
|
};
|
|||
|
|
function ProcessInternals(aY){
|
|||
|
|
aY.new_start_pos=aV.TranslatePos(
|
|||
|
|
aY.info.start_position);
|
|||
|
|
var aZ=0;
|
|||
|
|
var ba=false;
|
|||
|
|
var bb=false;
|
|||
|
|
while(!aV.done()&&
|
|||
|
|
aV.current().pos1<aY.info.end_position){
|
|||
|
|
if(aZ<aY.children.length){
|
|||
|
|
var bc=aY.children[aZ];
|
|||
|
|
if(bc.info.end_position<=aV.current().pos1){
|
|||
|
|
ProcessUnchangedChild(bc);
|
|||
|
|
aZ++;
|
|||
|
|
continue;
|
|||
|
|
}else if(bc.info.start_position>=
|
|||
|
|
aV.current().pos1+aV.current().len1){
|
|||
|
|
ba=true;
|
|||
|
|
aV.next();
|
|||
|
|
continue;
|
|||
|
|
}else if(bc.info.start_position<=aV.current().pos1&&
|
|||
|
|
bc.info.end_position>=aV.current().pos1+
|
|||
|
|
aV.current().len1){
|
|||
|
|
ProcessInternals(bc);
|
|||
|
|
bb=bb||
|
|||
|
|
(bc.status!=i.UNCHANGED);
|
|||
|
|
ba=ba||
|
|||
|
|
(bc.status==i.DAMAGED);
|
|||
|
|
aZ++;
|
|||
|
|
continue;
|
|||
|
|
}else{
|
|||
|
|
ba=true;
|
|||
|
|
bc.status=i.DAMAGED;
|
|||
|
|
bc.status_explanation=
|
|||
|
|
"Text diff overlaps with function boundary";
|
|||
|
|
aZ++;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
if(aV.current().pos1+aV.current().len1<=
|
|||
|
|
aY.info.end_position){
|
|||
|
|
aY.status=i.CHANGED;
|
|||
|
|
aV.next();
|
|||
|
|
continue;
|
|||
|
|
}else{
|
|||
|
|
aY.status=i.DAMAGED;
|
|||
|
|
aY.status_explanation=
|
|||
|
|
"Text diff overlaps with function boundary";
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Assert("Unreachable",false);
|
|||
|
|
}
|
|||
|
|
while(aZ<aY.children.length){
|
|||
|
|
var bc=aY.children[aZ];
|
|||
|
|
ProcessUnchangedChild(bc);
|
|||
|
|
aZ++;
|
|||
|
|
}
|
|||
|
|
if(ba){
|
|||
|
|
aY.status=i.CHANGED;
|
|||
|
|
}else if(bb){
|
|||
|
|
aY.status=i.SOURCE_CHANGED;
|
|||
|
|
}
|
|||
|
|
aY.new_end_pos=
|
|||
|
|
aV.TranslatePos(aY.info.end_position);
|
|||
|
|
}
|
|||
|
|
function ProcessUnchangedChild(w){
|
|||
|
|
w.new_start_pos=aV.TranslatePos(w.info.start_position);
|
|||
|
|
w.new_end_pos=aV.TranslatePos(w.info.end_position);
|
|||
|
|
}
|
|||
|
|
ProcessInternals(aU);
|
|||
|
|
}
|
|||
|
|
function FindCorrespondingFunctions(bd,be){
|
|||
|
|
function ProcessNode(v,bf){
|
|||
|
|
var bg=
|
|||
|
|
IsFunctionContextLocalsChanged(v.info,bf.info);
|
|||
|
|
if(bg){
|
|||
|
|
v.status=i.CHANGED;
|
|||
|
|
}
|
|||
|
|
var bh=v.children;
|
|||
|
|
var bi=bf.children;
|
|||
|
|
var bj=[];
|
|||
|
|
var bk=[];
|
|||
|
|
var bl=0;
|
|||
|
|
var bm=0;
|
|||
|
|
while(bl<bh.length){
|
|||
|
|
if(bh[bl].status==i.DAMAGED){
|
|||
|
|
bl++;
|
|||
|
|
}else if(bm<bi.length){
|
|||
|
|
if(bi[bm].info.start_position<
|
|||
|
|
bh[bl].new_start_pos){
|
|||
|
|
bj.push(bi[bm]);
|
|||
|
|
bk.push(bi[bm]);
|
|||
|
|
bm++;
|
|||
|
|
}else if(bi[bm].info.start_position==
|
|||
|
|
bh[bl].new_start_pos){
|
|||
|
|
if(bi[bm].info.end_position==
|
|||
|
|
bh[bl].new_end_pos){
|
|||
|
|
bh[bl].corresponding_node=
|
|||
|
|
bi[bm];
|
|||
|
|
bh[bl].textual_corresponding_node=
|
|||
|
|
bi[bm];
|
|||
|
|
if(bg){
|
|||
|
|
bh[bl].status=i.DAMAGED;
|
|||
|
|
bh[bl].status_explanation=
|
|||
|
|
"Enclosing function is now incompatible. "+
|
|||
|
|
bg;
|
|||
|
|
bh[bl].corresponding_node=(void 0);
|
|||
|
|
}else if(bh[bl].status!=
|
|||
|
|
i.UNCHANGED){
|
|||
|
|
ProcessNode(bh[bl],
|
|||
|
|
bi[bm]);
|
|||
|
|
if(bh[bl].status==i.DAMAGED){
|
|||
|
|
bj.push(
|
|||
|
|
bh[bl].corresponding_node);
|
|||
|
|
bh[bl].corresponding_node=(void 0);
|
|||
|
|
v.status=i.CHANGED;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
bh[bl].status=i.DAMAGED;
|
|||
|
|
bh[bl].status_explanation=
|
|||
|
|
"No corresponding function in new script found";
|
|||
|
|
v.status=i.CHANGED;
|
|||
|
|
bj.push(bi[bm]);
|
|||
|
|
bk.push(bi[bm]);
|
|||
|
|
}
|
|||
|
|
bm++;
|
|||
|
|
bl++;
|
|||
|
|
}else{
|
|||
|
|
bh[bl].status=i.DAMAGED;
|
|||
|
|
bh[bl].status_explanation=
|
|||
|
|
"No corresponding function in new script found";
|
|||
|
|
v.status=i.CHANGED;
|
|||
|
|
bl++;
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
bh[bl].status=i.DAMAGED;
|
|||
|
|
bh[bl].status_explanation=
|
|||
|
|
"No corresponding function in new script found";
|
|||
|
|
v.status=i.CHANGED;
|
|||
|
|
bl++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
while(bm<bi.length){
|
|||
|
|
bj.push(bi[bm]);
|
|||
|
|
bk.push(bi[bm]);
|
|||
|
|
bm++;
|
|||
|
|
}
|
|||
|
|
if(v.status==i.CHANGED){
|
|||
|
|
if(v.info.param_num!=bf.info.param_num){
|
|||
|
|
v.status=i.DAMAGED;
|
|||
|
|
v.status_explanation="Changed parameter number: "+
|
|||
|
|
v.info.param_num+" and "+bf.info.param_num;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
v.unmatched_new_nodes=bj;
|
|||
|
|
v.textually_unmatched_new_nodes=
|
|||
|
|
bk;
|
|||
|
|
}
|
|||
|
|
ProcessNode(bd,be);
|
|||
|
|
bd.corresponding_node=be;
|
|||
|
|
bd.textual_corresponding_node=be;
|
|||
|
|
Assert(bd.status!=i.DAMAGED,
|
|||
|
|
"Script became damaged");
|
|||
|
|
}
|
|||
|
|
function FindLiveSharedInfos(bd,N){
|
|||
|
|
var bn=%LiveEditFindSharedFunctionInfosForScript(N);
|
|||
|
|
var bo=new e();
|
|||
|
|
for(var x=0;x<bn.length;x++){
|
|||
|
|
bo.push(new SharedInfoWrapper(bn[x]));
|
|||
|
|
}
|
|||
|
|
function FindFunctionInfos(P){
|
|||
|
|
var bp=[];
|
|||
|
|
for(var x=0;x<bo.length;x++){
|
|||
|
|
var bq=bo[x];
|
|||
|
|
if(bq.start_position==P.start_position&&
|
|||
|
|
bq.end_position==P.end_position){
|
|||
|
|
bp.push(bq);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(bp.length>0){
|
|||
|
|
return bp;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function TraverseTree(w){
|
|||
|
|
w.live_shared_function_infos=FindFunctionInfos(w.info);
|
|||
|
|
for(var x=0;x<w.children.length;x++){
|
|||
|
|
TraverseTree(w.children[x]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
TraverseTree(bd);
|
|||
|
|
}
|
|||
|
|
function FunctionCompileInfo(br){
|
|||
|
|
this.function_name=br[0];
|
|||
|
|
this.start_position=br[1];
|
|||
|
|
this.end_position=br[2];
|
|||
|
|
this.param_num=br[3];
|
|||
|
|
this.code=br[4];
|
|||
|
|
this.code_scope_info=br[5];
|
|||
|
|
this.scope_info=br[6];
|
|||
|
|
this.outer_index=br[7];
|
|||
|
|
this.shared_function_info=br[8];
|
|||
|
|
this.next_sibling_index=null;
|
|||
|
|
this.raw_array=br;
|
|||
|
|
}
|
|||
|
|
function SharedInfoWrapper(br){
|
|||
|
|
this.function_name=br[0];
|
|||
|
|
this.start_position=br[1];
|
|||
|
|
this.end_position=br[2];
|
|||
|
|
this.info=br[3];
|
|||
|
|
this.raw_array=br;
|
|||
|
|
}
|
|||
|
|
function PatchPositions(ad,ax,ae){
|
|||
|
|
if(ad.live_shared_function_infos){
|
|||
|
|
ad.live_shared_function_infos.forEach(function(L){
|
|||
|
|
%LiveEditPatchFunctionPositions(L.raw_array,
|
|||
|
|
ax);
|
|||
|
|
});
|
|||
|
|
ae.push({name:ad.info.function_name});
|
|||
|
|
}else{
|
|||
|
|
ae.push(
|
|||
|
|
{name:ad.info.function_name,info_not_found:true});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function CreateNameForOldScript(N){
|
|||
|
|
return N.name+" (old)";
|
|||
|
|
}
|
|||
|
|
function IsFunctionContextLocalsChanged(bs,bt){
|
|||
|
|
var bu=bs.scope_info;
|
|||
|
|
var bv=bt.scope_info;
|
|||
|
|
var bw;
|
|||
|
|
var bx;
|
|||
|
|
if(bu){
|
|||
|
|
bw=bu.toString();
|
|||
|
|
}else{
|
|||
|
|
bw="";
|
|||
|
|
}
|
|||
|
|
if(bv){
|
|||
|
|
bx=bv.toString();
|
|||
|
|
}else{
|
|||
|
|
bx="";
|
|||
|
|
}
|
|||
|
|
if(bw!=bx){
|
|||
|
|
return"Variable map changed: ["+bw+
|
|||
|
|
"] => ["+bx+"]";
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var by;
|
|||
|
|
function CheckStackActivations(old_shared_wrapper_list,
|
|||
|
|
new_shared_list,
|
|||
|
|
Z){
|
|||
|
|
var bz=new e();
|
|||
|
|
for(var x=0;x<old_shared_wrapper_list.length;x++){
|
|||
|
|
bz[x]=old_shared_wrapper_list[x].info;
|
|||
|
|
}
|
|||
|
|
var bA=%LiveEditCheckAndDropActivations(
|
|||
|
|
bz,new_shared_list,true);
|
|||
|
|
if(bA[old_shared_wrapper_list.length]){
|
|||
|
|
throw new Failure(bA[old_shared_wrapper_list.length]);
|
|||
|
|
}
|
|||
|
|
var bB=new e();
|
|||
|
|
var bC=new e();
|
|||
|
|
for(var x=0;x<bz.length;x++){
|
|||
|
|
var bD=old_shared_wrapper_list[x];
|
|||
|
|
if(bA[x]==by.REPLACED_ON_ACTIVE_STACK){
|
|||
|
|
bC.push({name:bD.function_name});
|
|||
|
|
}else if(bA[x]!=by.AVAILABLE_FOR_PATCH){
|
|||
|
|
var bE={
|
|||
|
|
name:bD.function_name,
|
|||
|
|
start_pos:bD.start_position,
|
|||
|
|
end_pos:bD.end_position,
|
|||
|
|
replace_problem:
|
|||
|
|
by.SymbolName(bA[x])
|
|||
|
|
};
|
|||
|
|
bB.push(bE);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(bC.length>0){
|
|||
|
|
Z.push({dropped_from_stack:bC});
|
|||
|
|
}
|
|||
|
|
if(bB.length>0){
|
|||
|
|
Z.push({functions_on_stack:bB});
|
|||
|
|
throw new Failure("Blocked by functions on stack");
|
|||
|
|
}
|
|||
|
|
return bC.length;
|
|||
|
|
}
|
|||
|
|
var by={
|
|||
|
|
AVAILABLE_FOR_PATCH:1,
|
|||
|
|
BLOCKED_ON_ACTIVE_STACK:2,
|
|||
|
|
BLOCKED_ON_OTHER_STACK:3,
|
|||
|
|
BLOCKED_UNDER_NATIVE_CODE:4,
|
|||
|
|
REPLACED_ON_ACTIVE_STACK:5,
|
|||
|
|
BLOCKED_UNDER_GENERATOR:6,
|
|||
|
|
BLOCKED_ACTIVE_GENERATOR:7,
|
|||
|
|
BLOCKED_NO_NEW_TARGET_ON_RESTART:8
|
|||
|
|
};
|
|||
|
|
by.SymbolName=function(bF){
|
|||
|
|
var bG=by;
|
|||
|
|
for(var bH in bG){
|
|||
|
|
if(bG[bH]==bF){
|
|||
|
|
return bH;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
function Failure(as){
|
|||
|
|
this.message=as;
|
|||
|
|
}
|
|||
|
|
Failure.prototype.toString=function(){
|
|||
|
|
return"LiveEdit Failure: "+this.message;
|
|||
|
|
};
|
|||
|
|
function CopyErrorPositionToDetails(bI,p){
|
|||
|
|
function createPositionStruct(N,bJ){
|
|||
|
|
if(bJ==-1)return;
|
|||
|
|
var bK=N.locationFromPosition(bJ,true);
|
|||
|
|
if(bK==null)return;
|
|||
|
|
return{
|
|||
|
|
line:bK.line+1,
|
|||
|
|
column:bK.column+1,
|
|||
|
|
position:bJ
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
if(!("scriptObject"in bI)||!("startPosition"in bI)){
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var N=bI.scriptObject;
|
|||
|
|
var bL={
|
|||
|
|
start:createPositionStruct(N,bI.startPosition),
|
|||
|
|
end:createPositionStruct(N,bI.endPosition)
|
|||
|
|
};
|
|||
|
|
p.position=bL;
|
|||
|
|
}
|
|||
|
|
function GetPcFromSourcePos(bM,bN){
|
|||
|
|
return %GetFunctionCodePositionFromSource(bM,bN);
|
|||
|
|
}
|
|||
|
|
function SetScriptSource(N,bO,bP,Z){
|
|||
|
|
var j=N.source;
|
|||
|
|
var bQ=CompareStrings(j,bO);
|
|||
|
|
return ApplyPatchMultiChunk(N,bQ,bO,bP,
|
|||
|
|
Z);
|
|||
|
|
}
|
|||
|
|
function CompareStrings(bR,bS){
|
|||
|
|
return %LiveEditCompareStrings(bR,bS);
|
|||
|
|
}
|
|||
|
|
function ApplySingleChunkPatch(N,change_pos,change_len,new_str,
|
|||
|
|
Z){
|
|||
|
|
var j=N.source;
|
|||
|
|
var bO=j.substring(0,change_pos)+
|
|||
|
|
new_str+j.substring(change_pos+change_len);
|
|||
|
|
return ApplyPatchMultiChunk(N,
|
|||
|
|
[change_pos,change_pos+change_len,change_pos+new_str.length],
|
|||
|
|
bO,false,Z);
|
|||
|
|
}
|
|||
|
|
function DescribeChangeTree(bd){
|
|||
|
|
function ProcessOldNode(w){
|
|||
|
|
var bT=[];
|
|||
|
|
for(var x=0;x<w.children.length;x++){
|
|||
|
|
var bc=w.children[x];
|
|||
|
|
if(bc.status!=i.UNCHANGED){
|
|||
|
|
bT.push(ProcessOldNode(bc));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bU=[];
|
|||
|
|
if(w.textually_unmatched_new_nodes){
|
|||
|
|
for(var x=0;x<w.textually_unmatched_new_nodes.length;x++){
|
|||
|
|
var bc=w.textually_unmatched_new_nodes[x];
|
|||
|
|
bU.push(ProcessNewNode(bc));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bV={
|
|||
|
|
name:w.info.function_name,
|
|||
|
|
positions:DescribePositions(w),
|
|||
|
|
status:w.status,
|
|||
|
|
children:bT,
|
|||
|
|
new_children:bU
|
|||
|
|
};
|
|||
|
|
if(w.status_explanation){
|
|||
|
|
bV.status_explanation=w.status_explanation;
|
|||
|
|
}
|
|||
|
|
if(w.textual_corresponding_node){
|
|||
|
|
bV.new_positions=DescribePositions(w.textual_corresponding_node);
|
|||
|
|
}
|
|||
|
|
return bV;
|
|||
|
|
}
|
|||
|
|
function ProcessNewNode(w){
|
|||
|
|
var bT=[];
|
|||
|
|
if(false){
|
|||
|
|
for(var x=0;x<w.children.length;x++){
|
|||
|
|
bT.push(ProcessNewNode(w.children[x]));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bV={
|
|||
|
|
name:w.info.function_name,
|
|||
|
|
positions:DescribePositions(w),
|
|||
|
|
children:bT,
|
|||
|
|
};
|
|||
|
|
return bV;
|
|||
|
|
}
|
|||
|
|
function DescribePositions(w){
|
|||
|
|
return{
|
|||
|
|
start_position:w.info.start_position,
|
|||
|
|
end_position:w.info.end_position
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
return ProcessOldNode(bd);
|
|||
|
|
}
|
|||
|
|
var bW={};
|
|||
|
|
bW.SetScriptSource=SetScriptSource;
|
|||
|
|
bW.ApplyPatchMultiChunk=ApplyPatchMultiChunk;
|
|||
|
|
bW.Failure=Failure;
|
|||
|
|
bW.GetPcFromSourcePos=GetPcFromSourcePos;
|
|||
|
|
bW.TestApi={
|
|||
|
|
PosTranslator:PosTranslator,
|
|||
|
|
CompareStrings:CompareStrings,
|
|||
|
|
ApplySingleChunkPatch:ApplySingleChunkPatch
|
|||
|
|
};
|
|||
|
|
a.Debug.LiveEdit=bW;
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
\ prologue<75>R
|
|||
|
|
(function(a,b,c){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var d=(void 0);
|
|||
|
|
var e=(void 0);
|
|||
|
|
var f=%ExportFromRuntime({});
|
|||
|
|
var g=(void 0);
|
|||
|
|
function SetupTypedArray(h){
|
|||
|
|
h.next=g;
|
|||
|
|
g=h;
|
|||
|
|
}
|
|||
|
|
function Export(h){
|
|||
|
|
h(f);
|
|||
|
|
}
|
|||
|
|
function Import(h){
|
|||
|
|
h.next=d;
|
|||
|
|
d=h;
|
|||
|
|
}
|
|||
|
|
function ImportNow(i){
|
|||
|
|
return f[i];
|
|||
|
|
}
|
|||
|
|
function ImportFromExperimental(h){
|
|||
|
|
h.next=e;
|
|||
|
|
e=h;
|
|||
|
|
}
|
|||
|
|
function SetFunctionName(h,i,j){
|
|||
|
|
if((typeof(i)==='symbol')){
|
|||
|
|
i="["+%SymbolDescription(i)+"]";
|
|||
|
|
}
|
|||
|
|
if((j===(void 0))){
|
|||
|
|
%FunctionSetName(h,i);
|
|||
|
|
}else{
|
|||
|
|
%FunctionSetName(h,j+" "+i);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function InstallConstants(k,l){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
%OptimizeObjectForAddingMultipleProperties(k,l.length>>1);
|
|||
|
|
var m=2|4|1;
|
|||
|
|
for(var n=0;n<l.length;n+=2){
|
|||
|
|
var i=l[n];
|
|||
|
|
var o=l[n+1];
|
|||
|
|
%AddNamedProperty(k,i,o,m);
|
|||
|
|
}
|
|||
|
|
%ToFastProperties(k);
|
|||
|
|
}
|
|||
|
|
function InstallFunctions(k,m,p){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
%OptimizeObjectForAddingMultipleProperties(k,p.length>>1);
|
|||
|
|
for(var n=0;n<p.length;n+=2){
|
|||
|
|
var q=p[n];
|
|||
|
|
var h=p[n+1];
|
|||
|
|
SetFunctionName(h,q);
|
|||
|
|
%FunctionRemovePrototype(h);
|
|||
|
|
%AddNamedProperty(k,q,h,m);
|
|||
|
|
%SetNativeFlag(h);
|
|||
|
|
}
|
|||
|
|
%ToFastProperties(k);
|
|||
|
|
}
|
|||
|
|
function InstallGetter(k,i,r,m,j){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
if((m===(void 0)))m=2;
|
|||
|
|
SetFunctionName(r,i,(j===(void 0))?"get":j);
|
|||
|
|
%FunctionRemovePrototype(r);
|
|||
|
|
%DefineGetterPropertyUnchecked(k,i,r,m);
|
|||
|
|
%SetNativeFlag(r);
|
|||
|
|
}
|
|||
|
|
function InstallGetterSetter(k,i,r,s,m){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
if((m===(void 0)))m=2;
|
|||
|
|
SetFunctionName(r,i,"get");
|
|||
|
|
SetFunctionName(s,i,"set");
|
|||
|
|
%FunctionRemovePrototype(r);
|
|||
|
|
%FunctionRemovePrototype(s);
|
|||
|
|
%DefineAccessorPropertyUnchecked(k,i,r,s,2);
|
|||
|
|
%SetNativeFlag(r);
|
|||
|
|
%SetNativeFlag(s);
|
|||
|
|
}
|
|||
|
|
function OverrideFunction(k,i,h,t){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
%object_define_property(k,i,{value:h,
|
|||
|
|
writeable:true,
|
|||
|
|
configurable:true,
|
|||
|
|
enumerable:false});
|
|||
|
|
SetFunctionName(h,i);
|
|||
|
|
if(!t)%FunctionRemovePrototype(h);
|
|||
|
|
%SetNativeFlag(h);
|
|||
|
|
}
|
|||
|
|
function SetUpLockedPrototype(
|
|||
|
|
constructor,fields,methods){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var u=constructor.prototype;
|
|||
|
|
var v=(methods.length>>1)+(fields?fields.length:0);
|
|||
|
|
if(v>=4){
|
|||
|
|
%OptimizeObjectForAddingMultipleProperties(u,v);
|
|||
|
|
}
|
|||
|
|
if(fields){
|
|||
|
|
for(var n=0;n<fields.length;n++){
|
|||
|
|
%AddNamedProperty(u,fields[n],
|
|||
|
|
(void 0),2|4);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for(var n=0;n<methods.length;n+=2){
|
|||
|
|
var q=methods[n];
|
|||
|
|
var h=methods[n+1];
|
|||
|
|
%AddNamedProperty(u,q,h,2|4|1);
|
|||
|
|
%SetNativeFlag(h);
|
|||
|
|
}
|
|||
|
|
%InternalSetPrototype(u,null);
|
|||
|
|
%ToFastProperties(u);
|
|||
|
|
}
|
|||
|
|
function PostNatives(b){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
for(;!(d===(void 0));d=d.next){
|
|||
|
|
d(f);
|
|||
|
|
}
|
|||
|
|
var w=[
|
|||
|
|
"AddBoundMethod",
|
|||
|
|
"ArrayToString",
|
|||
|
|
"AsyncFunctionNext",
|
|||
|
|
"AsyncFunctionThrow",
|
|||
|
|
"ErrorToString",
|
|||
|
|
"GetIterator",
|
|||
|
|
"GetMethod",
|
|||
|
|
"IntlParseDate",
|
|||
|
|
"IntlParseNumber",
|
|||
|
|
"IsNaN",
|
|||
|
|
"MakeError",
|
|||
|
|
"MakeRangeError",
|
|||
|
|
"MakeTypeError",
|
|||
|
|
"MapEntries",
|
|||
|
|
"MapIterator",
|
|||
|
|
"MapIteratorNext",
|
|||
|
|
"MaxSimple",
|
|||
|
|
"MinSimple",
|
|||
|
|
"NumberIsInteger",
|
|||
|
|
"PromiseChain",
|
|||
|
|
"PromiseDefer",
|
|||
|
|
"PromiseAccept",
|
|||
|
|
"PromiseCreateRejected",
|
|||
|
|
"PromiseCreateResolved",
|
|||
|
|
"PromiseThen",
|
|||
|
|
"RegExpSubclassExecJS",
|
|||
|
|
"RegExpSubclassMatch",
|
|||
|
|
"RegExpSubclassReplace",
|
|||
|
|
"RegExpSubclassSearch",
|
|||
|
|
"RegExpSubclassSplit",
|
|||
|
|
"RegExpSubclassTest",
|
|||
|
|
"SetIterator",
|
|||
|
|
"SetIteratorNext",
|
|||
|
|
"SetValues",
|
|||
|
|
"SymbolToString",
|
|||
|
|
"ToLocaleLowerCaseI18N",
|
|||
|
|
"ToLocaleUpperCaseI18N",
|
|||
|
|
"ToLowerCaseI18N",
|
|||
|
|
"ToPositiveInteger",
|
|||
|
|
"ToUpperCaseI18N",
|
|||
|
|
"is_concat_spreadable_symbol",
|
|||
|
|
"iterator_symbol",
|
|||
|
|
"promise_result_symbol",
|
|||
|
|
"promise_state_symbol",
|
|||
|
|
"object_freeze",
|
|||
|
|
"object_is_frozen",
|
|||
|
|
"object_is_sealed",
|
|||
|
|
"reflect_apply",
|
|||
|
|
"reflect_construct",
|
|||
|
|
"regexp_flags_symbol",
|
|||
|
|
"to_string_tag_symbol",
|
|||
|
|
"object_to_string",
|
|||
|
|
"species_symbol",
|
|||
|
|
"match_symbol",
|
|||
|
|
"replace_symbol",
|
|||
|
|
"search_symbol",
|
|||
|
|
"split_symbol",
|
|||
|
|
];
|
|||
|
|
var x={};
|
|||
|
|
%OptimizeObjectForAddingMultipleProperties(
|
|||
|
|
x,w.length);
|
|||
|
|
for(var q of w){
|
|||
|
|
x[q]=f[q];
|
|||
|
|
}
|
|||
|
|
%ToFastProperties(x);
|
|||
|
|
f=x;
|
|||
|
|
b.PostNatives=(void 0);
|
|||
|
|
b.ImportFromExperimental=(void 0);
|
|||
|
|
}
|
|||
|
|
function PostExperimentals(b){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
%ExportExperimentalFromRuntime(f);
|
|||
|
|
for(;!(d===(void 0));d=d.next){
|
|||
|
|
d(f);
|
|||
|
|
}
|
|||
|
|
for(;!(e===(void 0));
|
|||
|
|
e=e.next){
|
|||
|
|
e(f);
|
|||
|
|
}
|
|||
|
|
b.Export=(void 0);
|
|||
|
|
b.PostDebug=(void 0);
|
|||
|
|
b.PostExperimentals=(void 0);
|
|||
|
|
g=(void 0);
|
|||
|
|
}
|
|||
|
|
function PostDebug(b){
|
|||
|
|
for(;!(d===(void 0));d=d.next){
|
|||
|
|
d(f);
|
|||
|
|
}
|
|||
|
|
f=(void 0);
|
|||
|
|
b.Export=(void 0);
|
|||
|
|
b.Import=(void 0);
|
|||
|
|
b.ImportNow=(void 0);
|
|||
|
|
b.PostDebug=(void 0);
|
|||
|
|
b.PostExperimentals=(void 0);
|
|||
|
|
g=(void 0);
|
|||
|
|
}
|
|||
|
|
function InitializeBuiltinTypedArrays(b,y,z){
|
|||
|
|
var A=g;
|
|||
|
|
for(;!(A===(void 0));A=A.next){
|
|||
|
|
A(y,z);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
%OptimizeObjectForAddingMultipleProperties(b,14);
|
|||
|
|
b.Import=Import;
|
|||
|
|
b.ImportNow=ImportNow;
|
|||
|
|
b.Export=Export;
|
|||
|
|
b.ImportFromExperimental=ImportFromExperimental;
|
|||
|
|
b.SetFunctionName=SetFunctionName;
|
|||
|
|
b.InstallConstants=InstallConstants;
|
|||
|
|
b.InstallFunctions=InstallFunctions;
|
|||
|
|
b.InstallGetter=InstallGetter;
|
|||
|
|
b.InstallGetterSetter=InstallGetterSetter;
|
|||
|
|
b.OverrideFunction=OverrideFunction;
|
|||
|
|
b.SetUpLockedPrototype=SetUpLockedPrototype;
|
|||
|
|
b.PostNatives=PostNatives;
|
|||
|
|
b.PostExperimentals=PostExperimentals;
|
|||
|
|
b.PostDebug=PostDebug;
|
|||
|
|
%ToFastProperties(b);
|
|||
|
|
%OptimizeObjectForAddingMultipleProperties(c,5);
|
|||
|
|
c.logStackTrace=function logStackTrace(){
|
|||
|
|
%DebugTrace();
|
|||
|
|
};
|
|||
|
|
c.log=function log(){
|
|||
|
|
let message='';
|
|||
|
|
for(const arg of arguments){
|
|||
|
|
message+=arg;
|
|||
|
|
}
|
|||
|
|
%GlobalPrint(message);
|
|||
|
|
};
|
|||
|
|
c.createPrivateSymbol=function createPrivateSymbol(i){
|
|||
|
|
return %CreatePrivateSymbol(i);
|
|||
|
|
};
|
|||
|
|
c.simpleBind=function simpleBind(B,C){
|
|||
|
|
return function(...args){
|
|||
|
|
return %reflect_apply(B,C,args);
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
c.uncurryThis=function uncurryThis(B){
|
|||
|
|
return function(C,...args){
|
|||
|
|
return %reflect_apply(B,C,args);
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
%ToFastProperties(c);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
runtime5
|
|||
|
|
(function(a,b){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Array;
|
|||
|
|
var d=a.Boolean;
|
|||
|
|
var e=a.String;
|
|||
|
|
var f;
|
|||
|
|
var g;
|
|||
|
|
var h;
|
|||
|
|
b.Import(function(i){
|
|||
|
|
f=i.MakeRangeError;
|
|||
|
|
g=i.MakeTypeError;
|
|||
|
|
h=i.species_symbol;
|
|||
|
|
});
|
|||
|
|
function ToPositiveInteger(j,k){
|
|||
|
|
var l=(%_ToInteger(j))+0;
|
|||
|
|
if(l<0)throw f(k);
|
|||
|
|
return l;
|
|||
|
|
}
|
|||
|
|
function MaxSimple(m,n){
|
|||
|
|
return m>n?m:n;
|
|||
|
|
}
|
|||
|
|
function MinSimple(m,n){
|
|||
|
|
return m>n?n:m;
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(MaxSimple);
|
|||
|
|
%SetForceInlineFlag(MinSimple);
|
|||
|
|
function SpeciesConstructor(o,p){
|
|||
|
|
var q=o.constructor;
|
|||
|
|
if((q===(void 0))){
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
if(!(%_IsJSReceiver(q))){
|
|||
|
|
throw g(28);
|
|||
|
|
}
|
|||
|
|
var r=q[h];
|
|||
|
|
if((r==null)){
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
if(%IsConstructor(r)){
|
|||
|
|
return r;
|
|||
|
|
}
|
|||
|
|
throw g(234);
|
|||
|
|
}
|
|||
|
|
%FunctionSetPrototype(c,new c(0));
|
|||
|
|
b.Export(function(s){
|
|||
|
|
s.MaxSimple=MaxSimple;
|
|||
|
|
s.MinSimple=MinSimple;
|
|||
|
|
s.ToPositiveInteger=ToPositiveInteger;
|
|||
|
|
s.SpeciesConstructor=SpeciesConstructor;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
$v8natives]f
|
|||
|
|
(function(a,b){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Array;
|
|||
|
|
var d=a.Number;
|
|||
|
|
var e=a.Object;
|
|||
|
|
var f=b.ImportNow("iterator_symbol");
|
|||
|
|
var g;
|
|||
|
|
var h;
|
|||
|
|
var i;
|
|||
|
|
var j;
|
|||
|
|
var k=%GetRootNaN();
|
|||
|
|
var l=b.ImportNow("object_to_string");
|
|||
|
|
var m=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
b.Import(function(n){
|
|||
|
|
g=n.MakeRangeError;
|
|||
|
|
h=n.MakeSyntaxError;
|
|||
|
|
i=n.MakeTypeError;
|
|||
|
|
j=n.MathAbs;
|
|||
|
|
});
|
|||
|
|
function GlobalIsNaN(o){
|
|||
|
|
o=(%_ToNumber(o));
|
|||
|
|
return(!%_IsSmi(%IS_VAR(o))&&!(o==o));
|
|||
|
|
}
|
|||
|
|
function GlobalIsFinite(o){
|
|||
|
|
o=(%_ToNumber(o));
|
|||
|
|
return(%_IsSmi(%IS_VAR(o))||((o==o)&&(o!=1/0)&&(o!=-1/0)));
|
|||
|
|
}
|
|||
|
|
function GlobalParseInt(p,q){
|
|||
|
|
if((q===(void 0))||q===10||q===0){
|
|||
|
|
if(%_IsSmi(p))return p;
|
|||
|
|
if((typeof(p)==='number')&&
|
|||
|
|
((0.01<p&&p<1e9)||
|
|||
|
|
(-1e9<p&&p<-0.01))){
|
|||
|
|
return p|0;
|
|||
|
|
}
|
|||
|
|
p=(%_ToString(p));
|
|||
|
|
q=q|0;
|
|||
|
|
}else{
|
|||
|
|
p=(%_ToString(p));
|
|||
|
|
q=((q)|0);
|
|||
|
|
if(!(q==0||(2<=q&&q<=36))){
|
|||
|
|
return k;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(%_HasCachedArrayIndex(p)&&
|
|||
|
|
(q==0||q==10)){
|
|||
|
|
return %_GetCachedArrayIndex(p);
|
|||
|
|
}
|
|||
|
|
return %StringParseInt(p,q);
|
|||
|
|
}
|
|||
|
|
function GlobalParseFloat(p){
|
|||
|
|
p=(%_ToString(p));
|
|||
|
|
if(%_HasCachedArrayIndex(p))return %_GetCachedArrayIndex(p);
|
|||
|
|
return %StringParseFloat(p);
|
|||
|
|
}
|
|||
|
|
var r=2|4|1;
|
|||
|
|
b.InstallConstants(a,[
|
|||
|
|
"Infinity",(1/0),
|
|||
|
|
"NaN",k,
|
|||
|
|
"undefined",(void 0),
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(a,2,[
|
|||
|
|
"isNaN",GlobalIsNaN,
|
|||
|
|
"isFinite",GlobalIsFinite,
|
|||
|
|
"parseInt",GlobalParseInt,
|
|||
|
|
"parseFloat",GlobalParseFloat,
|
|||
|
|
]);
|
|||
|
|
function ObjectToLocaleString(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Object.prototype.toLocaleString");
|
|||
|
|
return this.toString();
|
|||
|
|
}
|
|||
|
|
function ObjectValueOf(){
|
|||
|
|
return(%_ToObject(this));
|
|||
|
|
}
|
|||
|
|
function ObjectIsPrototypeOf(s){
|
|||
|
|
if(!(%_IsJSReceiver(s)))return false;
|
|||
|
|
var t=(%_ToObject(this));
|
|||
|
|
return %HasInPrototypeChain(s,t);
|
|||
|
|
}
|
|||
|
|
function ObjectPropertyIsEnumerable(s){
|
|||
|
|
var u=(%_ToName(s));
|
|||
|
|
return %PropertyIsEnumerable((%_ToObject(this)),u);
|
|||
|
|
}
|
|||
|
|
function GetMethod(v,w){
|
|||
|
|
var x=v[w];
|
|||
|
|
if((x==null))return(void 0);
|
|||
|
|
if((typeof(x)==='function'))return x;
|
|||
|
|
throw i(15,typeof x);
|
|||
|
|
}
|
|||
|
|
function ObjectSetPrototypeOf(v,y){
|
|||
|
|
if((%IS_VAR(v)===null)||(v===(void 0)))throw i(17,"Object.setPrototypeOf");
|
|||
|
|
if(y!==null&&!(%_IsJSReceiver(y))){
|
|||
|
|
throw i(86,y);
|
|||
|
|
}
|
|||
|
|
if((%_IsJSReceiver(v))){
|
|||
|
|
%SetPrototype(v,y);
|
|||
|
|
}
|
|||
|
|
return v;
|
|||
|
|
}
|
|||
|
|
function ObjectGetProto(){
|
|||
|
|
return %object_get_prototype_of(this);
|
|||
|
|
}
|
|||
|
|
function ObjectSetProto(y){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Object.prototype.__proto__");
|
|||
|
|
if(((%_IsJSReceiver(y))||(y===null))&&(%_IsJSReceiver(this))){
|
|||
|
|
%SetPrototype(this,y);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function ObjectConstructor(z){
|
|||
|
|
if(e!=new.target&&!(new.target===(void 0))){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
if((z===null)||(z===(void 0)))return{};
|
|||
|
|
return(%_ToObject(z));
|
|||
|
|
}
|
|||
|
|
%SetNativeFlag(e);
|
|||
|
|
%SetCode(e,ObjectConstructor);
|
|||
|
|
%AddNamedProperty(e.prototype,"constructor",e,
|
|||
|
|
2);
|
|||
|
|
b.InstallFunctions(e.prototype,2,[
|
|||
|
|
"toString",l,
|
|||
|
|
"toLocaleString",ObjectToLocaleString,
|
|||
|
|
"valueOf",ObjectValueOf,
|
|||
|
|
"isPrototypeOf",ObjectIsPrototypeOf,
|
|||
|
|
"propertyIsEnumerable",ObjectPropertyIsEnumerable,
|
|||
|
|
]);
|
|||
|
|
b.InstallGetterSetter(
|
|||
|
|
e.prototype,"__proto__",ObjectGetProto,ObjectSetProto);
|
|||
|
|
b.InstallFunctions(e,2,[
|
|||
|
|
"setPrototypeOf",ObjectSetPrototypeOf,
|
|||
|
|
]);
|
|||
|
|
function NumberToStringJS(q){
|
|||
|
|
var o=this;
|
|||
|
|
if(!(typeof(this)==='number')){
|
|||
|
|
if(!(%_ClassOf(this)==='Number')){
|
|||
|
|
throw i(68,'Number.prototype.toString');
|
|||
|
|
}
|
|||
|
|
o=%_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
if((q===(void 0))||q===10){
|
|||
|
|
return %_NumberToString(o);
|
|||
|
|
}
|
|||
|
|
q=(%_ToInteger(q));
|
|||
|
|
if(q<2||q>36)throw g(179);
|
|||
|
|
return %NumberToRadixString(o,q);
|
|||
|
|
}
|
|||
|
|
function NumberToLocaleString(){
|
|||
|
|
return %_Call(NumberToStringJS,this);
|
|||
|
|
}
|
|||
|
|
function NumberValueOf(){
|
|||
|
|
if(!(typeof(this)==='number')&&!(%_ClassOf(this)==='Number')){
|
|||
|
|
throw i(68,'Number.prototype.valueOf');
|
|||
|
|
}
|
|||
|
|
return %_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
function NumberToFixedJS(A){
|
|||
|
|
var z=this;
|
|||
|
|
if(!(typeof(this)==='number')){
|
|||
|
|
if(!(%_ClassOf(this)==='Number')){
|
|||
|
|
throw i(43,
|
|||
|
|
"Number.prototype.toFixed",this);
|
|||
|
|
}
|
|||
|
|
z=%_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
var B=(%_ToInteger(A));
|
|||
|
|
if(B<0||B>20){
|
|||
|
|
throw g(175,"toFixed() digits");
|
|||
|
|
}
|
|||
|
|
if((!%_IsSmi(%IS_VAR(z))&&!(z==z)))return"NaN";
|
|||
|
|
if(z==(1/0))return"Infinity";
|
|||
|
|
if(z==-(1/0))return"-Infinity";
|
|||
|
|
return %NumberToFixed(z,B);
|
|||
|
|
}
|
|||
|
|
function NumberToExponentialJS(A){
|
|||
|
|
var z=this;
|
|||
|
|
if(!(typeof(this)==='number')){
|
|||
|
|
if(!(%_ClassOf(this)==='Number')){
|
|||
|
|
throw i(43,
|
|||
|
|
"Number.prototype.toExponential",this);
|
|||
|
|
}
|
|||
|
|
z=%_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
var B=(A===(void 0))?(void 0):(%_ToInteger(A));
|
|||
|
|
if((!%_IsSmi(%IS_VAR(z))&&!(z==z)))return"NaN";
|
|||
|
|
if(z==(1/0))return"Infinity";
|
|||
|
|
if(z==-(1/0))return"-Infinity";
|
|||
|
|
if((B===(void 0))){
|
|||
|
|
B=-1;
|
|||
|
|
}else if(B<0||B>20){
|
|||
|
|
throw g(175,"toExponential()");
|
|||
|
|
}
|
|||
|
|
return %NumberToExponential(z,B);
|
|||
|
|
}
|
|||
|
|
function NumberToPrecisionJS(C){
|
|||
|
|
var z=this;
|
|||
|
|
if(!(typeof(this)==='number')){
|
|||
|
|
if(!(%_ClassOf(this)==='Number')){
|
|||
|
|
throw i(43,
|
|||
|
|
"Number.prototype.toPrecision",this);
|
|||
|
|
}
|
|||
|
|
z=%_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
if((C===(void 0)))return(%_ToString(z));
|
|||
|
|
var w=(%_ToInteger(C));
|
|||
|
|
if((!%_IsSmi(%IS_VAR(z))&&!(z==z)))return"NaN";
|
|||
|
|
if(z==(1/0))return"Infinity";
|
|||
|
|
if(z==-(1/0))return"-Infinity";
|
|||
|
|
if(w<1||w>21){
|
|||
|
|
throw g(178);
|
|||
|
|
}
|
|||
|
|
return %NumberToPrecision(z,w);
|
|||
|
|
}
|
|||
|
|
function NumberIsFinite(o){
|
|||
|
|
return(typeof(o)==='number')&&(%_IsSmi(%IS_VAR(o))||((o==o)&&(o!=1/0)&&(o!=-1/0)));
|
|||
|
|
}
|
|||
|
|
function NumberIsInteger(o){
|
|||
|
|
return NumberIsFinite(o)&&(%_ToInteger(o))==o;
|
|||
|
|
}
|
|||
|
|
function NumberIsNaN(o){
|
|||
|
|
return(typeof(o)==='number')&&(!%_IsSmi(%IS_VAR(o))&&!(o==o));
|
|||
|
|
}
|
|||
|
|
function NumberIsSafeInteger(o){
|
|||
|
|
if(NumberIsFinite(o)){
|
|||
|
|
var D=(%_ToInteger(o));
|
|||
|
|
if(D==o){
|
|||
|
|
return j(D)<=9007199254740991;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
%FunctionSetPrototype(d,new d(0));
|
|||
|
|
%OptimizeObjectForAddingMultipleProperties(d.prototype,8);
|
|||
|
|
%AddNamedProperty(d.prototype,"constructor",d,
|
|||
|
|
2);
|
|||
|
|
b.InstallConstants(d,[
|
|||
|
|
"MAX_VALUE",1.7976931348623157e+308,
|
|||
|
|
"MIN_VALUE",5e-324,
|
|||
|
|
"NaN",k,
|
|||
|
|
"NEGATIVE_INFINITY",-(1/0),
|
|||
|
|
"POSITIVE_INFINITY",(1/0),
|
|||
|
|
"MAX_SAFE_INTEGER",%_MathPow(2,53)-1,
|
|||
|
|
"MIN_SAFE_INTEGER",-%_MathPow(2,53)+1,
|
|||
|
|
"EPSILON",%_MathPow(2,-52)
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(d.prototype,2,[
|
|||
|
|
"toString",NumberToStringJS,
|
|||
|
|
"toLocaleString",NumberToLocaleString,
|
|||
|
|
"valueOf",NumberValueOf,
|
|||
|
|
"toFixed",NumberToFixedJS,
|
|||
|
|
"toExponential",NumberToExponentialJS,
|
|||
|
|
"toPrecision",NumberToPrecisionJS
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(d,2,[
|
|||
|
|
"isFinite",NumberIsFinite,
|
|||
|
|
"isInteger",NumberIsInteger,
|
|||
|
|
"isNaN",NumberIsNaN,
|
|||
|
|
"isSafeInteger",NumberIsSafeInteger,
|
|||
|
|
"parseInt",GlobalParseInt,
|
|||
|
|
"parseFloat",GlobalParseFloat
|
|||
|
|
]);
|
|||
|
|
%SetForceInlineFlag(NumberIsNaN);
|
|||
|
|
function GetIterator(v,E){
|
|||
|
|
if((E===(void 0))){
|
|||
|
|
E=v[f];
|
|||
|
|
}
|
|||
|
|
if(!(typeof(E)==='function')){
|
|||
|
|
throw i(69,v);
|
|||
|
|
}
|
|||
|
|
var F=%_Call(E,v);
|
|||
|
|
if(!(%_IsJSReceiver(F))){
|
|||
|
|
throw i(63,F);
|
|||
|
|
}
|
|||
|
|
return F;
|
|||
|
|
}
|
|||
|
|
b.Export(function(G){
|
|||
|
|
G.GetIterator=GetIterator;
|
|||
|
|
G.GetMethod=GetMethod;
|
|||
|
|
G.IsNaN=GlobalIsNaN;
|
|||
|
|
G.NumberIsNaN=NumberIsNaN;
|
|||
|
|
G.NumberIsInteger=NumberIsInteger;
|
|||
|
|
G.ObjectHasOwnProperty=e.prototype.hasOwnProperty;
|
|||
|
|
});
|
|||
|
|
%InstallToContext([
|
|||
|
|
"object_value_of",ObjectValueOf,
|
|||
|
|
]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
symbol<6F>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Symbol;
|
|||
|
|
var d=b.ImportNow("has_instance_symbol");
|
|||
|
|
var e=
|
|||
|
|
b.ImportNow("is_concat_spreadable_symbol");
|
|||
|
|
var f=b.ImportNow("iterator_symbol");
|
|||
|
|
var g;
|
|||
|
|
var h=b.ImportNow("match_symbol");
|
|||
|
|
var i=b.ImportNow("replace_symbol");
|
|||
|
|
var j=b.ImportNow("search_symbol");
|
|||
|
|
var k=b.ImportNow("species_symbol");
|
|||
|
|
var l=b.ImportNow("split_symbol");
|
|||
|
|
var m=b.ImportNow("to_primitive_symbol");
|
|||
|
|
var n=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
var o=b.ImportNow("unscopables_symbol");
|
|||
|
|
b.Import(function(p){
|
|||
|
|
g=p.MakeTypeError;
|
|||
|
|
});
|
|||
|
|
function SymbolToPrimitive(q){
|
|||
|
|
if(!((typeof(this)==='symbol')||(%_ClassOf(this)==='Symbol'))){
|
|||
|
|
throw g(43,
|
|||
|
|
"Symbol.prototype [ @@toPrimitive ]",this);
|
|||
|
|
}
|
|||
|
|
return %_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
function SymbolToString(){
|
|||
|
|
if(!((typeof(this)==='symbol')||(%_ClassOf(this)==='Symbol'))){
|
|||
|
|
throw g(43,
|
|||
|
|
"Symbol.prototype.toString",this);
|
|||
|
|
}
|
|||
|
|
return %SymbolDescriptiveString(%_ValueOf(this));
|
|||
|
|
}
|
|||
|
|
function SymbolValueOf(){
|
|||
|
|
if(!((typeof(this)==='symbol')||(%_ClassOf(this)==='Symbol'))){
|
|||
|
|
throw g(43,
|
|||
|
|
"Symbol.prototype.valueOf",this);
|
|||
|
|
}
|
|||
|
|
return %_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
function SymbolFor(r){
|
|||
|
|
r=(%_ToString(r));
|
|||
|
|
var s=%SymbolRegistry();
|
|||
|
|
if((s.for[r]===(void 0))){
|
|||
|
|
var t=%CreateSymbol(r);
|
|||
|
|
s.for[r]=t;
|
|||
|
|
s.keyFor[t]=r;
|
|||
|
|
}
|
|||
|
|
return s.for[r];
|
|||
|
|
}
|
|||
|
|
function SymbolKeyFor(t){
|
|||
|
|
if(!(typeof(t)==='symbol'))throw g(136,t);
|
|||
|
|
return %SymbolRegistry().keyFor[t];
|
|||
|
|
}
|
|||
|
|
b.InstallConstants(c,[
|
|||
|
|
"hasInstance",d,
|
|||
|
|
"isConcatSpreadable",e,
|
|||
|
|
"iterator",f,
|
|||
|
|
"match",h,
|
|||
|
|
"replace",i,
|
|||
|
|
"search",j,
|
|||
|
|
"species",k,
|
|||
|
|
"split",l,
|
|||
|
|
"toPrimitive",m,
|
|||
|
|
"toStringTag",n,
|
|||
|
|
"unscopables",o,
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(c,2,[
|
|||
|
|
"for",SymbolFor,
|
|||
|
|
"keyFor",SymbolKeyFor
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(
|
|||
|
|
c.prototype,n,"Symbol",2|1);
|
|||
|
|
b.InstallFunctions(c.prototype,2|1,[
|
|||
|
|
m,SymbolToPrimitive
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(c.prototype,2,[
|
|||
|
|
"toString",SymbolToString,
|
|||
|
|
"valueOf",SymbolValueOf
|
|||
|
|
]);
|
|||
|
|
b.Export(function(u){
|
|||
|
|
u.SymbolToString=SymbolToString;
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
array2w
|
|||
|
|
(function(a,b,c){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var d;
|
|||
|
|
var e;
|
|||
|
|
var f=a.Array;
|
|||
|
|
var g=b.InternalArray;
|
|||
|
|
var h=b.InternalPackedArray;
|
|||
|
|
var i;
|
|||
|
|
var j;
|
|||
|
|
var k;
|
|||
|
|
var l;
|
|||
|
|
var m=b.ImportNow("object_to_string");
|
|||
|
|
var n=b.ImportNow("iterator_symbol");
|
|||
|
|
var o=b.ImportNow("species_symbol");
|
|||
|
|
var p=b.ImportNow("unscopables_symbol");
|
|||
|
|
b.Import(function(q){
|
|||
|
|
d=q.GetIterator;
|
|||
|
|
e=q.GetMethod;
|
|||
|
|
i=q.MakeTypeError;
|
|||
|
|
j=q.MaxSimple;
|
|||
|
|
k=q.MinSimple;
|
|||
|
|
l=q.ObjectHasOwnProperty;
|
|||
|
|
});
|
|||
|
|
function ArraySpeciesCreate(r,s){
|
|||
|
|
s=((s)+0);
|
|||
|
|
var t=%ArraySpeciesConstructor(r);
|
|||
|
|
return new t(s);
|
|||
|
|
}
|
|||
|
|
function KeySortCompare(u,v){
|
|||
|
|
return u-v;
|
|||
|
|
}
|
|||
|
|
function GetSortedArrayKeys(r,w){
|
|||
|
|
if((typeof(w)==='number')){
|
|||
|
|
var x=new g();
|
|||
|
|
var y=w;
|
|||
|
|
for(var z=0;z<y;++z){
|
|||
|
|
var A=r[z];
|
|||
|
|
if(!(A===(void 0))||z in r){
|
|||
|
|
x.push(z);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return x;
|
|||
|
|
}
|
|||
|
|
return InnerArraySort(w,w.length,KeySortCompare);
|
|||
|
|
}
|
|||
|
|
function SparseJoinWithSeparatorJS(r,x,s,B,C){
|
|||
|
|
var D=x.length;
|
|||
|
|
var E=new g(D*2);
|
|||
|
|
for(var z=0;z<D;z++){
|
|||
|
|
var F=x[z];
|
|||
|
|
var A=r[F];
|
|||
|
|
E[z*2]=F;
|
|||
|
|
E[z*2+1]=(typeof(A)==='string')?A:B(A);
|
|||
|
|
}
|
|||
|
|
return %SparseJoinWithSeparator(E,s,C);
|
|||
|
|
}
|
|||
|
|
function SparseJoin(r,x,B){
|
|||
|
|
var D=x.length;
|
|||
|
|
var E=new g(D);
|
|||
|
|
for(var z=0;z<D;z++){
|
|||
|
|
var A=r[x[z]];
|
|||
|
|
E[z]=(typeof(A)==='string')?A:B(A);
|
|||
|
|
}
|
|||
|
|
return %StringBuilderConcat(E,D,'');
|
|||
|
|
}
|
|||
|
|
function UseSparseVariant(r,s,G,H){
|
|||
|
|
if(!G||s<1000||%HasComplexElements(r)){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if(!%_IsSmi(s)){
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
var I=s>>2;
|
|||
|
|
var J=%EstimateNumberOfElements(r);
|
|||
|
|
return(J<I)&&
|
|||
|
|
(H>J*4);
|
|||
|
|
}
|
|||
|
|
function Stack(){
|
|||
|
|
this.length=0;
|
|||
|
|
this.values=new g();
|
|||
|
|
}
|
|||
|
|
Stack.prototype.length=null;
|
|||
|
|
Stack.prototype.values=null;
|
|||
|
|
function StackPush(K,L){
|
|||
|
|
K.values[K.length++]=L;
|
|||
|
|
}
|
|||
|
|
function StackPop(K){
|
|||
|
|
K.values[--K.length]=null
|
|||
|
|
}
|
|||
|
|
function StackHas(K,M){
|
|||
|
|
var s=K.length;
|
|||
|
|
var N=K.values;
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
if(N[z]===M)return true;
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
var O=new Stack();
|
|||
|
|
function DoJoin(r,s,G,C,B){
|
|||
|
|
if(UseSparseVariant(r,s,G,s)){
|
|||
|
|
%NormalizeElements(r);
|
|||
|
|
var x=GetSortedArrayKeys(r,%GetArrayKeys(r,s));
|
|||
|
|
if(C===''){
|
|||
|
|
if(x.length===0)return'';
|
|||
|
|
return SparseJoin(r,x,B);
|
|||
|
|
}else{
|
|||
|
|
return SparseJoinWithSeparatorJS(r,x,s,B,C);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(s===1){
|
|||
|
|
var A=r[0];
|
|||
|
|
return(typeof(A)==='string')?A:B(A);
|
|||
|
|
}
|
|||
|
|
var E=new g(s);
|
|||
|
|
if(C===''){
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
var A=r[z];
|
|||
|
|
E[z]=(typeof(A)==='string')?A:B(A);
|
|||
|
|
}
|
|||
|
|
return %StringBuilderConcat(E,s,'');
|
|||
|
|
}
|
|||
|
|
var A=r[0];
|
|||
|
|
if((typeof(A)==='number')){
|
|||
|
|
E[0]=%_NumberToString(A);
|
|||
|
|
for(var z=1;z<s;z++){
|
|||
|
|
A=r[z];
|
|||
|
|
if((typeof(A)==='number')){
|
|||
|
|
E[z]=%_NumberToString(A);
|
|||
|
|
}else{
|
|||
|
|
E[z]=(typeof(A)==='string')?A:B(A);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
E[0]=(typeof(A)==='string')?A:B(A);
|
|||
|
|
for(var z=1;z<s;z++){
|
|||
|
|
A=r[z];
|
|||
|
|
E[z]=(typeof(A)==='string')?A:B(A);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return %StringBuilderJoin(E,s,C);
|
|||
|
|
}
|
|||
|
|
function Join(r,s,C,B){
|
|||
|
|
if(s===0)return'';
|
|||
|
|
var G=(%_IsArray(r));
|
|||
|
|
if(G){
|
|||
|
|
if(StackHas(O,r))return'';
|
|||
|
|
StackPush(O,r);
|
|||
|
|
}
|
|||
|
|
try{
|
|||
|
|
return DoJoin(r,s,G,C,B);
|
|||
|
|
}finally{
|
|||
|
|
if(G)StackPop(O);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function ConvertToString(P){
|
|||
|
|
if((P==null))return'';
|
|||
|
|
return(%_ToString(P));
|
|||
|
|
}
|
|||
|
|
function ConvertToLocaleString(A){
|
|||
|
|
if((A==null))return'';
|
|||
|
|
return(%_ToString(A.toLocaleString()));
|
|||
|
|
}
|
|||
|
|
function SparseSlice(r,Q,R,S,T){
|
|||
|
|
var w=%GetArrayKeys(r,Q+R);
|
|||
|
|
if((typeof(w)==='number')){
|
|||
|
|
var y=w;
|
|||
|
|
for(var z=Q;z<y;++z){
|
|||
|
|
var U=r[z];
|
|||
|
|
if(!(U===(void 0))||z in r){
|
|||
|
|
%CreateDataProperty(T,z-Q,U);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
var s=w.length;
|
|||
|
|
for(var V=0;V<s;++V){
|
|||
|
|
var F=w[V];
|
|||
|
|
if(F>=Q){
|
|||
|
|
var U=r[F];
|
|||
|
|
if(!(U===(void 0))||F in r){
|
|||
|
|
%CreateDataProperty(T,F-Q,U);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function SparseMove(r,Q,R,S,W){
|
|||
|
|
if(W===R)return;
|
|||
|
|
var X=new g(
|
|||
|
|
k(S-R+W,0xffffffff));
|
|||
|
|
var Y;
|
|||
|
|
var w=%GetArrayKeys(r,S);
|
|||
|
|
if((typeof(w)==='number')){
|
|||
|
|
var y=w;
|
|||
|
|
for(var z=0;z<Q&&z<y;++z){
|
|||
|
|
var U=r[z];
|
|||
|
|
if(!(U===(void 0))||z in r){
|
|||
|
|
X[z]=U;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for(var z=Q+R;z<y;++z){
|
|||
|
|
var U=r[z];
|
|||
|
|
if(!(U===(void 0))||z in r){
|
|||
|
|
X[z-R+W]=U;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
var s=w.length;
|
|||
|
|
for(var V=0;V<s;++V){
|
|||
|
|
var F=w[V];
|
|||
|
|
if(F<Q){
|
|||
|
|
var U=r[F];
|
|||
|
|
if(!(U===(void 0))||F in r){
|
|||
|
|
X[F]=U;
|
|||
|
|
}
|
|||
|
|
}else if(F>=Q+R){
|
|||
|
|
var U=r[F];
|
|||
|
|
if(!(U===(void 0))||F in r){
|
|||
|
|
var Z=F-R+W;
|
|||
|
|
X[Z]=U;
|
|||
|
|
if(Z>0xfffffffe){
|
|||
|
|
Y=Y||new g();
|
|||
|
|
Y.push(Z);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
%MoveArrayContents(X,r);
|
|||
|
|
if(!(Y===(void 0))){
|
|||
|
|
var s=Y.length;
|
|||
|
|
for(var z=0;z<s;++z){
|
|||
|
|
var F=Y[z];
|
|||
|
|
r[F]=X[F];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function SimpleSlice(r,Q,R,S,T){
|
|||
|
|
for(var z=0;z<R;z++){
|
|||
|
|
var aa=Q+z;
|
|||
|
|
if(aa in r){
|
|||
|
|
var U=r[aa];
|
|||
|
|
%CreateDataProperty(T,z,U);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function SimpleMove(r,Q,R,S,W){
|
|||
|
|
if(W!==R){
|
|||
|
|
if(W>R){
|
|||
|
|
for(var z=S-R;z>Q;z--){
|
|||
|
|
var ab=z+R-1;
|
|||
|
|
var ac=z+W-1;
|
|||
|
|
if(ab in r){
|
|||
|
|
r[ac]=r[ab];
|
|||
|
|
}else{
|
|||
|
|
delete r[ac];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
for(var z=Q;z<S-R;z++){
|
|||
|
|
var ab=z+R;
|
|||
|
|
var ac=z+W;
|
|||
|
|
if(ab in r){
|
|||
|
|
r[ac]=r[ab];
|
|||
|
|
}else{
|
|||
|
|
delete r[ac];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for(var z=S;z>S-R+W;z--){
|
|||
|
|
delete r[z-1];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function ArrayToString(){
|
|||
|
|
var r;
|
|||
|
|
var ad;
|
|||
|
|
if((%_IsArray(this))){
|
|||
|
|
ad=this.join;
|
|||
|
|
if(ad===ArrayJoin){
|
|||
|
|
return Join(this,this.length,',',ConvertToString);
|
|||
|
|
}
|
|||
|
|
r=this;
|
|||
|
|
}else{
|
|||
|
|
r=(%_ToObject(this));
|
|||
|
|
ad=r.join;
|
|||
|
|
}
|
|||
|
|
if(!(typeof(ad)==='function')){
|
|||
|
|
return %_Call(m,r);
|
|||
|
|
}
|
|||
|
|
return %_Call(ad,r);
|
|||
|
|
}
|
|||
|
|
function InnerArrayToLocaleString(r,s){
|
|||
|
|
var S=(%_ToLength(s));
|
|||
|
|
if(S===0)return"";
|
|||
|
|
return Join(r,S,',',ConvertToLocaleString);
|
|||
|
|
}
|
|||
|
|
function ArrayToLocaleString(){
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var ae=r.length;
|
|||
|
|
return InnerArrayToLocaleString(r,ae);
|
|||
|
|
}
|
|||
|
|
function InnerArrayJoin(C,r,s){
|
|||
|
|
if((C===(void 0))){
|
|||
|
|
C=',';
|
|||
|
|
}else{
|
|||
|
|
C=(%_ToString(C));
|
|||
|
|
}
|
|||
|
|
if(s===1){
|
|||
|
|
var A=r[0];
|
|||
|
|
if((A==null))return'';
|
|||
|
|
return(%_ToString(A));
|
|||
|
|
}
|
|||
|
|
return Join(r,s,C,ConvertToString);
|
|||
|
|
}
|
|||
|
|
function ArrayJoin(C){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.join");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArrayJoin(C,r,s);
|
|||
|
|
}
|
|||
|
|
function ArrayPop(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.pop");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var af=(%_ToLength(r.length));
|
|||
|
|
if(af==0){
|
|||
|
|
r.length=af;
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
af--;
|
|||
|
|
var L=r[af];
|
|||
|
|
%DeleteProperty_Strict(r,af);
|
|||
|
|
r.length=af;
|
|||
|
|
return L;
|
|||
|
|
}
|
|||
|
|
function ArrayPush(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.push");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var af=(%_ToLength(r.length));
|
|||
|
|
var ag=arguments.length;
|
|||
|
|
if(ag>9007199254740991-af)throw i(226,ag,af);
|
|||
|
|
for(var z=0;z<ag;z++){
|
|||
|
|
r[z+af]=arguments[z];
|
|||
|
|
}
|
|||
|
|
var ah=af+ag;
|
|||
|
|
r.length=ah;
|
|||
|
|
return ah;
|
|||
|
|
}
|
|||
|
|
function SparseReverse(r,S){
|
|||
|
|
var x=GetSortedArrayKeys(r,%GetArrayKeys(r,S));
|
|||
|
|
var ai=x.length-1;
|
|||
|
|
var aj=0;
|
|||
|
|
while(aj<=ai){
|
|||
|
|
var z=x[aj];
|
|||
|
|
var ak=x[ai];
|
|||
|
|
var al=S-ak-1;
|
|||
|
|
var am,an;
|
|||
|
|
if(al<=z){
|
|||
|
|
an=ak;
|
|||
|
|
while(x[--ai]==ak){}
|
|||
|
|
am=al;
|
|||
|
|
}
|
|||
|
|
if(al>=z){
|
|||
|
|
am=z;
|
|||
|
|
while(x[++aj]==z){}
|
|||
|
|
an=S-z-1;
|
|||
|
|
}
|
|||
|
|
var ao=r[am];
|
|||
|
|
if(!(ao===(void 0))||am in r){
|
|||
|
|
var ap=r[an];
|
|||
|
|
if(!(ap===(void 0))||an in r){
|
|||
|
|
r[am]=ap;
|
|||
|
|
r[an]=ao;
|
|||
|
|
}else{
|
|||
|
|
r[an]=ao;
|
|||
|
|
delete r[am];
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
var ap=r[an];
|
|||
|
|
if(!(ap===(void 0))||an in r){
|
|||
|
|
r[am]=ap;
|
|||
|
|
delete r[an];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function PackedArrayReverse(r,S){
|
|||
|
|
var ak=S-1;
|
|||
|
|
for(var z=0;z<ak;z++,ak--){
|
|||
|
|
var ao=r[z];
|
|||
|
|
var ap=r[ak];
|
|||
|
|
r[z]=ap;
|
|||
|
|
r[ak]=ao;
|
|||
|
|
}
|
|||
|
|
return r;
|
|||
|
|
}
|
|||
|
|
function GenericArrayReverse(r,S){
|
|||
|
|
var ak=S-1;
|
|||
|
|
for(var z=0;z<ak;z++,ak--){
|
|||
|
|
if(z in r){
|
|||
|
|
var ao=r[z];
|
|||
|
|
if(ak in r){
|
|||
|
|
var ap=r[ak];
|
|||
|
|
r[z]=ap;
|
|||
|
|
r[ak]=ao;
|
|||
|
|
}else{
|
|||
|
|
r[ak]=ao;
|
|||
|
|
delete r[z];
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
if(ak in r){
|
|||
|
|
var ap=r[ak];
|
|||
|
|
r[z]=ap;
|
|||
|
|
delete r[ak];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return r;
|
|||
|
|
}
|
|||
|
|
function ArrayReverse(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.reverse");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var S=(%_ToLength(r.length));
|
|||
|
|
var aq=(%_IsArray(r));
|
|||
|
|
if(UseSparseVariant(r,S,aq,S)){
|
|||
|
|
%NormalizeElements(r);
|
|||
|
|
SparseReverse(r,S);
|
|||
|
|
return r;
|
|||
|
|
}else if(aq&&%_HasFastPackedElements(r)){
|
|||
|
|
return PackedArrayReverse(r,S);
|
|||
|
|
}else{
|
|||
|
|
return GenericArrayReverse(r,S);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function ArrayShift(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.shift");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var S=(%_ToLength(r.length));
|
|||
|
|
if(S===0){
|
|||
|
|
r.length=0;
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if(%object_is_sealed(r))throw i(13);
|
|||
|
|
var ar=r[0];
|
|||
|
|
if(UseSparseVariant(r,S,(%_IsArray(r)),S)){
|
|||
|
|
SparseMove(r,0,1,S,0);
|
|||
|
|
}else{
|
|||
|
|
SimpleMove(r,0,1,S,0);
|
|||
|
|
}
|
|||
|
|
r.length=S-1;
|
|||
|
|
return ar;
|
|||
|
|
}
|
|||
|
|
function ArrayUnshift(as){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.unshift");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var S=(%_ToLength(r.length));
|
|||
|
|
var at=arguments.length;
|
|||
|
|
if(S>0&&UseSparseVariant(r,S,(%_IsArray(r)),S)&&
|
|||
|
|
!%object_is_sealed(r)){
|
|||
|
|
SparseMove(r,0,0,S,at);
|
|||
|
|
}else{
|
|||
|
|
SimpleMove(r,0,0,S,at);
|
|||
|
|
}
|
|||
|
|
for(var z=0;z<at;z++){
|
|||
|
|
r[z]=arguments[z];
|
|||
|
|
}
|
|||
|
|
var ah=S+at;
|
|||
|
|
r.length=ah;
|
|||
|
|
return ah;
|
|||
|
|
}
|
|||
|
|
function ArraySlice(au,av){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.slice");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var S=(%_ToLength(r.length));
|
|||
|
|
var Q=(%_ToInteger(au));
|
|||
|
|
var aw=S;
|
|||
|
|
if(!(av===(void 0)))aw=(%_ToInteger(av));
|
|||
|
|
if(Q<0){
|
|||
|
|
Q+=S;
|
|||
|
|
if(Q<0)Q=0;
|
|||
|
|
}else{
|
|||
|
|
if(Q>S)Q=S;
|
|||
|
|
}
|
|||
|
|
if(aw<0){
|
|||
|
|
aw+=S;
|
|||
|
|
if(aw<0)aw=0;
|
|||
|
|
}else{
|
|||
|
|
if(aw>S)aw=S;
|
|||
|
|
}
|
|||
|
|
var ax=ArraySpeciesCreate(r,j(aw-Q,0));
|
|||
|
|
if(aw<Q)return ax;
|
|||
|
|
if(UseSparseVariant(r,S,(%_IsArray(r)),aw-Q)){
|
|||
|
|
%NormalizeElements(r);
|
|||
|
|
if((%_IsArray(ax)))%NormalizeElements(ax);
|
|||
|
|
SparseSlice(r,Q,aw-Q,S,ax);
|
|||
|
|
}else{
|
|||
|
|
SimpleSlice(r,Q,aw-Q,S,ax);
|
|||
|
|
}
|
|||
|
|
ax.length=aw-Q;
|
|||
|
|
return ax;
|
|||
|
|
}
|
|||
|
|
function ComputeSpliceStartIndex(Q,S){
|
|||
|
|
if(Q<0){
|
|||
|
|
Q+=S;
|
|||
|
|
return Q<0?0:Q;
|
|||
|
|
}
|
|||
|
|
return Q>S?S:Q;
|
|||
|
|
}
|
|||
|
|
function ComputeSpliceDeleteCount(ay,at,S,Q){
|
|||
|
|
var R=0;
|
|||
|
|
if(at==1)
|
|||
|
|
return S-Q;
|
|||
|
|
R=(%_ToInteger(ay));
|
|||
|
|
if(R<0)
|
|||
|
|
return 0;
|
|||
|
|
if(R>S-Q)
|
|||
|
|
return S-Q;
|
|||
|
|
return R;
|
|||
|
|
}
|
|||
|
|
function ArraySplice(au,ay){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.splice");
|
|||
|
|
var at=arguments.length;
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var S=(%_ToLength(r.length));
|
|||
|
|
var Q=ComputeSpliceStartIndex((%_ToInteger(au)),S);
|
|||
|
|
var R=ComputeSpliceDeleteCount(ay,at,S,
|
|||
|
|
Q);
|
|||
|
|
var T=ArraySpeciesCreate(r,R);
|
|||
|
|
T.length=R;
|
|||
|
|
var az=at>2?at-2:0;
|
|||
|
|
if(R!=az&&%object_is_sealed(r)){
|
|||
|
|
throw i(13);
|
|||
|
|
}else if(R>0&&%object_is_frozen(r)){
|
|||
|
|
throw i(12);
|
|||
|
|
}
|
|||
|
|
var aA=R;
|
|||
|
|
if(az!=R){
|
|||
|
|
aA+=S-Q-R;
|
|||
|
|
}
|
|||
|
|
if(UseSparseVariant(r,S,(%_IsArray(r)),aA)){
|
|||
|
|
%NormalizeElements(r);
|
|||
|
|
if((%_IsArray(T)))%NormalizeElements(T);
|
|||
|
|
SparseSlice(r,Q,R,S,T);
|
|||
|
|
SparseMove(r,Q,R,S,az);
|
|||
|
|
}else{
|
|||
|
|
SimpleSlice(r,Q,R,S,T);
|
|||
|
|
SimpleMove(r,Q,R,S,az);
|
|||
|
|
}
|
|||
|
|
var z=Q;
|
|||
|
|
var aB=2;
|
|||
|
|
var aC=arguments.length;
|
|||
|
|
while(aB<aC){
|
|||
|
|
r[z++]=arguments[aB++];
|
|||
|
|
}
|
|||
|
|
r.length=S-R+az;
|
|||
|
|
return T;
|
|||
|
|
}
|
|||
|
|
function InnerArraySort(r,s,aD){
|
|||
|
|
if(!(typeof(aD)==='function')){
|
|||
|
|
aD=function(P,aE){
|
|||
|
|
if(P===aE)return 0;
|
|||
|
|
if(%_IsSmi(P)&&%_IsSmi(aE)){
|
|||
|
|
return %SmiLexicographicCompare(P,aE);
|
|||
|
|
}
|
|||
|
|
P=(%_ToString(P));
|
|||
|
|
aE=(%_ToString(aE));
|
|||
|
|
if(P==aE)return 0;
|
|||
|
|
else return P<aE?-1:1;
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
var aF=function InsertionSort(u,q,aG){
|
|||
|
|
for(var z=q+1;z<aG;z++){
|
|||
|
|
var aH=u[z];
|
|||
|
|
for(var ak=z-1;ak>=q;ak--){
|
|||
|
|
var aI=u[ak];
|
|||
|
|
var aJ=aD(aI,aH);
|
|||
|
|
if(aJ>0){
|
|||
|
|
u[ak+1]=aI;
|
|||
|
|
}else{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
u[ak+1]=aH;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
var aK=function(u,q,aG){
|
|||
|
|
var aL=new g();
|
|||
|
|
var aM=200+((aG-q)&15);
|
|||
|
|
var ak=0;
|
|||
|
|
q+=1;
|
|||
|
|
aG-=1;
|
|||
|
|
for(var z=q;z<aG;z+=aM){
|
|||
|
|
aL[ak]=[z,u[z]];
|
|||
|
|
ak++;
|
|||
|
|
}
|
|||
|
|
aL.sort(function(u,v){
|
|||
|
|
return aD(u[1],v[1]);
|
|||
|
|
});
|
|||
|
|
var aN=aL[aL.length>>1][0];
|
|||
|
|
return aN;
|
|||
|
|
}
|
|||
|
|
var aO=function QuickSort(u,q,aG){
|
|||
|
|
var aN=0;
|
|||
|
|
while(true){
|
|||
|
|
if(aG-q<=10){
|
|||
|
|
aF(u,q,aG);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if(aG-q>1000){
|
|||
|
|
aN=aK(u,q,aG);
|
|||
|
|
}else{
|
|||
|
|
aN=q+((aG-q)>>1);
|
|||
|
|
}
|
|||
|
|
var aP=u[q];
|
|||
|
|
var aQ=u[aG-1];
|
|||
|
|
var aR=u[aN];
|
|||
|
|
var aS=aD(aP,aQ);
|
|||
|
|
if(aS>0){
|
|||
|
|
var aI=aP;
|
|||
|
|
aP=aQ;
|
|||
|
|
aQ=aI;
|
|||
|
|
}
|
|||
|
|
var aT=aD(aP,aR);
|
|||
|
|
if(aT>=0){
|
|||
|
|
var aI=aP;
|
|||
|
|
aP=aR;
|
|||
|
|
aR=aQ;
|
|||
|
|
aQ=aI;
|
|||
|
|
}else{
|
|||
|
|
var aU=aD(aQ,aR);
|
|||
|
|
if(aU>0){
|
|||
|
|
var aI=aQ;
|
|||
|
|
aQ=aR;
|
|||
|
|
aR=aI;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
u[q]=aP;
|
|||
|
|
u[aG-1]=aR;
|
|||
|
|
var aV=aQ;
|
|||
|
|
var aW=q+1;
|
|||
|
|
var aX=aG-1;
|
|||
|
|
u[aN]=u[aW];
|
|||
|
|
u[aW]=aV;
|
|||
|
|
partition:for(var z=aW+1;z<aX;z++){
|
|||
|
|
var aH=u[z];
|
|||
|
|
var aJ=aD(aH,aV);
|
|||
|
|
if(aJ<0){
|
|||
|
|
u[z]=u[aW];
|
|||
|
|
u[aW]=aH;
|
|||
|
|
aW++;
|
|||
|
|
}else if(aJ>0){
|
|||
|
|
do{
|
|||
|
|
aX--;
|
|||
|
|
if(aX==z)break partition;
|
|||
|
|
var aY=u[aX];
|
|||
|
|
aJ=aD(aY,aV);
|
|||
|
|
}while(aJ>0);
|
|||
|
|
u[z]=u[aX];
|
|||
|
|
u[aX]=aH;
|
|||
|
|
if(aJ<0){
|
|||
|
|
aH=u[z];
|
|||
|
|
u[z]=u[aW];
|
|||
|
|
u[aW]=aH;
|
|||
|
|
aW++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(aG-aX<aW-q){
|
|||
|
|
aO(u,aX,aG);
|
|||
|
|
aG=aW;
|
|||
|
|
}else{
|
|||
|
|
aO(u,q,aW);
|
|||
|
|
q=aX;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
var aZ=function CopyFromPrototype(ba,s){
|
|||
|
|
var bb=0;
|
|||
|
|
for(var bc=%object_get_prototype_of(ba);bc;
|
|||
|
|
bc=%object_get_prototype_of(bc)){
|
|||
|
|
var w=(%_IsJSProxy(bc))?s:%GetArrayKeys(bc,s);
|
|||
|
|
if((typeof(w)==='number')){
|
|||
|
|
var bd=w;
|
|||
|
|
for(var z=0;z<bd;z++){
|
|||
|
|
if(!(%_Call(l,ba,z))&&(%_Call(l,bc,z))){
|
|||
|
|
ba[z]=bc[z];
|
|||
|
|
if(z>=bb){bb=z+1;}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
for(var z=0;z<w.length;z++){
|
|||
|
|
var aa=w[z];
|
|||
|
|
if(!(%_Call(l,ba,aa))&&(%_Call(l,bc,aa))){
|
|||
|
|
ba[aa]=bc[aa];
|
|||
|
|
if(aa>=bb){bb=aa+1;}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return bb;
|
|||
|
|
};
|
|||
|
|
var be=function(ba,q,aG){
|
|||
|
|
for(var bc=%object_get_prototype_of(ba);bc;
|
|||
|
|
bc=%object_get_prototype_of(bc)){
|
|||
|
|
var w=(%_IsJSProxy(bc))?aG:%GetArrayKeys(bc,aG);
|
|||
|
|
if((typeof(w)==='number')){
|
|||
|
|
var bd=w;
|
|||
|
|
for(var z=q;z<bd;z++){
|
|||
|
|
if((%_Call(l,bc,z))){
|
|||
|
|
ba[z]=(void 0);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
for(var z=0;z<w.length;z++){
|
|||
|
|
var aa=w[z];
|
|||
|
|
if(q<=aa&&(%_Call(l,bc,aa))){
|
|||
|
|
ba[aa]=(void 0);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
var bf=function SafeRemoveArrayHoles(ba){
|
|||
|
|
var bg=0;
|
|||
|
|
var bh=s-1;
|
|||
|
|
var bi=0;
|
|||
|
|
while(bg<bh){
|
|||
|
|
while(bg<bh&&
|
|||
|
|
!(ba[bg]===(void 0))){
|
|||
|
|
bg++;
|
|||
|
|
}
|
|||
|
|
if(!(%_Call(l,ba,bg))){
|
|||
|
|
bi++;
|
|||
|
|
}
|
|||
|
|
while(bg<bh&&
|
|||
|
|
(ba[bh]===(void 0))){
|
|||
|
|
if(!(%_Call(l,ba,bh))){
|
|||
|
|
bi++;
|
|||
|
|
}
|
|||
|
|
bh--;
|
|||
|
|
}
|
|||
|
|
if(bg<bh){
|
|||
|
|
ba[bg]=ba[bh];
|
|||
|
|
ba[bh]=(void 0);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!(ba[bg]===(void 0)))bg++;
|
|||
|
|
var z;
|
|||
|
|
for(z=bg;z<s-bi;z++){
|
|||
|
|
ba[z]=(void 0);
|
|||
|
|
}
|
|||
|
|
for(z=s-bi;z<s;z++){
|
|||
|
|
if(z in %object_get_prototype_of(ba)){
|
|||
|
|
ba[z]=(void 0);
|
|||
|
|
}else{
|
|||
|
|
delete ba[z];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return bg;
|
|||
|
|
};
|
|||
|
|
if(s<2)return r;
|
|||
|
|
var G=(%_IsArray(r));
|
|||
|
|
var bj;
|
|||
|
|
if(!G){
|
|||
|
|
bj=aZ(r,s);
|
|||
|
|
}
|
|||
|
|
var bk=%RemoveArrayHoles(r,s);
|
|||
|
|
if(bk==-1){
|
|||
|
|
bk=bf(r);
|
|||
|
|
}
|
|||
|
|
aO(r,0,bk);
|
|||
|
|
if(!G&&(bk+1<bj)){
|
|||
|
|
be(r,bk,bj);
|
|||
|
|
}
|
|||
|
|
return r;
|
|||
|
|
}
|
|||
|
|
function ArraySort(aD){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.sort");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArraySort(r,s,aD);
|
|||
|
|
}
|
|||
|
|
function InnerArrayFilter(bl,bm,r,s,ax){
|
|||
|
|
var bn=0;
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
if(z in r){
|
|||
|
|
var aH=r[z];
|
|||
|
|
if(%_Call(bl,bm,aH,z,r)){
|
|||
|
|
%CreateDataProperty(ax,bn,aH);
|
|||
|
|
bn++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return ax;
|
|||
|
|
}
|
|||
|
|
function ArrayFilter(bl,bm){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.filter");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
if(!(typeof(bl)==='function'))throw i(15,bl);
|
|||
|
|
var ax=ArraySpeciesCreate(r,0);
|
|||
|
|
return InnerArrayFilter(bl,bm,r,s,ax);
|
|||
|
|
}
|
|||
|
|
function InnerArrayForEach(bl,bm,r,s){
|
|||
|
|
if(!(typeof(bl)==='function'))throw i(15,bl);
|
|||
|
|
if((bm===(void 0))){
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
if(z in r){
|
|||
|
|
var aH=r[z];
|
|||
|
|
bl(aH,z,r);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
if(z in r){
|
|||
|
|
var aH=r[z];
|
|||
|
|
%_Call(bl,bm,aH,z,r);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function ArrayForEach(bl,bm){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.forEach");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
InnerArrayForEach(bl,bm,r,s);
|
|||
|
|
}
|
|||
|
|
function InnerArraySome(bl,bm,r,s){
|
|||
|
|
if(!(typeof(bl)==='function'))throw i(15,bl);
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
if(z in r){
|
|||
|
|
var aH=r[z];
|
|||
|
|
if(%_Call(bl,bm,aH,z,r))return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
function ArraySome(bl,bm){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.some");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArraySome(bl,bm,r,s);
|
|||
|
|
}
|
|||
|
|
function InnerArrayEvery(bl,bm,r,s){
|
|||
|
|
if(!(typeof(bl)==='function'))throw i(15,bl);
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
if(z in r){
|
|||
|
|
var aH=r[z];
|
|||
|
|
if(!%_Call(bl,bm,aH,z,r))return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
function ArrayEvery(bl,bm){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.every");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArrayEvery(bl,bm,r,s);
|
|||
|
|
}
|
|||
|
|
function ArrayMap(bl,bm){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.map");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
if(!(typeof(bl)==='function'))throw i(15,bl);
|
|||
|
|
var ax=ArraySpeciesCreate(r,s);
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
if(z in r){
|
|||
|
|
var aH=r[z];
|
|||
|
|
%CreateDataProperty(ax,z,%_Call(bl,bm,aH,z,r));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return ax;
|
|||
|
|
}
|
|||
|
|
function InnerArrayIndexOf(r,aH,aa,s){
|
|||
|
|
if(s==0)return-1;
|
|||
|
|
if((aa===(void 0))){
|
|||
|
|
aa=0;
|
|||
|
|
}else{
|
|||
|
|
aa=(((%_ToInteger(aa)))+0);
|
|||
|
|
if(aa<0){
|
|||
|
|
aa=s+aa;
|
|||
|
|
if(aa<0)aa=0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bo=aa;
|
|||
|
|
var bb=s;
|
|||
|
|
if(UseSparseVariant(r,s,(%_IsArray(r)),bb-bo)){
|
|||
|
|
%NormalizeElements(r);
|
|||
|
|
var w=%GetArrayKeys(r,s);
|
|||
|
|
if((typeof(w)==='number')){
|
|||
|
|
bb=w;
|
|||
|
|
}else{
|
|||
|
|
if(w.length==0)return-1;
|
|||
|
|
var bp=GetSortedArrayKeys(r,w);
|
|||
|
|
var af=bp.length;
|
|||
|
|
var z=0;
|
|||
|
|
while(z<af&&bp[z]<aa)z++;
|
|||
|
|
while(z<af){
|
|||
|
|
var F=bp[z];
|
|||
|
|
if(r[F]===aH)return F;
|
|||
|
|
z++;
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!(aH===(void 0))){
|
|||
|
|
for(var z=bo;z<bb;z++){
|
|||
|
|
if(r[z]===aH)return z;
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
for(var z=bo;z<bb;z++){
|
|||
|
|
if((r[z]===(void 0))&&z in r){
|
|||
|
|
return z;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
function ArrayIndexOf(aH,aa){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.indexOf");
|
|||
|
|
var s=(%_ToLength(this.length));
|
|||
|
|
return InnerArrayIndexOf(this,aH,aa,s);
|
|||
|
|
}
|
|||
|
|
function InnerArrayLastIndexOf(r,aH,aa,s,bq){
|
|||
|
|
if(s==0)return-1;
|
|||
|
|
if(bq<2){
|
|||
|
|
aa=s-1;
|
|||
|
|
}else{
|
|||
|
|
aa=(((%_ToInteger(aa)))+0);
|
|||
|
|
if(aa<0)aa+=s;
|
|||
|
|
if(aa<0)return-1;
|
|||
|
|
else if(aa>=s)aa=s-1;
|
|||
|
|
}
|
|||
|
|
var bo=0;
|
|||
|
|
var bb=aa;
|
|||
|
|
if(UseSparseVariant(r,s,(%_IsArray(r)),aa)){
|
|||
|
|
%NormalizeElements(r);
|
|||
|
|
var w=%GetArrayKeys(r,aa+1);
|
|||
|
|
if((typeof(w)==='number')){
|
|||
|
|
bb=w;
|
|||
|
|
}else{
|
|||
|
|
if(w.length==0)return-1;
|
|||
|
|
var bp=GetSortedArrayKeys(r,w);
|
|||
|
|
var z=bp.length-1;
|
|||
|
|
while(z>=0){
|
|||
|
|
var F=bp[z];
|
|||
|
|
if(r[F]===aH)return F;
|
|||
|
|
z--;
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!(aH===(void 0))){
|
|||
|
|
for(var z=bb;z>=bo;z--){
|
|||
|
|
if(r[z]===aH)return z;
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
for(var z=bb;z>=bo;z--){
|
|||
|
|
if((r[z]===(void 0))&&z in r){
|
|||
|
|
return z;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
function ArrayLastIndexOf(aH,aa){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.lastIndexOf");
|
|||
|
|
var s=(%_ToLength(this.length));
|
|||
|
|
return InnerArrayLastIndexOf(this,aH,aa,s,
|
|||
|
|
arguments.length);
|
|||
|
|
}
|
|||
|
|
function InnerArrayReduce(br,U,r,s,bq){
|
|||
|
|
if(!(typeof(br)==='function')){
|
|||
|
|
throw i(15,br);
|
|||
|
|
}
|
|||
|
|
var z=0;
|
|||
|
|
find_initial:if(bq<2){
|
|||
|
|
for(;z<s;z++){
|
|||
|
|
if(z in r){
|
|||
|
|
U=r[z++];
|
|||
|
|
break find_initial;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
throw i(120);
|
|||
|
|
}
|
|||
|
|
for(;z<s;z++){
|
|||
|
|
if(z in r){
|
|||
|
|
var aH=r[z];
|
|||
|
|
U=br(U,aH,z,r);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return U;
|
|||
|
|
}
|
|||
|
|
function ArrayReduce(br,U){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.reduce");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArrayReduce(br,U,r,s,
|
|||
|
|
arguments.length);
|
|||
|
|
}
|
|||
|
|
function InnerArrayReduceRight(br,U,r,s,
|
|||
|
|
bq){
|
|||
|
|
if(!(typeof(br)==='function')){
|
|||
|
|
throw i(15,br);
|
|||
|
|
}
|
|||
|
|
var z=s-1;
|
|||
|
|
find_initial:if(bq<2){
|
|||
|
|
for(;z>=0;z--){
|
|||
|
|
if(z in r){
|
|||
|
|
U=r[z--];
|
|||
|
|
break find_initial;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
throw i(120);
|
|||
|
|
}
|
|||
|
|
for(;z>=0;z--){
|
|||
|
|
if(z in r){
|
|||
|
|
var aH=r[z];
|
|||
|
|
U=br(U,aH,z,r);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return U;
|
|||
|
|
}
|
|||
|
|
function ArrayReduceRight(br,U){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.reduceRight");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArrayReduceRight(br,U,r,s,
|
|||
|
|
arguments.length);
|
|||
|
|
}
|
|||
|
|
function InnerArrayCopyWithin(bs,au,av,r,s){
|
|||
|
|
bs=(%_ToInteger(bs));
|
|||
|
|
var aG;
|
|||
|
|
if(bs<0){
|
|||
|
|
aG=j(s+bs,0);
|
|||
|
|
}else{
|
|||
|
|
aG=k(bs,s);
|
|||
|
|
}
|
|||
|
|
au=(%_ToInteger(au));
|
|||
|
|
var q;
|
|||
|
|
if(au<0){
|
|||
|
|
q=j(s+au,0);
|
|||
|
|
}else{
|
|||
|
|
q=k(au,s);
|
|||
|
|
}
|
|||
|
|
av=(av===(void 0))?s:(%_ToInteger(av));
|
|||
|
|
var bt;
|
|||
|
|
if(av<0){
|
|||
|
|
bt=j(s+av,0);
|
|||
|
|
}else{
|
|||
|
|
bt=k(av,s);
|
|||
|
|
}
|
|||
|
|
var bu=k(bt-q,s-aG);
|
|||
|
|
var bv=1;
|
|||
|
|
if(q<aG&&aG<(q+bu)){
|
|||
|
|
bv=-1;
|
|||
|
|
q=q+bu-1;
|
|||
|
|
aG=aG+bu-1;
|
|||
|
|
}
|
|||
|
|
while(bu>0){
|
|||
|
|
if(q in r){
|
|||
|
|
r[aG]=r[q];
|
|||
|
|
}else{
|
|||
|
|
delete r[aG];
|
|||
|
|
}
|
|||
|
|
q=q+bv;
|
|||
|
|
aG=aG+bv;
|
|||
|
|
bu--;
|
|||
|
|
}
|
|||
|
|
return r;
|
|||
|
|
}
|
|||
|
|
function ArrayCopyWithin(bs,au,av){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.copyWithin");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArrayCopyWithin(bs,au,av,r,s);
|
|||
|
|
}
|
|||
|
|
function InnerArrayFind(bw,bx,r,s){
|
|||
|
|
if(!(typeof(bw)==='function')){
|
|||
|
|
throw i(15,bw);
|
|||
|
|
}
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
var aH=r[z];
|
|||
|
|
if(%_Call(bw,bx,aH,z,r)){
|
|||
|
|
return aH;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
function ArrayFind(bw,bx){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.find");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToInteger(r.length));
|
|||
|
|
return InnerArrayFind(bw,bx,r,s);
|
|||
|
|
}
|
|||
|
|
function InnerArrayFindIndex(bw,bx,r,s){
|
|||
|
|
if(!(typeof(bw)==='function')){
|
|||
|
|
throw i(15,bw);
|
|||
|
|
}
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
var aH=r[z];
|
|||
|
|
if(%_Call(bw,bx,aH,z,r)){
|
|||
|
|
return z;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
function ArrayFindIndex(bw,bx){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.findIndex");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToInteger(r.length));
|
|||
|
|
return InnerArrayFindIndex(bw,bx,r,s);
|
|||
|
|
}
|
|||
|
|
function InnerArrayFill(L,au,av,r,s){
|
|||
|
|
var z=(au===(void 0))?0:(%_ToInteger(au));
|
|||
|
|
var av=(av===(void 0))?s:(%_ToInteger(av));
|
|||
|
|
if(z<0){
|
|||
|
|
z+=s;
|
|||
|
|
if(z<0)z=0;
|
|||
|
|
}else{
|
|||
|
|
if(z>s)z=s;
|
|||
|
|
}
|
|||
|
|
if(av<0){
|
|||
|
|
av+=s;
|
|||
|
|
if(av<0)av=0;
|
|||
|
|
}else{
|
|||
|
|
if(av>s)av=s;
|
|||
|
|
}
|
|||
|
|
if((av-z)>0&&%object_is_frozen(r)){
|
|||
|
|
throw i(12);
|
|||
|
|
}
|
|||
|
|
for(;z<av;z++)
|
|||
|
|
r[z]=L;
|
|||
|
|
return r;
|
|||
|
|
}
|
|||
|
|
function ArrayFill(L,au,av){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.fill");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArrayFill(L,au,av,r,s);
|
|||
|
|
}
|
|||
|
|
function InnerArrayIncludes(by,bz,r,s){
|
|||
|
|
if(s===0){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
var af=(%_ToInteger(bz));
|
|||
|
|
var V;
|
|||
|
|
if(af>=0){
|
|||
|
|
V=af;
|
|||
|
|
}else{
|
|||
|
|
V=s+af;
|
|||
|
|
if(V<0){
|
|||
|
|
V=0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
while(V<s){
|
|||
|
|
var bA=r[V];
|
|||
|
|
if(%SameValueZero(by,bA)){
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
++V;
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
function ArrayIncludes(by,bz){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"Array.prototype.includes");
|
|||
|
|
var r=(%_ToObject(this));
|
|||
|
|
var s=(%_ToLength(r.length));
|
|||
|
|
return InnerArrayIncludes(by,bz,r,s);
|
|||
|
|
}
|
|||
|
|
function ArrayFrom(bB,bC,bm){
|
|||
|
|
var bD=(%_ToObject(bB));
|
|||
|
|
var bE=!(bC===(void 0));
|
|||
|
|
if(bE){
|
|||
|
|
if(!(typeof(bC)==='function')){
|
|||
|
|
throw i(15,bC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bF=e(bD,n);
|
|||
|
|
var V;
|
|||
|
|
var ax;
|
|||
|
|
var bG;
|
|||
|
|
var bH;
|
|||
|
|
if(!(bF===(void 0))){
|
|||
|
|
ax=%IsConstructor(this)?new this():[];
|
|||
|
|
V=0;
|
|||
|
|
for(bH of
|
|||
|
|
{[n](){return d(bD,bF)}}){
|
|||
|
|
if(bE){
|
|||
|
|
bG=%_Call(bC,bm,bH,V);
|
|||
|
|
}else{
|
|||
|
|
bG=bH;
|
|||
|
|
}
|
|||
|
|
%CreateDataProperty(ax,V,bG);
|
|||
|
|
V++;
|
|||
|
|
}
|
|||
|
|
ax.length=V;
|
|||
|
|
return ax;
|
|||
|
|
}else{
|
|||
|
|
var S=(%_ToLength(bD.length));
|
|||
|
|
ax=%IsConstructor(this)?new this(S):new f(S);
|
|||
|
|
for(V=0;V<S;++V){
|
|||
|
|
bH=bD[V];
|
|||
|
|
if(bE){
|
|||
|
|
bG=%_Call(bC,bm,bH,V);
|
|||
|
|
}else{
|
|||
|
|
bG=bH;
|
|||
|
|
}
|
|||
|
|
%CreateDataProperty(ax,V,bG);
|
|||
|
|
}
|
|||
|
|
ax.length=V;
|
|||
|
|
return ax;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function ArrayOf(...args){
|
|||
|
|
var s=args.length;
|
|||
|
|
var t=this;
|
|||
|
|
var r=%IsConstructor(t)?new t(s):[];
|
|||
|
|
for(var z=0;z<s;z++){
|
|||
|
|
%CreateDataProperty(r,z,args[z]);
|
|||
|
|
}
|
|||
|
|
r.length=s;
|
|||
|
|
return r;
|
|||
|
|
}
|
|||
|
|
function ArraySpecies(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
%AddNamedProperty(f.prototype,"constructor",f,
|
|||
|
|
2);
|
|||
|
|
var bI={
|
|||
|
|
__proto__:null,
|
|||
|
|
copyWithin:true,
|
|||
|
|
entries:true,
|
|||
|
|
fill:true,
|
|||
|
|
find:true,
|
|||
|
|
findIndex:true,
|
|||
|
|
includes:true,
|
|||
|
|
keys:true,
|
|||
|
|
};
|
|||
|
|
%AddNamedProperty(f.prototype,p,bI,
|
|||
|
|
2|1);
|
|||
|
|
%FunctionSetLength(ArrayFrom,1);
|
|||
|
|
b.InstallFunctions(f,2,[
|
|||
|
|
"from",ArrayFrom,
|
|||
|
|
"of",ArrayOf
|
|||
|
|
]);
|
|||
|
|
var bJ=%SpecialArrayFunctions();
|
|||
|
|
var bK=function(bL,bM,S){
|
|||
|
|
var bl=bM;
|
|||
|
|
if(bJ.hasOwnProperty(bL)){
|
|||
|
|
bl=bJ[bL];
|
|||
|
|
}
|
|||
|
|
if(!(S===(void 0))){
|
|||
|
|
%FunctionSetLength(bl,S);
|
|||
|
|
}
|
|||
|
|
return bl;
|
|||
|
|
};
|
|||
|
|
b.InstallFunctions(f.prototype,2,[
|
|||
|
|
"toString",bK("toString",ArrayToString),
|
|||
|
|
"toLocaleString",bK("toLocaleString",ArrayToLocaleString),
|
|||
|
|
"join",bK("join",ArrayJoin),
|
|||
|
|
"pop",bK("pop",ArrayPop),
|
|||
|
|
"push",bK("push",ArrayPush,1),
|
|||
|
|
"reverse",bK("reverse",ArrayReverse),
|
|||
|
|
"shift",bK("shift",ArrayShift),
|
|||
|
|
"unshift",bK("unshift",ArrayUnshift,1),
|
|||
|
|
"slice",bK("slice",ArraySlice,2),
|
|||
|
|
"splice",bK("splice",ArraySplice,2),
|
|||
|
|
"sort",bK("sort",ArraySort),
|
|||
|
|
"filter",bK("filter",ArrayFilter,1),
|
|||
|
|
"forEach",bK("forEach",ArrayForEach,1),
|
|||
|
|
"some",bK("some",ArraySome,1),
|
|||
|
|
"every",bK("every",ArrayEvery,1),
|
|||
|
|
"map",bK("map",ArrayMap,1),
|
|||
|
|
"indexOf",bK("indexOf",ArrayIndexOf,1),
|
|||
|
|
"lastIndexOf",bK("lastIndexOf",ArrayLastIndexOf,1),
|
|||
|
|
"reduce",bK("reduce",ArrayReduce,1),
|
|||
|
|
"reduceRight",bK("reduceRight",ArrayReduceRight,1),
|
|||
|
|
"copyWithin",bK("copyWithin",ArrayCopyWithin,2),
|
|||
|
|
"find",bK("find",ArrayFind,1),
|
|||
|
|
"findIndex",bK("findIndex",ArrayFindIndex,1),
|
|||
|
|
"fill",bK("fill",ArrayFill,1),
|
|||
|
|
"includes",bK("includes",ArrayIncludes,1),
|
|||
|
|
]);
|
|||
|
|
b.InstallGetter(f,o,ArraySpecies);
|
|||
|
|
%FinishArrayPrototypeSetup(f.prototype);
|
|||
|
|
b.SetUpLockedPrototype(g,f(),[
|
|||
|
|
"indexOf",bK("indexOf",ArrayIndexOf),
|
|||
|
|
"join",bK("join",ArrayJoin),
|
|||
|
|
"pop",bK("pop",ArrayPop),
|
|||
|
|
"push",bK("push",ArrayPush),
|
|||
|
|
"shift",bK("shift",ArrayShift),
|
|||
|
|
"sort",bK("sort",ArraySort),
|
|||
|
|
"splice",bK("splice",ArraySplice)
|
|||
|
|
]);
|
|||
|
|
b.SetUpLockedPrototype(h,f(),[
|
|||
|
|
"join",bK("join",ArrayJoin),
|
|||
|
|
"pop",bK("pop",ArrayPop),
|
|||
|
|
"push",bK("push",ArrayPush),
|
|||
|
|
"shift",bK("shift",ArrayShift)
|
|||
|
|
]);
|
|||
|
|
b.SetUpLockedPrototype(c.InternalPackedArray,f(),[
|
|||
|
|
"push",bK("push",ArrayPush),
|
|||
|
|
"pop",bK("pop",ArrayPop),
|
|||
|
|
"shift",bK("shift",ArrayShift),
|
|||
|
|
"unshift",bK("unshift",ArrayUnshift),
|
|||
|
|
"splice",bK("splice",ArraySplice),
|
|||
|
|
"slice",bK("slice",ArraySlice)
|
|||
|
|
]);
|
|||
|
|
b.Export(function(aG){
|
|||
|
|
aG.ArrayFrom=ArrayFrom;
|
|||
|
|
aG.ArrayIndexOf=ArrayIndexOf;
|
|||
|
|
aG.ArrayJoin=ArrayJoin;
|
|||
|
|
aG.ArrayPush=ArrayPush;
|
|||
|
|
aG.ArrayToString=ArrayToString;
|
|||
|
|
aG.InnerArrayCopyWithin=InnerArrayCopyWithin;
|
|||
|
|
aG.InnerArrayEvery=InnerArrayEvery;
|
|||
|
|
aG.InnerArrayFill=InnerArrayFill;
|
|||
|
|
aG.InnerArrayFilter=InnerArrayFilter;
|
|||
|
|
aG.InnerArrayFind=InnerArrayFind;
|
|||
|
|
aG.InnerArrayFindIndex=InnerArrayFindIndex;
|
|||
|
|
aG.InnerArrayForEach=InnerArrayForEach;
|
|||
|
|
aG.InnerArrayIncludes=InnerArrayIncludes;
|
|||
|
|
aG.InnerArrayIndexOf=InnerArrayIndexOf;
|
|||
|
|
aG.InnerArrayJoin=InnerArrayJoin;
|
|||
|
|
aG.InnerArrayLastIndexOf=InnerArrayLastIndexOf;
|
|||
|
|
aG.InnerArrayReduce=InnerArrayReduce;
|
|||
|
|
aG.InnerArrayReduceRight=InnerArrayReduceRight;
|
|||
|
|
aG.InnerArraySome=InnerArraySome;
|
|||
|
|
aG.InnerArraySort=InnerArraySort;
|
|||
|
|
aG.InnerArrayToLocaleString=InnerArrayToLocaleString;
|
|||
|
|
aG.PackedArrayReverse=PackedArrayReverse;
|
|||
|
|
});
|
|||
|
|
%InstallToContext([
|
|||
|
|
"array_pop",ArrayPop,
|
|||
|
|
"array_push",ArrayPush,
|
|||
|
|
"array_shift",ArrayShift,
|
|||
|
|
"array_splice",ArraySplice,
|
|||
|
|
"array_slice",ArraySlice,
|
|||
|
|
"array_unshift",ArrayUnshift,
|
|||
|
|
]);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
stringU<67>
|
|||
|
|
(function(a,b){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c;
|
|||
|
|
var d;
|
|||
|
|
var e=a.RegExp;
|
|||
|
|
var f=a.String;
|
|||
|
|
var g;
|
|||
|
|
var h;
|
|||
|
|
var i;
|
|||
|
|
var j;
|
|||
|
|
var k;
|
|||
|
|
var l;
|
|||
|
|
var m=b.ImportNow("match_symbol");
|
|||
|
|
var n=b.ImportNow("replace_symbol");
|
|||
|
|
var o=b.ImportNow("search_symbol");
|
|||
|
|
var p=b.ImportNow("split_symbol");
|
|||
|
|
b.Import(function(q){
|
|||
|
|
c=q.ArrayIndexOf;
|
|||
|
|
d=q.ArrayJoin;
|
|||
|
|
g=q.IsRegExp;
|
|||
|
|
h=q.MakeRangeError;
|
|||
|
|
i=q.MakeTypeError;
|
|||
|
|
j=q.MaxSimple;
|
|||
|
|
k=q.MinSimple;
|
|||
|
|
l=q.RegExpInitialize;
|
|||
|
|
});
|
|||
|
|
function StringToString(){
|
|||
|
|
if(!(typeof(this)==='string')&&!(%_ClassOf(this)==='String')){
|
|||
|
|
throw i(68,'String.prototype.toString');
|
|||
|
|
}
|
|||
|
|
return %_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
function StringValueOf(){
|
|||
|
|
if(!(typeof(this)==='string')&&!(%_ClassOf(this)==='String')){
|
|||
|
|
throw i(68,'String.prototype.valueOf');
|
|||
|
|
}
|
|||
|
|
return %_ValueOf(this);
|
|||
|
|
}
|
|||
|
|
function StringConcat(r){
|
|||
|
|
"use strict";
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.concat");
|
|||
|
|
var s=(%_ToString(this));
|
|||
|
|
var t=arguments.length;
|
|||
|
|
for(var u=0;u<t;++u){
|
|||
|
|
s=s+(%_ToString(arguments[u]));
|
|||
|
|
}
|
|||
|
|
return s;
|
|||
|
|
}
|
|||
|
|
function StringIndexOf(v,w){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.indexOf");
|
|||
|
|
var x=(%_ToString(this));
|
|||
|
|
v=(%_ToString(v));
|
|||
|
|
var y=(%_ToInteger(w));
|
|||
|
|
if(y<0)y=0;
|
|||
|
|
if(y>x.length)y=x.length;
|
|||
|
|
return %StringIndexOf(x,v,y);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(StringIndexOf,1);
|
|||
|
|
function StringLastIndexOf(z,A){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.lastIndexOf");
|
|||
|
|
var B=(%_ToString(this));
|
|||
|
|
var C=B.length;
|
|||
|
|
var z=(%_ToString(z));
|
|||
|
|
var D=z.length;
|
|||
|
|
var y=C-D;
|
|||
|
|
var w=(%_ToNumber(A));
|
|||
|
|
if(!(!%_IsSmi(%IS_VAR(w))&&!(w==w))){
|
|||
|
|
w=(%_ToInteger(w));
|
|||
|
|
if(w<0){
|
|||
|
|
w=0;
|
|||
|
|
}
|
|||
|
|
if(w+D<C){
|
|||
|
|
y=w;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(y<0){
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
return %StringLastIndexOf(B,z,y);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(StringLastIndexOf,1);
|
|||
|
|
function StringLocaleCompareJS(r){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.localeCompare");
|
|||
|
|
return %StringLocaleCompare((%_ToString(this)),(%_ToString(r)));
|
|||
|
|
}
|
|||
|
|
function StringMatchJS(v){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.match");
|
|||
|
|
if(!(v==null)){
|
|||
|
|
var E=v[m];
|
|||
|
|
if(!(E===(void 0))){
|
|||
|
|
return %_Call(E,v,this);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var x=(%_ToString(this));
|
|||
|
|
var F=%_NewObject(e,e);
|
|||
|
|
l(F,v);
|
|||
|
|
return F[m](x);
|
|||
|
|
}
|
|||
|
|
function StringNormalize(G){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.normalize");
|
|||
|
|
var s=(%_ToString(this));
|
|||
|
|
var H=(G===(void 0))?'NFC':(%_ToString(G));
|
|||
|
|
var I=['NFC','NFD','NFKC','NFKD'];
|
|||
|
|
var J=%_Call(c,I,H);
|
|||
|
|
if(J===-1){
|
|||
|
|
throw h(174,
|
|||
|
|
%_Call(d,I,', '));
|
|||
|
|
}
|
|||
|
|
return s;
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(StringNormalize,0);
|
|||
|
|
var K=[2,"","",-1,-1];
|
|||
|
|
function StringReplace(L,M){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.replace");
|
|||
|
|
if(!(L==null)){
|
|||
|
|
var N=L[n];
|
|||
|
|
if(!(N===(void 0))){
|
|||
|
|
return %_Call(N,L,this,M);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var x=(%_ToString(this));
|
|||
|
|
L=(%_ToString(L));
|
|||
|
|
if(L.length==1&&
|
|||
|
|
x.length>0xFF&&
|
|||
|
|
(typeof(M)==='string')&&
|
|||
|
|
%StringIndexOf(M,'$',0)<0){
|
|||
|
|
return %StringReplaceOneCharWithString(x,L,M);
|
|||
|
|
}
|
|||
|
|
var O=%StringIndexOf(x,L,0);
|
|||
|
|
if(O<0)return x;
|
|||
|
|
var P=O+L.length;
|
|||
|
|
var Q=%_SubString(x,0,O);
|
|||
|
|
if((typeof(M)==='function')){
|
|||
|
|
Q+=M(L,O,x);
|
|||
|
|
}else{
|
|||
|
|
K[3]=O;
|
|||
|
|
K[4]=P;
|
|||
|
|
Q=ExpandReplacement((%_ToString(M)),
|
|||
|
|
x,
|
|||
|
|
K,
|
|||
|
|
Q);
|
|||
|
|
}
|
|||
|
|
return Q+%_SubString(x,P,x.length);
|
|||
|
|
}
|
|||
|
|
function ExpandReplacement(R,x,S,Q){
|
|||
|
|
var T=R.length;
|
|||
|
|
var U=%StringIndexOf(R,'$',0);
|
|||
|
|
if(U<0){
|
|||
|
|
if(T>0)Q+=R;
|
|||
|
|
return Q;
|
|||
|
|
}
|
|||
|
|
if(U>0)Q+=%_SubString(R,0,U);
|
|||
|
|
while(true){
|
|||
|
|
var V='$';
|
|||
|
|
var w=U+1;
|
|||
|
|
if(w<T){
|
|||
|
|
var W=%_StringCharCodeAt(R,w);
|
|||
|
|
if(W==36){
|
|||
|
|
++w;
|
|||
|
|
Q+='$';
|
|||
|
|
}else if(W==38){
|
|||
|
|
++w;
|
|||
|
|
Q+=
|
|||
|
|
%_SubString(x,S[3],S[4]);
|
|||
|
|
}else if(W==96){
|
|||
|
|
++w;
|
|||
|
|
Q+=%_SubString(x,0,S[3]);
|
|||
|
|
}else if(W==39){
|
|||
|
|
++w;
|
|||
|
|
Q+=%_SubString(x,S[4],x.length);
|
|||
|
|
}else if(W>=48&&W<=57){
|
|||
|
|
var X=(W-48)<<1;
|
|||
|
|
var Y=1;
|
|||
|
|
var Z=((S)[0]);
|
|||
|
|
if(w+1<R.length){
|
|||
|
|
var U=%_StringCharCodeAt(R,w+1);
|
|||
|
|
if(U>=48&&U<=57){
|
|||
|
|
var aa=X*10+((U-48)<<1);
|
|||
|
|
if(aa<Z){
|
|||
|
|
X=aa;
|
|||
|
|
Y=2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(X!=0&&X<Z){
|
|||
|
|
var O=S[(3+(X))];
|
|||
|
|
if(O>=0){
|
|||
|
|
Q+=
|
|||
|
|
%_SubString(x,O,S[(3+(X+1))]);
|
|||
|
|
}
|
|||
|
|
w+=Y;
|
|||
|
|
}else{
|
|||
|
|
Q+='$';
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
Q+='$';
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
Q+='$';
|
|||
|
|
}
|
|||
|
|
U=%StringIndexOf(R,'$',w);
|
|||
|
|
if(U<0){
|
|||
|
|
if(w<T){
|
|||
|
|
Q+=%_SubString(R,w,T);
|
|||
|
|
}
|
|||
|
|
return Q;
|
|||
|
|
}
|
|||
|
|
if(U>w){
|
|||
|
|
Q+=%_SubString(R,w,U);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return Q;
|
|||
|
|
}
|
|||
|
|
function StringSearch(v){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.search");
|
|||
|
|
if(!(v==null)){
|
|||
|
|
var ab=v[o];
|
|||
|
|
if(!(ab===(void 0))){
|
|||
|
|
return %_Call(ab,v,this);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var x=(%_ToString(this));
|
|||
|
|
var F=%_NewObject(e,e);
|
|||
|
|
l(F,v);
|
|||
|
|
return %_Call(F[o],F,x);
|
|||
|
|
}
|
|||
|
|
function StringSlice(O,P){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.slice");
|
|||
|
|
var s=(%_ToString(this));
|
|||
|
|
var ac=s.length;
|
|||
|
|
var ad=(%_ToInteger(O));
|
|||
|
|
var ae=ac;
|
|||
|
|
if(!(P===(void 0))){
|
|||
|
|
ae=(%_ToInteger(P));
|
|||
|
|
}
|
|||
|
|
if(ad<0){
|
|||
|
|
ad+=ac;
|
|||
|
|
if(ad<0){
|
|||
|
|
ad=0;
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
if(ad>ac){
|
|||
|
|
return'';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(ae<0){
|
|||
|
|
ae+=ac;
|
|||
|
|
if(ae<0){
|
|||
|
|
return'';
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
if(ae>ac){
|
|||
|
|
ae=ac;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(ae<=ad){
|
|||
|
|
return'';
|
|||
|
|
}
|
|||
|
|
return %_SubString(s,ad,ae);
|
|||
|
|
}
|
|||
|
|
function StringSplitJS(af,ag){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.split");
|
|||
|
|
if(!(af==null)){
|
|||
|
|
var ah=af[p];
|
|||
|
|
if(!(ah===(void 0))){
|
|||
|
|
return %_Call(ah,af,this,ag);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var x=(%_ToString(this));
|
|||
|
|
ag=((ag===(void 0)))?4294967295:((ag)>>>0);
|
|||
|
|
var T=x.length;
|
|||
|
|
var ai=(%_ToString(af));
|
|||
|
|
if(ag===0)return[];
|
|||
|
|
if((af===(void 0)))return[x];
|
|||
|
|
var aj=ai.length;
|
|||
|
|
if(aj===0)return %StringToArray(x,ag);
|
|||
|
|
return %StringSplit(x,ai,ag);
|
|||
|
|
}
|
|||
|
|
function StringSubstring(O,P){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.subString");
|
|||
|
|
var s=(%_ToString(this));
|
|||
|
|
var ac=s.length;
|
|||
|
|
var ad=(%_ToInteger(O));
|
|||
|
|
if(ad<0){
|
|||
|
|
ad=0;
|
|||
|
|
}else if(ad>ac){
|
|||
|
|
ad=ac;
|
|||
|
|
}
|
|||
|
|
var ae=ac;
|
|||
|
|
if(!(P===(void 0))){
|
|||
|
|
ae=(%_ToInteger(P));
|
|||
|
|
if(ae>ac){
|
|||
|
|
ae=ac;
|
|||
|
|
}else{
|
|||
|
|
if(ae<0)ae=0;
|
|||
|
|
if(ad>ae){
|
|||
|
|
var ak=ae;
|
|||
|
|
ae=ad;
|
|||
|
|
ad=ak;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return %_SubString(s,ad,ae);
|
|||
|
|
}
|
|||
|
|
function StringSubstr(O,al){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.substr");
|
|||
|
|
var s=(%_ToString(this));
|
|||
|
|
var t;
|
|||
|
|
if((al===(void 0))){
|
|||
|
|
t=s.length;
|
|||
|
|
}else{
|
|||
|
|
t=(%_ToInteger(al));
|
|||
|
|
if(t<=0)return'';
|
|||
|
|
}
|
|||
|
|
if((O===(void 0))){
|
|||
|
|
O=0;
|
|||
|
|
}else{
|
|||
|
|
O=(%_ToInteger(O));
|
|||
|
|
if(O>=s.length)return'';
|
|||
|
|
if(O<0){
|
|||
|
|
O+=s.length;
|
|||
|
|
if(O<0)O=0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var P=O+t;
|
|||
|
|
if(P>s.length)P=s.length;
|
|||
|
|
return %_SubString(s,O,P);
|
|||
|
|
}
|
|||
|
|
function StringToLowerCaseJS(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.toLowerCase");
|
|||
|
|
return %StringToLowerCase((%_ToString(this)));
|
|||
|
|
}
|
|||
|
|
function StringToLocaleLowerCase(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.toLocaleLowerCase");
|
|||
|
|
return %StringToLowerCase((%_ToString(this)));
|
|||
|
|
}
|
|||
|
|
function StringToUpperCaseJS(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.toUpperCase");
|
|||
|
|
return %StringToUpperCase((%_ToString(this)));
|
|||
|
|
}
|
|||
|
|
function StringToLocaleUpperCase(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.toLocaleUpperCase");
|
|||
|
|
return %StringToUpperCase((%_ToString(this)));
|
|||
|
|
}
|
|||
|
|
function HtmlEscape(am){
|
|||
|
|
return %_Call(StringReplace,(%_ToString(am)),/"/g,""");
|
|||
|
|
}
|
|||
|
|
function StringAnchor(an){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.anchor");
|
|||
|
|
return"<a name=\""+HtmlEscape(an)+"\">"+(%_ToString(this))+
|
|||
|
|
"</a>";
|
|||
|
|
}
|
|||
|
|
function StringBig(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.big");
|
|||
|
|
return"<big>"+(%_ToString(this))+"</big>";
|
|||
|
|
}
|
|||
|
|
function StringBlink(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.blink");
|
|||
|
|
return"<blink>"+(%_ToString(this))+"</blink>";
|
|||
|
|
}
|
|||
|
|
function StringBold(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.bold");
|
|||
|
|
return"<b>"+(%_ToString(this))+"</b>";
|
|||
|
|
}
|
|||
|
|
function StringFixed(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.fixed");
|
|||
|
|
return"<tt>"+(%_ToString(this))+"</tt>";
|
|||
|
|
}
|
|||
|
|
function StringFontcolor(ao){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.fontcolor");
|
|||
|
|
return"<font color=\""+HtmlEscape(ao)+"\">"+(%_ToString(this))+
|
|||
|
|
"</font>";
|
|||
|
|
}
|
|||
|
|
function StringFontsize(ap){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.fontsize");
|
|||
|
|
return"<font size=\""+HtmlEscape(ap)+"\">"+(%_ToString(this))+
|
|||
|
|
"</font>";
|
|||
|
|
}
|
|||
|
|
function StringItalics(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.italics");
|
|||
|
|
return"<i>"+(%_ToString(this))+"</i>";
|
|||
|
|
}
|
|||
|
|
function StringLink(s){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.link");
|
|||
|
|
return"<a href=\""+HtmlEscape(s)+"\">"+(%_ToString(this))+"</a>";
|
|||
|
|
}
|
|||
|
|
function StringSmall(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.small");
|
|||
|
|
return"<small>"+(%_ToString(this))+"</small>";
|
|||
|
|
}
|
|||
|
|
function StringStrike(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.strike");
|
|||
|
|
return"<strike>"+(%_ToString(this))+"</strike>";
|
|||
|
|
}
|
|||
|
|
function StringSub(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.sub");
|
|||
|
|
return"<sub>"+(%_ToString(this))+"</sub>";
|
|||
|
|
}
|
|||
|
|
function StringSup(){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.sup");
|
|||
|
|
return"<sup>"+(%_ToString(this))+"</sup>";
|
|||
|
|
}
|
|||
|
|
function StringRepeat(aq){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.repeat");
|
|||
|
|
var s=(%_ToString(this));
|
|||
|
|
var al=(%_ToInteger(aq));
|
|||
|
|
if(al<0||al===(1/0))throw h(156);
|
|||
|
|
if(s.length===0)return"";
|
|||
|
|
if(al>%_MaxSmi())throw h(156);
|
|||
|
|
var ar="";
|
|||
|
|
while(true){
|
|||
|
|
if(al&1)ar+=s;
|
|||
|
|
al>>=1;
|
|||
|
|
if(al===0)return ar;
|
|||
|
|
s+=s;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function StringStartsWith(as,w){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.startsWith");
|
|||
|
|
var s=(%_ToString(this));
|
|||
|
|
if(g(as)){
|
|||
|
|
throw i(39,"String.prototype.startsWith");
|
|||
|
|
}
|
|||
|
|
var at=(%_ToString(as));
|
|||
|
|
var A=(%_ToInteger(w));
|
|||
|
|
var ac=s.length;
|
|||
|
|
var O=k(j(A,0),ac);
|
|||
|
|
var au=at.length;
|
|||
|
|
if(au+O>ac){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
return %_SubString(s,O,O+au)===at;
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(StringStartsWith,1);
|
|||
|
|
function StringEndsWith(as,w){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.endsWith");
|
|||
|
|
var s=(%_ToString(this));
|
|||
|
|
if(g(as)){
|
|||
|
|
throw i(39,"String.prototype.endsWith");
|
|||
|
|
}
|
|||
|
|
var at=(%_ToString(as));
|
|||
|
|
var ac=s.length;
|
|||
|
|
var A=!(w===(void 0))?(%_ToInteger(w)):ac
|
|||
|
|
var P=k(j(A,0),ac);
|
|||
|
|
var au=at.length;
|
|||
|
|
var O=P-au;
|
|||
|
|
if(O<0){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
return %_SubString(s,O,O+au)===at;
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(StringEndsWith,1);
|
|||
|
|
function StringIncludes(as,w){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.includes");
|
|||
|
|
var R=(%_ToString(this));
|
|||
|
|
if(g(as)){
|
|||
|
|
throw i(39,"String.prototype.includes");
|
|||
|
|
}
|
|||
|
|
as=(%_ToString(as));
|
|||
|
|
var A=(%_ToInteger(w));
|
|||
|
|
var av=R.length;
|
|||
|
|
if(A<0)A=0;
|
|||
|
|
if(A>av)A=av;
|
|||
|
|
var aw=as.length;
|
|||
|
|
if(aw+A>av){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
return %StringIndexOf(R,as,A)!==-1;
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(StringIncludes,1);
|
|||
|
|
function StringCodePointAt(A){
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw i(17,"String.prototype.codePointAt");
|
|||
|
|
var R=(%_ToString(this));
|
|||
|
|
var ap=R.length;
|
|||
|
|
A=(%_ToInteger(A));
|
|||
|
|
if(A<0||A>=ap){
|
|||
|
|
return(void 0);
|
|||
|
|
}
|
|||
|
|
var ax=%_StringCharCodeAt(R,A);
|
|||
|
|
if(ax<0xD800||ax>0xDBFF||A+1==ap){
|
|||
|
|
return ax;
|
|||
|
|
}
|
|||
|
|
var ay=%_StringCharCodeAt(R,A+1);
|
|||
|
|
if(ay<0xDC00||ay>0xDFFF){
|
|||
|
|
return ax;
|
|||
|
|
}
|
|||
|
|
return(ax-0xD800)*0x400+ay+0x2400;
|
|||
|
|
}
|
|||
|
|
function StringRaw(az){
|
|||
|
|
"use strict";
|
|||
|
|
var aA=arguments.length;
|
|||
|
|
var aB=(%_ToObject(az));
|
|||
|
|
var aC=(%_ToObject(aB.raw));
|
|||
|
|
var aD=(%_ToLength(aC.length));
|
|||
|
|
if(aD<=0)return"";
|
|||
|
|
var Q=(%_ToString(aC[0]));
|
|||
|
|
for(var u=1;u<aD;++u){
|
|||
|
|
if(u<aA){
|
|||
|
|
Q+=(%_ToString(arguments[u]));
|
|||
|
|
}
|
|||
|
|
Q+=(%_ToString(aC[u]));
|
|||
|
|
}
|
|||
|
|
return Q;
|
|||
|
|
}
|
|||
|
|
b.InstallFunctions(f,2,[
|
|||
|
|
"raw",StringRaw
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(f.prototype,2,[
|
|||
|
|
"valueOf",StringValueOf,
|
|||
|
|
"toString",StringToString,
|
|||
|
|
"codePointAt",StringCodePointAt,
|
|||
|
|
"concat",StringConcat,
|
|||
|
|
"endsWith",StringEndsWith,
|
|||
|
|
"includes",StringIncludes,
|
|||
|
|
"indexOf",StringIndexOf,
|
|||
|
|
"lastIndexOf",StringLastIndexOf,
|
|||
|
|
"localeCompare",StringLocaleCompareJS,
|
|||
|
|
"match",StringMatchJS,
|
|||
|
|
"normalize",StringNormalize,
|
|||
|
|
"repeat",StringRepeat,
|
|||
|
|
"replace",StringReplace,
|
|||
|
|
"search",StringSearch,
|
|||
|
|
"slice",StringSlice,
|
|||
|
|
"split",StringSplitJS,
|
|||
|
|
"substring",StringSubstring,
|
|||
|
|
"substr",StringSubstr,
|
|||
|
|
"startsWith",StringStartsWith,
|
|||
|
|
"toLowerCase",StringToLowerCaseJS,
|
|||
|
|
"toLocaleLowerCase",StringToLocaleLowerCase,
|
|||
|
|
"toUpperCase",StringToUpperCaseJS,
|
|||
|
|
"toLocaleUpperCase",StringToLocaleUpperCase,
|
|||
|
|
"link",StringLink,
|
|||
|
|
"anchor",StringAnchor,
|
|||
|
|
"fontcolor",StringFontcolor,
|
|||
|
|
"fontsize",StringFontsize,
|
|||
|
|
"big",StringBig,
|
|||
|
|
"blink",StringBlink,
|
|||
|
|
"bold",StringBold,
|
|||
|
|
"fixed",StringFixed,
|
|||
|
|
"italics",StringItalics,
|
|||
|
|
"small",StringSmall,
|
|||
|
|
"strike",StringStrike,
|
|||
|
|
"sub",StringSub,
|
|||
|
|
"sup",StringSup
|
|||
|
|
]);
|
|||
|
|
b.Export(function(aE){
|
|||
|
|
aE.ExpandReplacement=ExpandReplacement;
|
|||
|
|
aE.StringIndexOf=StringIndexOf;
|
|||
|
|
aE.StringLastIndexOf=StringLastIndexOf;
|
|||
|
|
aE.StringMatch=StringMatchJS;
|
|||
|
|
aE.StringReplace=StringReplace;
|
|||
|
|
aE.StringSlice=StringSlice;
|
|||
|
|
aE.StringSplit=StringSplitJS;
|
|||
|
|
aE.StringSubstr=StringSubstr;
|
|||
|
|
aE.StringSubstring=StringSubstring;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
math%
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Float64Array;
|
|||
|
|
var d=a.Math;
|
|||
|
|
var e=a.Object;
|
|||
|
|
var f=%GetRootNaN();
|
|||
|
|
var g=0;
|
|||
|
|
var h=(void 0);
|
|||
|
|
var i=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
function MathAbs(j){
|
|||
|
|
j=+j;
|
|||
|
|
return(j>0)?j:0-j;
|
|||
|
|
}
|
|||
|
|
function MathPowJS(j,k){
|
|||
|
|
return %_MathPow((%_ToNumber(j)),(%_ToNumber(k)));
|
|||
|
|
}
|
|||
|
|
function MathRandom(){
|
|||
|
|
if(g<=2){
|
|||
|
|
h=%GenerateRandomNumbers(h);
|
|||
|
|
if(%_IsTypedArray(h)){
|
|||
|
|
g=%_TypedArrayGetLength(h);
|
|||
|
|
}else{
|
|||
|
|
g=h.length;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return h[--g];
|
|||
|
|
}
|
|||
|
|
function MathRandomRaw(){
|
|||
|
|
if(g<=2){
|
|||
|
|
h=%GenerateRandomNumbers(h);
|
|||
|
|
g=%_TypedArrayGetLength(h);
|
|||
|
|
}
|
|||
|
|
return %_DoubleLo(h[--g])&0x3FFFFFFF;
|
|||
|
|
}
|
|||
|
|
function MathSign(j){
|
|||
|
|
j=+j;
|
|||
|
|
if(j>0)return 1;
|
|||
|
|
if(j<0)return-1;
|
|||
|
|
return j;
|
|||
|
|
}
|
|||
|
|
function MathAsinh(j){
|
|||
|
|
j=(%_ToNumber(j));
|
|||
|
|
if(j===0||!(%_IsSmi(%IS_VAR(j))||((j==j)&&(j!=1/0)&&(j!=-1/0))))return j;
|
|||
|
|
if(j>0)return %math_log(j+%math_sqrt(j*j+1));
|
|||
|
|
return-%math_log(-j+%math_sqrt(j*j+1));
|
|||
|
|
}
|
|||
|
|
function MathAcosh(j){
|
|||
|
|
j=(%_ToNumber(j));
|
|||
|
|
if(j<1)return f;
|
|||
|
|
if(!(%_IsSmi(%IS_VAR(j))||((j==j)&&(j!=1/0)&&(j!=-1/0))))return j;
|
|||
|
|
return %math_log(j+%math_sqrt(j+1)*%math_sqrt(j-1));
|
|||
|
|
}
|
|||
|
|
function MathHypot(j,k){
|
|||
|
|
var l=arguments.length;
|
|||
|
|
var m=0;
|
|||
|
|
for(var n=0;n<l;n++){
|
|||
|
|
var o=MathAbs(arguments[n]);
|
|||
|
|
if(o>m)m=o;
|
|||
|
|
arguments[n]=o;
|
|||
|
|
}
|
|||
|
|
if(m===(1/0))return(1/0);
|
|||
|
|
if(m===0)m=1;
|
|||
|
|
var p=0;
|
|||
|
|
var q=0;
|
|||
|
|
for(var n=0;n<l;n++){
|
|||
|
|
var o=arguments[n]/m;
|
|||
|
|
var r=o*o-q;
|
|||
|
|
var s=p+r;
|
|||
|
|
q=(s-p)-r;
|
|||
|
|
p=s;
|
|||
|
|
}
|
|||
|
|
return %math_sqrt(p)*m;
|
|||
|
|
}
|
|||
|
|
%InstallToContext([
|
|||
|
|
"math_pow",MathPowJS,
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(d,i,"Math",1|2);
|
|||
|
|
b.InstallConstants(d,[
|
|||
|
|
"PI",3.1415926535897932,
|
|||
|
|
"SQRT1_2",0.7071067811865476,
|
|||
|
|
"SQRT2",1.4142135623730951
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(d,2,[
|
|||
|
|
"random",MathRandom,
|
|||
|
|
"abs",MathAbs,
|
|||
|
|
"pow",MathPowJS,
|
|||
|
|
"sign",MathSign,
|
|||
|
|
"asinh",MathAsinh,
|
|||
|
|
"acosh",MathAcosh,
|
|||
|
|
"hypot",MathHypot,
|
|||
|
|
]);
|
|||
|
|
%SetForceInlineFlag(MathRandom);
|
|||
|
|
%SetForceInlineFlag(MathSign);
|
|||
|
|
b.Export(function(t){
|
|||
|
|
t.MathAbs=MathAbs;
|
|||
|
|
t.IntRandom=MathRandomRaw;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
fdlibm<62>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Math;
|
|||
|
|
var d;
|
|||
|
|
var e;
|
|||
|
|
b.Import(function(f){
|
|||
|
|
d=f.MathAbs;
|
|||
|
|
e=f.MathExpm1;
|
|||
|
|
});
|
|||
|
|
function MathSinh(g){
|
|||
|
|
g=g*1;
|
|||
|
|
var h=(g<0)?-0.5:0.5;
|
|||
|
|
var i=d(g);
|
|||
|
|
if(i<22){
|
|||
|
|
if(i<3.725290298461914e-9)return g;
|
|||
|
|
var j=e(i);
|
|||
|
|
if(i<1)return h*(2*j-j*j/(j+1));
|
|||
|
|
return h*(j+j/(j+1));
|
|||
|
|
}
|
|||
|
|
if(i<709.7822265625)return h*%math_exp(i);
|
|||
|
|
if(i<=710.4758600739439){
|
|||
|
|
var k=%math_exp(0.5*i);
|
|||
|
|
var j=h*k;
|
|||
|
|
return j*k;
|
|||
|
|
}
|
|||
|
|
return g*(1/0);
|
|||
|
|
}
|
|||
|
|
function MathCosh(g){
|
|||
|
|
g=g*1;
|
|||
|
|
var l=%_DoubleHi(g)&0x7fffffff;
|
|||
|
|
if(l<0x3fd62e43){
|
|||
|
|
var j=e(d(g));
|
|||
|
|
var k=1+j;
|
|||
|
|
if(l<0x3c800000)return k;
|
|||
|
|
return 1+(j*j)/(k+k);
|
|||
|
|
}
|
|||
|
|
if(l<0x40360000){
|
|||
|
|
var j=%math_exp(d(g));
|
|||
|
|
return 0.5*j+0.5/j;
|
|||
|
|
}
|
|||
|
|
if(l<0x40862e42)return 0.5*%math_exp(d(g));
|
|||
|
|
if(d(g)<=710.4758600739439){
|
|||
|
|
var k=%math_exp(0.5*d(g));
|
|||
|
|
var j=0.5*k;
|
|||
|
|
return j*k;
|
|||
|
|
}
|
|||
|
|
if((!%_IsSmi(%IS_VAR(g))&&!(g==g)))return g;
|
|||
|
|
return(1/0);
|
|||
|
|
}
|
|||
|
|
function MathTanh(g){
|
|||
|
|
g=g*1;
|
|||
|
|
if(!(%_IsSmi(%IS_VAR(g))||((g==g)&&(g!=1/0)&&(g!=-1/0)))){
|
|||
|
|
if(g>0)return 1;
|
|||
|
|
if(g<0)return-1;
|
|||
|
|
return g;
|
|||
|
|
}
|
|||
|
|
var i=d(g);
|
|||
|
|
var m;
|
|||
|
|
if(i<22){
|
|||
|
|
if(i<2.77555756156289135105e-17){
|
|||
|
|
return g;
|
|||
|
|
}
|
|||
|
|
if(i>=1){
|
|||
|
|
var j=e(2*i);
|
|||
|
|
m=1-2/(j+2);
|
|||
|
|
}else{
|
|||
|
|
var j=e(-2*i);
|
|||
|
|
m=-j/(j+2);
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
m=1;
|
|||
|
|
}
|
|||
|
|
return(g>=0)?m:-m;
|
|||
|
|
}
|
|||
|
|
b.InstallFunctions(c,2,[
|
|||
|
|
"sinh",MathSinh,
|
|||
|
|
"cosh",MathCosh,
|
|||
|
|
"tanh",MathTanh
|
|||
|
|
]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
regexpB
|
|||
|
|
(function(a,b){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c;
|
|||
|
|
var d=a.Array;
|
|||
|
|
var e=a.Object;
|
|||
|
|
var f=a.RegExp;
|
|||
|
|
var g;
|
|||
|
|
var h=b.InternalArray;
|
|||
|
|
var i=b.InternalPackedArray;
|
|||
|
|
var j;
|
|||
|
|
var k;
|
|||
|
|
var l;
|
|||
|
|
var m=b.ImportNow("match_symbol");
|
|||
|
|
var n=b.ImportNow("replace_symbol");
|
|||
|
|
var o=b.ImportNow("search_symbol");
|
|||
|
|
var p=b.ImportNow("species_symbol");
|
|||
|
|
var q=b.ImportNow("split_symbol");
|
|||
|
|
var r;
|
|||
|
|
b.Import(function(s){
|
|||
|
|
c=s.ExpandReplacement;
|
|||
|
|
j=s.MakeTypeError;
|
|||
|
|
k=s.MaxSimple;
|
|||
|
|
l=s.MinSimple;
|
|||
|
|
r=s.SpeciesConstructor;
|
|||
|
|
});
|
|||
|
|
var t=new i(
|
|||
|
|
2,
|
|||
|
|
"",
|
|||
|
|
(void 0),
|
|||
|
|
0,
|
|||
|
|
0
|
|||
|
|
);
|
|||
|
|
function IsRegExp(u){
|
|||
|
|
if(!(%_IsJSReceiver(u)))return false;
|
|||
|
|
var v=u[m];
|
|||
|
|
if(!(v===(void 0)))return(!!(v));
|
|||
|
|
return(%_IsRegExp(u));
|
|||
|
|
}
|
|||
|
|
function RegExpInitialize(w,x,y){
|
|||
|
|
x=(x===(void 0))?'':(%_ToString(x));
|
|||
|
|
y=(y===(void 0))?'':(%_ToString(y));
|
|||
|
|
%RegExpInitializeAndCompile(w,x,y);
|
|||
|
|
return w;
|
|||
|
|
}
|
|||
|
|
function PatternFlags(x){
|
|||
|
|
return((%_RegExpFlags(x)&1)?'g':'')+
|
|||
|
|
((%_RegExpFlags(x)&2)?'i':'')+
|
|||
|
|
((%_RegExpFlags(x)&4)?'m':'')+
|
|||
|
|
((%_RegExpFlags(x)&16)?'u':'')+
|
|||
|
|
((%_RegExpFlags(x)&8)?'y':'');
|
|||
|
|
}
|
|||
|
|
function RegExpConstructor(x,y){
|
|||
|
|
var z=new.target;
|
|||
|
|
var A=IsRegExp(x);
|
|||
|
|
if((z===(void 0))){
|
|||
|
|
z=f;
|
|||
|
|
if(A&&(y===(void 0))&&
|
|||
|
|
x.constructor===z){
|
|||
|
|
return x;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if((%_IsRegExp(x))){
|
|||
|
|
if((y===(void 0)))y=PatternFlags(x);
|
|||
|
|
x=(%_RegExpSource(x));
|
|||
|
|
}else if(A){
|
|||
|
|
var B=x;
|
|||
|
|
x=x.source;
|
|||
|
|
if((y===(void 0)))y=B.flags;
|
|||
|
|
}
|
|||
|
|
var w=%_NewObject(f,z);
|
|||
|
|
return RegExpInitialize(w,x,y);
|
|||
|
|
}
|
|||
|
|
function RegExpCompileJS(x,y){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
"RegExp.prototype.compile",this);
|
|||
|
|
}
|
|||
|
|
if((%_IsRegExp(x))){
|
|||
|
|
if(!(y===(void 0)))throw j(121);
|
|||
|
|
y=PatternFlags(x);
|
|||
|
|
x=(%_RegExpSource(x));
|
|||
|
|
}
|
|||
|
|
RegExpInitialize(this,x,y);
|
|||
|
|
}
|
|||
|
|
function DoRegExpExec(C,D,E){
|
|||
|
|
return %_RegExpExec(C,D,E,t);
|
|||
|
|
}
|
|||
|
|
function RegExpExecNoTests(C,D,F){
|
|||
|
|
var G=%_RegExpExec(C,D,F,t);
|
|||
|
|
if(G!==null){
|
|||
|
|
if((%_RegExpFlags(C)&8))C.lastIndex=G[4];
|
|||
|
|
var H=((G)[0])>>1;
|
|||
|
|
var F=G[3];
|
|||
|
|
var I=G[4];
|
|||
|
|
var J=%_SubString(D,F,I);
|
|||
|
|
var K=%_RegExpConstructResult(H,F,D);
|
|||
|
|
K[0]=J;
|
|||
|
|
if(H==1)return K;
|
|||
|
|
var L=3+2;
|
|||
|
|
for(var M=1;M<H;M++){
|
|||
|
|
F=G[L++];
|
|||
|
|
if(F!=-1){
|
|||
|
|
I=G[L];
|
|||
|
|
K[M]=%_SubString(D,F,I);
|
|||
|
|
}
|
|||
|
|
L++;
|
|||
|
|
}
|
|||
|
|
return K;
|
|||
|
|
;
|
|||
|
|
}
|
|||
|
|
C.lastIndex=0;
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
function RegExpSubclassExecJS(D){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
'RegExp.prototype.exec',this);
|
|||
|
|
}
|
|||
|
|
D=(%_ToString(D));
|
|||
|
|
var N=this.lastIndex;
|
|||
|
|
var M=(%_ToLength(N));
|
|||
|
|
var a=(!!((%_RegExpFlags(this)&1)));
|
|||
|
|
var O=(!!((%_RegExpFlags(this)&8)));
|
|||
|
|
var P=a||O;
|
|||
|
|
if(P){
|
|||
|
|
if(M>D.length){
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
M=0;
|
|||
|
|
}
|
|||
|
|
var Q=%_RegExpExec(this,D,M,t);
|
|||
|
|
if((Q===null)){
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
if(P){
|
|||
|
|
this.lastIndex=t[4];
|
|||
|
|
}
|
|||
|
|
var H=((Q)[0])>>1;
|
|||
|
|
var F=Q[3];
|
|||
|
|
var I=Q[4];
|
|||
|
|
var J=%_SubString(D,F,I);
|
|||
|
|
var K=%_RegExpConstructResult(H,F,D);
|
|||
|
|
K[0]=J;
|
|||
|
|
if(H==1)return K;
|
|||
|
|
var L=3+2;
|
|||
|
|
for(var M=1;M<H;M++){
|
|||
|
|
F=Q[L++];
|
|||
|
|
if(F!=-1){
|
|||
|
|
I=Q[L];
|
|||
|
|
K[M]=%_SubString(D,F,I);
|
|||
|
|
}
|
|||
|
|
L++;
|
|||
|
|
}
|
|||
|
|
return K;
|
|||
|
|
;
|
|||
|
|
}
|
|||
|
|
%FunctionRemovePrototype(RegExpSubclassExecJS);
|
|||
|
|
function RegExpExecJS(D){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
'RegExp.prototype.exec',this);
|
|||
|
|
}
|
|||
|
|
D=(%_ToString(D));
|
|||
|
|
var N=this.lastIndex;
|
|||
|
|
var M=(%_ToLength(N));
|
|||
|
|
var P=(%_RegExpFlags(this)&1)||(%_RegExpFlags(this)&8);
|
|||
|
|
if(P){
|
|||
|
|
if(M<0||M>D.length){
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
M=0;
|
|||
|
|
}
|
|||
|
|
var Q=%_RegExpExec(this,D,M,t);
|
|||
|
|
if((Q===null)){
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
if(P){
|
|||
|
|
this.lastIndex=t[4];
|
|||
|
|
}
|
|||
|
|
var H=((Q)[0])>>1;
|
|||
|
|
var F=Q[3];
|
|||
|
|
var I=Q[4];
|
|||
|
|
var J=%_SubString(D,F,I);
|
|||
|
|
var K=%_RegExpConstructResult(H,F,D);
|
|||
|
|
K[0]=J;
|
|||
|
|
if(H==1)return K;
|
|||
|
|
var L=3+2;
|
|||
|
|
for(var M=1;M<H;M++){
|
|||
|
|
F=Q[L++];
|
|||
|
|
if(F!=-1){
|
|||
|
|
I=Q[L];
|
|||
|
|
K[M]=%_SubString(D,F,I);
|
|||
|
|
}
|
|||
|
|
L++;
|
|||
|
|
}
|
|||
|
|
return K;
|
|||
|
|
;
|
|||
|
|
}
|
|||
|
|
function RegExpSubclassExec(C,D,R){
|
|||
|
|
if((R===(void 0))){
|
|||
|
|
R=C.exec;
|
|||
|
|
}
|
|||
|
|
if((typeof(R)==='function')){
|
|||
|
|
var K=%_Call(R,C,D);
|
|||
|
|
if(!(%_IsJSReceiver(K))&&!(K===null)){
|
|||
|
|
throw j(47);
|
|||
|
|
}
|
|||
|
|
return K;
|
|||
|
|
}
|
|||
|
|
return %_Call(RegExpExecJS,C,D);
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(RegExpSubclassExec);
|
|||
|
|
var S;
|
|||
|
|
var T;
|
|||
|
|
function RegExpTest(D){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
'RegExp.prototype.test',this);
|
|||
|
|
}
|
|||
|
|
D=(%_ToString(D));
|
|||
|
|
var N=this.lastIndex;
|
|||
|
|
var M=(%_ToLength(N));
|
|||
|
|
if((%_RegExpFlags(this)&1)||(%_RegExpFlags(this)&8)){
|
|||
|
|
if(M<0||M>D.length){
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
var Q=%_RegExpExec(this,D,M,t);
|
|||
|
|
if((Q===null)){
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
this.lastIndex=t[4];
|
|||
|
|
return true;
|
|||
|
|
}else{
|
|||
|
|
var C=this;
|
|||
|
|
var U=(%_RegExpSource(C));
|
|||
|
|
if(U.length>=3&&
|
|||
|
|
%_StringCharCodeAt(U,0)==46&&
|
|||
|
|
%_StringCharCodeAt(U,1)==42&&
|
|||
|
|
%_StringCharCodeAt(U,2)!=63){
|
|||
|
|
C=TrimRegExp(C);
|
|||
|
|
}
|
|||
|
|
var Q=%_RegExpExec(C,D,0,t);
|
|||
|
|
if((Q===null)){
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function RegExpSubclassTest(D){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
'RegExp.prototype.test',this);
|
|||
|
|
}
|
|||
|
|
D=(%_ToString(D));
|
|||
|
|
var V=RegExpSubclassExec(this,D);
|
|||
|
|
return!(V===null);
|
|||
|
|
}
|
|||
|
|
%FunctionRemovePrototype(RegExpSubclassTest);
|
|||
|
|
function TrimRegExp(C){
|
|||
|
|
if(S!==C){
|
|||
|
|
S=C;
|
|||
|
|
T=
|
|||
|
|
new f(
|
|||
|
|
%_SubString((%_RegExpSource(C)),2,(%_RegExpSource(C)).length),
|
|||
|
|
((%_RegExpFlags(C)&2)?(%_RegExpFlags(C)&4)?"im":"i"
|
|||
|
|
:(%_RegExpFlags(C)&4)?"m":""));
|
|||
|
|
}
|
|||
|
|
return T;
|
|||
|
|
}
|
|||
|
|
function RegExpToString(){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw j(
|
|||
|
|
43,'RegExp.prototype.toString',this);
|
|||
|
|
}
|
|||
|
|
if(this===g){
|
|||
|
|
%IncrementUseCounter(12);
|
|||
|
|
}
|
|||
|
|
return'/'+(%_ToString(this.source))+'/'+(%_ToString(this.flags));
|
|||
|
|
}
|
|||
|
|
function AtSurrogatePair(W,E){
|
|||
|
|
if(E+1>=W.length)return false;
|
|||
|
|
var J=%_StringCharCodeAt(W,E);
|
|||
|
|
if(J<0xD800||J>0xDBFF)return false;
|
|||
|
|
var X=%_StringCharCodeAt(W,E+1);
|
|||
|
|
return X>=0xDC00||X<=0xDFFF;
|
|||
|
|
}
|
|||
|
|
function RegExpSplit(D,Y){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
"RegExp.prototype.@@split",this);
|
|||
|
|
}
|
|||
|
|
var Z=this;
|
|||
|
|
var W=(%_ToString(D));
|
|||
|
|
Y=((Y===(void 0)))?4294967295:((Y)>>>0);
|
|||
|
|
var aa=W.length;
|
|||
|
|
if(Y===0)return[];
|
|||
|
|
if(aa===0){
|
|||
|
|
if(DoRegExpExec(Z,W,0,0)!==null)return[];
|
|||
|
|
return[W];
|
|||
|
|
}
|
|||
|
|
var ab=0;
|
|||
|
|
var ac=0;
|
|||
|
|
var ad=0;
|
|||
|
|
var K=new h();
|
|||
|
|
outer_loop:
|
|||
|
|
while(true){
|
|||
|
|
if(ac===aa){
|
|||
|
|
K[K.length]=%_SubString(W,ab,aa);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
var G=DoRegExpExec(Z,W,ac);
|
|||
|
|
if(G===null||aa===(ad=G[3])){
|
|||
|
|
K[K.length]=%_SubString(W,ab,aa);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
var ae=G[4];
|
|||
|
|
if(ac===ae&&ae===ab){
|
|||
|
|
if((%_RegExpFlags(this)&16)&&AtSurrogatePair(W,ac)){
|
|||
|
|
ac+=2;
|
|||
|
|
}else{
|
|||
|
|
ac++;
|
|||
|
|
}
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
K[K.length]=%_SubString(W,ab,ad);
|
|||
|
|
if(K.length===Y)break;
|
|||
|
|
var af=((G)[0])+3;
|
|||
|
|
for(var M=3+2;M<af;){
|
|||
|
|
var F=G[M++];
|
|||
|
|
var I=G[M++];
|
|||
|
|
if(I!=-1){
|
|||
|
|
K[K.length]=%_SubString(W,F,I);
|
|||
|
|
}else{
|
|||
|
|
K[K.length]=(void 0);
|
|||
|
|
}
|
|||
|
|
if(K.length===Y)break outer_loop;
|
|||
|
|
}
|
|||
|
|
ac=ab=ae;
|
|||
|
|
}
|
|||
|
|
var ag=[];
|
|||
|
|
%MoveArrayContents(K,ag);
|
|||
|
|
return ag;
|
|||
|
|
}
|
|||
|
|
function RegExpSubclassSplit(D,Y){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
"RegExp.prototype.@@split",this);
|
|||
|
|
}
|
|||
|
|
D=(%_ToString(D));
|
|||
|
|
var ah=r(this,f);
|
|||
|
|
var y=(%_ToString(this.flags));
|
|||
|
|
var R;
|
|||
|
|
if((%_IsRegExp(this))&&ah===f){
|
|||
|
|
R=this.exec;
|
|||
|
|
if(R===RegExpSubclassExecJS){
|
|||
|
|
return %_Call(RegExpSplit,this,D,Y);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var ai=%StringIndexOf(y,'u',0)>=0;
|
|||
|
|
var O=%StringIndexOf(y,'y',0)>=0;
|
|||
|
|
var aj=O?y:y+"y";
|
|||
|
|
var ak=new ah(this,aj);
|
|||
|
|
var al=new d();
|
|||
|
|
var am=0;
|
|||
|
|
var an=((Y===(void 0)))?4294967295:((Y)>>>0);
|
|||
|
|
var ao=D.length;
|
|||
|
|
var ap=0;
|
|||
|
|
if(an===0)return al;
|
|||
|
|
var K;
|
|||
|
|
if(ao===0){
|
|||
|
|
K=RegExpSubclassExec(ak,D);
|
|||
|
|
if((K===null))%AddElement(al,0,D);
|
|||
|
|
return al;
|
|||
|
|
}
|
|||
|
|
var aq=ap;
|
|||
|
|
while(aq<ao){
|
|||
|
|
ak.lastIndex=aq;
|
|||
|
|
K=RegExpSubclassExec(ak,D,R);
|
|||
|
|
R=(void 0);
|
|||
|
|
if((K===null)){
|
|||
|
|
aq+=AdvanceStringIndex(D,aq,ai);
|
|||
|
|
}else{
|
|||
|
|
var I=l((%_ToLength(ak.lastIndex)),ao);
|
|||
|
|
if(I===ap){
|
|||
|
|
aq+=AdvanceStringIndex(D,aq,ai);
|
|||
|
|
}else{
|
|||
|
|
%AddElement(
|
|||
|
|
al,am,
|
|||
|
|
%_SubString(D,ap,aq));
|
|||
|
|
am++;
|
|||
|
|
if(am===an)return al;
|
|||
|
|
ap=I;
|
|||
|
|
var ar=k((%_ToLength(K.length)),0);
|
|||
|
|
for(var M=1;M<ar;M++){
|
|||
|
|
%AddElement(al,am,K[M]);
|
|||
|
|
am++;
|
|||
|
|
if(am===an)return al;
|
|||
|
|
}
|
|||
|
|
aq=ap;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
%AddElement(al,am,
|
|||
|
|
%_SubString(D,ap,ao));
|
|||
|
|
return al;
|
|||
|
|
}
|
|||
|
|
%FunctionRemovePrototype(RegExpSubclassSplit);
|
|||
|
|
function RegExpSubclassMatch(D){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
"RegExp.prototype.@@match",this);
|
|||
|
|
}
|
|||
|
|
D=(%_ToString(D));
|
|||
|
|
var a=this.global;
|
|||
|
|
if(!a)return RegExpSubclassExec(this,D);
|
|||
|
|
var ai=this.unicode;
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
var al=new h();
|
|||
|
|
var as=0;
|
|||
|
|
var K;
|
|||
|
|
while(true){
|
|||
|
|
K=RegExpSubclassExec(this,D);
|
|||
|
|
if((K===null)){
|
|||
|
|
if(as===0)return null;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
var at=(%_ToString(K[0]));
|
|||
|
|
al[as]=at;
|
|||
|
|
if(at==="")SetAdvancedStringIndex(this,D,ai);
|
|||
|
|
as++;
|
|||
|
|
}
|
|||
|
|
var au=[];
|
|||
|
|
%MoveArrayContents(al,au);
|
|||
|
|
return au;
|
|||
|
|
}
|
|||
|
|
%FunctionRemovePrototype(RegExpSubclassMatch);
|
|||
|
|
var av=new h(4);
|
|||
|
|
function StringReplaceGlobalRegExpWithFunction(W,C,aw){
|
|||
|
|
var au=av;
|
|||
|
|
if(au){
|
|||
|
|
av=null;
|
|||
|
|
}else{
|
|||
|
|
au=new h(16);
|
|||
|
|
}
|
|||
|
|
var ax=%RegExpExecMultiple(C,
|
|||
|
|
W,
|
|||
|
|
t,
|
|||
|
|
au);
|
|||
|
|
C.lastIndex=0;
|
|||
|
|
if((ax===null)){
|
|||
|
|
av=au;
|
|||
|
|
return W;
|
|||
|
|
}
|
|||
|
|
var ay=ax.length;
|
|||
|
|
if(((t)[0])==2){
|
|||
|
|
var az=0;
|
|||
|
|
for(var M=0;M<ay;M++){
|
|||
|
|
var aA=ax[M];
|
|||
|
|
if(%_IsSmi(aA)){
|
|||
|
|
if(aA>0){
|
|||
|
|
az=(aA>>11)+(aA&0x7ff);
|
|||
|
|
}else{
|
|||
|
|
az=ax[++M]-aA;
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
var aB=aw(aA,az,W);
|
|||
|
|
ax[M]=(%_ToString(aB));
|
|||
|
|
az+=aA.length;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
for(var M=0;M<ay;M++){
|
|||
|
|
var aA=ax[M];
|
|||
|
|
if(!%_IsSmi(aA)){
|
|||
|
|
var aB=%reflect_apply(aw,(void 0),aA);
|
|||
|
|
ax[M]=(%_ToString(aB));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var K=%StringBuilderConcat(ax,ay,W);
|
|||
|
|
au.length=0;
|
|||
|
|
av=au;
|
|||
|
|
return K;
|
|||
|
|
}
|
|||
|
|
function CaptureString(D,aC,E){
|
|||
|
|
var aD=E<<1;
|
|||
|
|
var F=aC[(3+(aD))];
|
|||
|
|
if(F<0)return;
|
|||
|
|
var I=aC[(3+(aD+1))];
|
|||
|
|
return %_SubString(D,F,I);
|
|||
|
|
}
|
|||
|
|
function StringReplaceNonGlobalRegExpWithFunction(W,C,aw){
|
|||
|
|
var G=DoRegExpExec(C,W,0);
|
|||
|
|
if((G===null)){
|
|||
|
|
C.lastIndex=0;
|
|||
|
|
return W;
|
|||
|
|
}
|
|||
|
|
var E=G[3];
|
|||
|
|
var K=%_SubString(W,0,E);
|
|||
|
|
var aE=G[4];
|
|||
|
|
var aF=((G)[0])>>1;
|
|||
|
|
var aG;
|
|||
|
|
if(aF==1){
|
|||
|
|
var aH=%_SubString(W,E,aE);
|
|||
|
|
aG=aw(aH,E,W);
|
|||
|
|
}else{
|
|||
|
|
var aI=new h(aF+2);
|
|||
|
|
for(var L=0;L<aF;L++){
|
|||
|
|
aI[L]=CaptureString(W,G,L);
|
|||
|
|
}
|
|||
|
|
aI[L]=E;
|
|||
|
|
aI[L+1]=W;
|
|||
|
|
aG=%reflect_apply(aw,(void 0),aI);
|
|||
|
|
}
|
|||
|
|
K+=aG;
|
|||
|
|
return K+%_SubString(W,aE,W.length);
|
|||
|
|
}
|
|||
|
|
function RegExpReplace(D,aw){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
"RegExp.prototype.@@replace",this);
|
|||
|
|
}
|
|||
|
|
var W=(%_ToString(D));
|
|||
|
|
var aJ=this;
|
|||
|
|
if(!(typeof(aw)==='function')){
|
|||
|
|
aw=(%_ToString(aw));
|
|||
|
|
if(!(%_RegExpFlags(aJ)&1)){
|
|||
|
|
var V=DoRegExpExec(aJ,W,0);
|
|||
|
|
if(V==null){
|
|||
|
|
aJ.lastIndex=0
|
|||
|
|
return W;
|
|||
|
|
}
|
|||
|
|
if(aw.length==0){
|
|||
|
|
return %_SubString(W,0,V[3])+
|
|||
|
|
%_SubString(W,V[4],W.length)
|
|||
|
|
}
|
|||
|
|
return c(aw,W,t,
|
|||
|
|
%_SubString(W,0,V[3]))+
|
|||
|
|
%_SubString(W,V[4],W.length);
|
|||
|
|
}
|
|||
|
|
aJ.lastIndex=0;
|
|||
|
|
return %StringReplaceGlobalRegExpWithString(
|
|||
|
|
W,aJ,aw,t);
|
|||
|
|
}
|
|||
|
|
if((%_RegExpFlags(aJ)&1)){
|
|||
|
|
return StringReplaceGlobalRegExpWithFunction(W,aJ,aw);
|
|||
|
|
}
|
|||
|
|
return StringReplaceNonGlobalRegExpWithFunction(W,aJ,aw);
|
|||
|
|
}
|
|||
|
|
function GetSubstitution(aK,D,aL,aM,aG){
|
|||
|
|
var aN=aK.length;
|
|||
|
|
var aO=D.length;
|
|||
|
|
var aP=aM.length;
|
|||
|
|
var aQ=aL+aN;
|
|||
|
|
var K="";
|
|||
|
|
var aR,aS,aT,aU,aV,aW,aX;
|
|||
|
|
var aU=%StringIndexOf(aG,'$',0);
|
|||
|
|
if(aU<0){
|
|||
|
|
K+=aG;
|
|||
|
|
return K;
|
|||
|
|
}
|
|||
|
|
if(aU>0)K+=%_SubString(aG,0,aU);
|
|||
|
|
while(true){
|
|||
|
|
aS='$';
|
|||
|
|
aR=aU+1;
|
|||
|
|
if(aR<aG.length){
|
|||
|
|
aT=%_StringCharCodeAt(aG,aR);
|
|||
|
|
if(aT==36){
|
|||
|
|
++aR;
|
|||
|
|
K+='$';
|
|||
|
|
}else if(aT==38){
|
|||
|
|
++aR;
|
|||
|
|
K+=aK;
|
|||
|
|
}else if(aT==96){
|
|||
|
|
++aR;
|
|||
|
|
K+=%_SubString(D,0,aL);
|
|||
|
|
}else if(aT==39){
|
|||
|
|
++aR;
|
|||
|
|
K+=%_SubString(D,aQ,aO);
|
|||
|
|
}else if(aT>=48&&aT<=57){
|
|||
|
|
aV=(aT-48);
|
|||
|
|
aW=1;
|
|||
|
|
if(aR+1<aG.length){
|
|||
|
|
aU=%_StringCharCodeAt(aG,aR+1);
|
|||
|
|
if(aU>=48&&aU<=57){
|
|||
|
|
aX=aV*10+((aU-48));
|
|||
|
|
if(aX<aP){
|
|||
|
|
aV=aX;
|
|||
|
|
aW=2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(aV!=0&&aV<aP){
|
|||
|
|
var aY=aM[aV];
|
|||
|
|
if(!(aY===(void 0)))K+=aY;
|
|||
|
|
aR+=aW;
|
|||
|
|
}else{
|
|||
|
|
K+='$';
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
K+='$';
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
K+='$';
|
|||
|
|
}
|
|||
|
|
aU=%StringIndexOf(aG,'$',aR);
|
|||
|
|
if(aU<0){
|
|||
|
|
if(aR<aG.length){
|
|||
|
|
K+=%_SubString(aG,aR,aG.length);
|
|||
|
|
}
|
|||
|
|
return K;
|
|||
|
|
}
|
|||
|
|
if(aU>aR){
|
|||
|
|
K+=%_SubString(aG,aR,aU);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return K;
|
|||
|
|
}
|
|||
|
|
function AdvanceStringIndex(D,E,ai){
|
|||
|
|
var aZ=1;
|
|||
|
|
if(ai){
|
|||
|
|
var J=%_StringCharCodeAt(D,E);
|
|||
|
|
if(J>=0xD800&&J<=0xDBFF&&D.length>E+1){
|
|||
|
|
var X=%_StringCharCodeAt(D,E+1);
|
|||
|
|
if(X>=0xDC00&&X<=0xDFFF){
|
|||
|
|
aZ=2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return aZ;
|
|||
|
|
}
|
|||
|
|
function SetAdvancedStringIndex(C,D,ai){
|
|||
|
|
var N=C.lastIndex;
|
|||
|
|
C.lastIndex=N+
|
|||
|
|
AdvanceStringIndex(D,N,ai);
|
|||
|
|
}
|
|||
|
|
function RegExpSubclassReplace(D,aw){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
"RegExp.prototype.@@replace",this);
|
|||
|
|
}
|
|||
|
|
D=(%_ToString(D));
|
|||
|
|
var aa=D.length;
|
|||
|
|
var ba=(typeof(aw)==='function');
|
|||
|
|
if(!ba)aw=(%_ToString(aw));
|
|||
|
|
var a=(!!(this.global));
|
|||
|
|
if(a){
|
|||
|
|
var ai=(!!(this.unicode));
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
}
|
|||
|
|
var R;
|
|||
|
|
if((%_IsRegExp(this))){
|
|||
|
|
R=this.exec;
|
|||
|
|
if(R===RegExpSubclassExecJS){
|
|||
|
|
return %_Call(RegExpReplace,this,D,aw);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bb=new h();
|
|||
|
|
var K,aG;
|
|||
|
|
while(true){
|
|||
|
|
K=RegExpSubclassExec(this,D,R);
|
|||
|
|
R=(void 0);
|
|||
|
|
if((K===null)){
|
|||
|
|
break;
|
|||
|
|
}else{
|
|||
|
|
bb.push(K);
|
|||
|
|
if(!a)break;
|
|||
|
|
var at=(%_ToString(K[0]));
|
|||
|
|
if(at==="")SetAdvancedStringIndex(this,D,ai);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var bc="";
|
|||
|
|
var bd=0;
|
|||
|
|
for(var M=0;M<bb.length;M++){
|
|||
|
|
K=bb[M];
|
|||
|
|
var aP=k((%_ToLength(K.length)),0);
|
|||
|
|
var aK=(%_ToString(K[0]));
|
|||
|
|
var be=aK.length;
|
|||
|
|
var aL=k(l((%_ToInteger(K.index)),aa),0);
|
|||
|
|
var aM=new h();
|
|||
|
|
for(var as=0;as<aP;as++){
|
|||
|
|
var aY=K[as];
|
|||
|
|
if(!(aY===(void 0)))aY=(%_ToString(aY));
|
|||
|
|
aM[as]=aY;
|
|||
|
|
}
|
|||
|
|
if(ba){
|
|||
|
|
var aI=new h(aP+2);
|
|||
|
|
for(var L=0;L<aP;L++){
|
|||
|
|
aI[L]=aM[L];
|
|||
|
|
}
|
|||
|
|
aI[L]=aL;
|
|||
|
|
aI[L+1]=D;
|
|||
|
|
aG=%reflect_apply(aw,(void 0),aI,0,
|
|||
|
|
aI.length);
|
|||
|
|
}else{
|
|||
|
|
aG=GetSubstitution(aK,D,aL,aM,
|
|||
|
|
aw);
|
|||
|
|
}
|
|||
|
|
if(aL>=bd){
|
|||
|
|
bc+=
|
|||
|
|
%_SubString(D,bd,aL)+aG;
|
|||
|
|
bd=aL+be;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(bd>=aa)return bc;
|
|||
|
|
return bc+%_SubString(D,bd,aa);
|
|||
|
|
}
|
|||
|
|
%FunctionRemovePrototype(RegExpSubclassReplace);
|
|||
|
|
function RegExpSubclassSearch(D){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw j(43,
|
|||
|
|
"RegExp.prototype.@@search",this);
|
|||
|
|
}
|
|||
|
|
D=(%_ToString(D));
|
|||
|
|
var bf=this.lastIndex;
|
|||
|
|
this.lastIndex=0;
|
|||
|
|
var K=RegExpSubclassExec(this,D);
|
|||
|
|
this.lastIndex=bf;
|
|||
|
|
if((K===null))return-1;
|
|||
|
|
return K.index;
|
|||
|
|
}
|
|||
|
|
%FunctionRemovePrototype(RegExpSubclassSearch);
|
|||
|
|
function RegExpGetLastMatch(){
|
|||
|
|
var bg=((t)[1]);
|
|||
|
|
return %_SubString(bg,
|
|||
|
|
t[3],
|
|||
|
|
t[4]);
|
|||
|
|
}
|
|||
|
|
function RegExpGetLastParen(){
|
|||
|
|
var aa=((t)[0]);
|
|||
|
|
if(aa<=2)return'';
|
|||
|
|
var bg=((t)[1]);
|
|||
|
|
var F=t[(3+(aa-2))];
|
|||
|
|
var I=t[(3+(aa-1))];
|
|||
|
|
if(F!=-1&&I!=-1){
|
|||
|
|
return %_SubString(bg,F,I);
|
|||
|
|
}
|
|||
|
|
return"";
|
|||
|
|
}
|
|||
|
|
function RegExpGetLeftContext(){
|
|||
|
|
var bh;
|
|||
|
|
var W;
|
|||
|
|
bh=t[3];
|
|||
|
|
W=((t)[1]);
|
|||
|
|
return %_SubString(W,0,bh);
|
|||
|
|
}
|
|||
|
|
function RegExpGetRightContext(){
|
|||
|
|
var bh;
|
|||
|
|
var W;
|
|||
|
|
bh=t[4];
|
|||
|
|
W=((t)[1]);
|
|||
|
|
return %_SubString(W,bh,W.length);
|
|||
|
|
}
|
|||
|
|
function RegExpMakeCaptureGetter(as){
|
|||
|
|
return function foo(){
|
|||
|
|
var E=as*2;
|
|||
|
|
if(E>=((t)[0]))return'';
|
|||
|
|
var bi=t[(3+(E))];
|
|||
|
|
var bj=t[(3+(E+1))];
|
|||
|
|
if(bi==-1||bj==-1)return'';
|
|||
|
|
return %_SubString(((t)[1]),bi,bj);
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
function RegExpGetFlags(){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw j(
|
|||
|
|
122,"RegExp.prototype.flags",(%_ToString(this)));
|
|||
|
|
}
|
|||
|
|
var K='';
|
|||
|
|
if(this.global)K+='g';
|
|||
|
|
if(this.ignoreCase)K+='i';
|
|||
|
|
if(this.multiline)K+='m';
|
|||
|
|
if(this.unicode)K+='u';
|
|||
|
|
if(this.sticky)K+='y';
|
|||
|
|
return K;
|
|||
|
|
}
|
|||
|
|
function RegExpGetGlobal(){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
if(this===g){
|
|||
|
|
%IncrementUseCounter(31);
|
|||
|
|
return(void 0);
|
|||
|
|
}
|
|||
|
|
throw j(123,"RegExp.prototype.global");
|
|||
|
|
}
|
|||
|
|
return(!!((%_RegExpFlags(this)&1)));
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(RegExpGetGlobal);
|
|||
|
|
function RegExpGetIgnoreCase(){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
if(this===g){
|
|||
|
|
%IncrementUseCounter(31);
|
|||
|
|
return(void 0);
|
|||
|
|
}
|
|||
|
|
throw j(123,"RegExp.prototype.ignoreCase");
|
|||
|
|
}
|
|||
|
|
return(!!((%_RegExpFlags(this)&2)));
|
|||
|
|
}
|
|||
|
|
function RegExpGetMultiline(){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
if(this===g){
|
|||
|
|
%IncrementUseCounter(31);
|
|||
|
|
return(void 0);
|
|||
|
|
}
|
|||
|
|
throw j(123,"RegExp.prototype.multiline");
|
|||
|
|
}
|
|||
|
|
return(!!((%_RegExpFlags(this)&4)));
|
|||
|
|
}
|
|||
|
|
function RegExpGetSource(){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
if(this===g){
|
|||
|
|
%IncrementUseCounter(30);
|
|||
|
|
return"(?:)";
|
|||
|
|
}
|
|||
|
|
throw j(123,"RegExp.prototype.source");
|
|||
|
|
}
|
|||
|
|
return(%_RegExpSource(this));
|
|||
|
|
}
|
|||
|
|
function RegExpGetSticky(){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
if(this===g){
|
|||
|
|
%IncrementUseCounter(11);
|
|||
|
|
return(void 0);
|
|||
|
|
}
|
|||
|
|
throw j(123,"RegExp.prototype.sticky");
|
|||
|
|
}
|
|||
|
|
return(!!((%_RegExpFlags(this)&8)));
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(RegExpGetSticky);
|
|||
|
|
function RegExpGetUnicode(){
|
|||
|
|
if(!(%_IsRegExp(this))){
|
|||
|
|
if(this===g){
|
|||
|
|
%IncrementUseCounter(13);
|
|||
|
|
return(void 0);
|
|||
|
|
}
|
|||
|
|
throw j(123,"RegExp.prototype.unicode");
|
|||
|
|
}
|
|||
|
|
return(!!((%_RegExpFlags(this)&16)));
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(RegExpGetUnicode);
|
|||
|
|
function RegExpSpecies(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
%FunctionSetInstanceClassName(f,'RegExp');
|
|||
|
|
g=new e();
|
|||
|
|
%FunctionSetPrototype(f,g);
|
|||
|
|
%AddNamedProperty(
|
|||
|
|
f.prototype,'constructor',f,2);
|
|||
|
|
%SetCode(f,RegExpConstructor);
|
|||
|
|
b.InstallGetter(f,p,RegExpSpecies);
|
|||
|
|
b.InstallFunctions(f.prototype,2,[
|
|||
|
|
"exec",RegExpSubclassExecJS,
|
|||
|
|
"test",RegExpSubclassTest,
|
|||
|
|
"toString",RegExpToString,
|
|||
|
|
"compile",RegExpCompileJS,
|
|||
|
|
m,RegExpSubclassMatch,
|
|||
|
|
n,RegExpSubclassReplace,
|
|||
|
|
o,RegExpSubclassSearch,
|
|||
|
|
q,RegExpSubclassSplit,
|
|||
|
|
]);
|
|||
|
|
b.InstallGetter(f.prototype,'flags',RegExpGetFlags);
|
|||
|
|
b.InstallGetter(f.prototype,'global',RegExpGetGlobal);
|
|||
|
|
b.InstallGetter(f.prototype,'ignoreCase',RegExpGetIgnoreCase);
|
|||
|
|
b.InstallGetter(f.prototype,'multiline',RegExpGetMultiline);
|
|||
|
|
b.InstallGetter(f.prototype,'source',RegExpGetSource);
|
|||
|
|
b.InstallGetter(f.prototype,'sticky',RegExpGetSticky);
|
|||
|
|
b.InstallGetter(f.prototype,'unicode',RegExpGetUnicode);
|
|||
|
|
var bk=function(){
|
|||
|
|
var bl=((t)[2]);
|
|||
|
|
return(bl===(void 0))?"":bl;
|
|||
|
|
};
|
|||
|
|
var bm=function(D){
|
|||
|
|
((t)[2])=(%_ToString(D));
|
|||
|
|
};
|
|||
|
|
%OptimizeObjectForAddingMultipleProperties(f,22);
|
|||
|
|
b.InstallGetterSetter(f,'input',bk,bm,
|
|||
|
|
4);
|
|||
|
|
b.InstallGetterSetter(f,'$_',bk,bm,
|
|||
|
|
2|4);
|
|||
|
|
var bn=function(bo){};
|
|||
|
|
b.InstallGetterSetter(f,'lastMatch',RegExpGetLastMatch,
|
|||
|
|
bn,4);
|
|||
|
|
b.InstallGetterSetter(f,'$&',RegExpGetLastMatch,bn,
|
|||
|
|
2|4);
|
|||
|
|
b.InstallGetterSetter(f,'lastParen',RegExpGetLastParen,
|
|||
|
|
bn,4);
|
|||
|
|
b.InstallGetterSetter(f,'$+',RegExpGetLastParen,bn,
|
|||
|
|
2|4);
|
|||
|
|
b.InstallGetterSetter(f,'leftContext',RegExpGetLeftContext,
|
|||
|
|
bn,4);
|
|||
|
|
b.InstallGetterSetter(f,'$`',RegExpGetLeftContext,bn,
|
|||
|
|
2|4);
|
|||
|
|
b.InstallGetterSetter(f,'rightContext',RegExpGetRightContext,
|
|||
|
|
bn,4);
|
|||
|
|
b.InstallGetterSetter(f,"$'",RegExpGetRightContext,bn,
|
|||
|
|
2|4);
|
|||
|
|
for(var M=1;M<10;++M){
|
|||
|
|
b.InstallGetterSetter(f,'$'+M,RegExpMakeCaptureGetter(M),
|
|||
|
|
bn,4);
|
|||
|
|
}
|
|||
|
|
%ToFastProperties(f);
|
|||
|
|
var bp=new i(2,"",(void 0),0,0);
|
|||
|
|
function InternalRegExpMatch(C,W){
|
|||
|
|
var G=%_RegExpExec(C,W,0,bp);
|
|||
|
|
if(!(G===null)){
|
|||
|
|
var H=((G)[0])>>1;
|
|||
|
|
var F=G[3];
|
|||
|
|
var I=G[4];
|
|||
|
|
var J=%_SubString(W,F,I);
|
|||
|
|
var K=%_RegExpConstructResult(H,F,W);
|
|||
|
|
K[0]=J;
|
|||
|
|
if(H==1)return K;
|
|||
|
|
var L=3+2;
|
|||
|
|
for(var M=1;M<H;M++){
|
|||
|
|
F=G[L++];
|
|||
|
|
if(F!=-1){
|
|||
|
|
I=G[L];
|
|||
|
|
K[M]=%_SubString(W,F,I);
|
|||
|
|
}
|
|||
|
|
L++;
|
|||
|
|
}
|
|||
|
|
return K;
|
|||
|
|
;
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
function InternalRegExpReplace(C,W,aG){
|
|||
|
|
return %StringReplaceGlobalRegExpWithString(
|
|||
|
|
W,C,aG,bp);
|
|||
|
|
}
|
|||
|
|
b.Export(function(bq){
|
|||
|
|
bq.InternalRegExpMatch=InternalRegExpMatch;
|
|||
|
|
bq.InternalRegExpReplace=InternalRegExpReplace;
|
|||
|
|
bq.IsRegExp=IsRegExp;
|
|||
|
|
bq.RegExpExec=DoRegExpExec;
|
|||
|
|
bq.RegExpInitialize=RegExpInitialize;
|
|||
|
|
bq.RegExpLastMatchInfo=t;
|
|||
|
|
bq.RegExpTest=RegExpTest;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
,arraybuffer<65>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.ArrayBuffer;
|
|||
|
|
var d;
|
|||
|
|
var e;
|
|||
|
|
var f;
|
|||
|
|
var g;
|
|||
|
|
var h=b.ImportNow("species_symbol");
|
|||
|
|
b.Import(function(i){
|
|||
|
|
d=i.MakeTypeError;
|
|||
|
|
e=i.MaxSimple;
|
|||
|
|
f=i.MinSimple;
|
|||
|
|
g=i.SpeciesConstructor;
|
|||
|
|
});
|
|||
|
|
function ArrayBufferGetByteLen(){
|
|||
|
|
if(!(%_ClassOf(this)==='ArrayBuffer')){
|
|||
|
|
throw d(43,
|
|||
|
|
'ArrayBuffer.prototype.byteLength',this);
|
|||
|
|
}
|
|||
|
|
return %_ArrayBufferGetByteLength(this);
|
|||
|
|
}
|
|||
|
|
function ArrayBufferSlice(j,k){
|
|||
|
|
if(!(%_ClassOf(this)==='ArrayBuffer')){
|
|||
|
|
throw d(43,
|
|||
|
|
'ArrayBuffer.prototype.slice',this);
|
|||
|
|
}
|
|||
|
|
var l=(%_ToInteger(j));
|
|||
|
|
if(!(k===(void 0))){
|
|||
|
|
k=(%_ToInteger(k));
|
|||
|
|
}
|
|||
|
|
var m;
|
|||
|
|
var n=%_ArrayBufferGetByteLength(this);
|
|||
|
|
if(l<0){
|
|||
|
|
m=e(n+l,0);
|
|||
|
|
}else{
|
|||
|
|
m=f(l,n);
|
|||
|
|
}
|
|||
|
|
var o=(k===(void 0))?n:k;
|
|||
|
|
var p;
|
|||
|
|
if(o<0){
|
|||
|
|
p=e(n+o,0);
|
|||
|
|
}else{
|
|||
|
|
p=f(o,n);
|
|||
|
|
}
|
|||
|
|
if(p<m){
|
|||
|
|
p=m;
|
|||
|
|
}
|
|||
|
|
var q=p-m;
|
|||
|
|
var r=g(this,c,true);
|
|||
|
|
var s=new r(q);
|
|||
|
|
if(!(%_ClassOf(s)==='ArrayBuffer')){
|
|||
|
|
throw d(43,
|
|||
|
|
'ArrayBuffer.prototype.slice',s);
|
|||
|
|
}
|
|||
|
|
if(s===this){
|
|||
|
|
throw d(11);
|
|||
|
|
}
|
|||
|
|
if(%_ArrayBufferGetByteLength(s)<q){
|
|||
|
|
throw d(10);
|
|||
|
|
}
|
|||
|
|
%ArrayBufferSliceImpl(this,s,m,q);
|
|||
|
|
return s;
|
|||
|
|
}
|
|||
|
|
function ArrayBufferSpecies(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
b.InstallGetter(c,h,ArrayBufferSpecies);
|
|||
|
|
b.InstallGetter(c.prototype,"byteLength",
|
|||
|
|
ArrayBufferGetByteLen);
|
|||
|
|
b.InstallFunctions(c.prototype,2,[
|
|||
|
|
"slice",ArrayBufferSlice
|
|||
|
|
]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
(typedarray<61><79>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=b.ImportNow("ArrayToString");
|
|||
|
|
var d;
|
|||
|
|
var e;
|
|||
|
|
var f;
|
|||
|
|
var g=a.Array;
|
|||
|
|
var h=a.ArrayBuffer;
|
|||
|
|
var i=h.prototype;
|
|||
|
|
var j=a.DataView;
|
|||
|
|
var k=a.Object;
|
|||
|
|
var l;
|
|||
|
|
var m;
|
|||
|
|
var n;
|
|||
|
|
var o;
|
|||
|
|
var p;
|
|||
|
|
var q;
|
|||
|
|
var r;
|
|||
|
|
var s;
|
|||
|
|
var t;
|
|||
|
|
var u;
|
|||
|
|
var v;
|
|||
|
|
var w;
|
|||
|
|
var x;
|
|||
|
|
var y;
|
|||
|
|
var z;
|
|||
|
|
var A;
|
|||
|
|
var B=b.InternalArray;
|
|||
|
|
var C;
|
|||
|
|
var D;
|
|||
|
|
var E;
|
|||
|
|
var F;
|
|||
|
|
var G;
|
|||
|
|
var H;
|
|||
|
|
var I;
|
|||
|
|
var J;
|
|||
|
|
var K=b.ImportNow("iterator_symbol");
|
|||
|
|
var L=b.ImportNow("species_symbol");
|
|||
|
|
var M=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
var N=a.Uint8Array;
|
|||
|
|
|
|||
|
|
var O=a.Int8Array;
|
|||
|
|
|
|||
|
|
var P=a.Uint16Array;
|
|||
|
|
|
|||
|
|
var Q=a.Int16Array;
|
|||
|
|
|
|||
|
|
var R=a.Uint32Array;
|
|||
|
|
|
|||
|
|
var S=a.Int32Array;
|
|||
|
|
|
|||
|
|
var T=a.Float32Array;
|
|||
|
|
|
|||
|
|
var U=a.Float64Array;
|
|||
|
|
|
|||
|
|
var V=a.Uint8ClampedArray;
|
|||
|
|
|
|||
|
|
|
|||
|
|
var W=%object_get_prototype_of(N);
|
|||
|
|
b.Import(function(X){
|
|||
|
|
d=X.ArrayValues;
|
|||
|
|
e=X.GetIterator;
|
|||
|
|
f=X.GetMethod;
|
|||
|
|
l=X.InnerArrayCopyWithin;
|
|||
|
|
m=X.InnerArrayEvery;
|
|||
|
|
n=X.InnerArrayFill;
|
|||
|
|
o=X.InnerArrayFilter;
|
|||
|
|
p=X.InnerArrayFind;
|
|||
|
|
q=X.InnerArrayFindIndex;
|
|||
|
|
r=X.InnerArrayForEach;
|
|||
|
|
s=X.InnerArrayIncludes;
|
|||
|
|
t=X.InnerArrayIndexOf;
|
|||
|
|
u=X.InnerArrayJoin;
|
|||
|
|
v=X.InnerArrayLastIndexOf;
|
|||
|
|
w=X.InnerArrayReduce;
|
|||
|
|
x=X.InnerArrayReduceRight;
|
|||
|
|
y=X.InnerArraySome;
|
|||
|
|
z=X.InnerArraySort;
|
|||
|
|
A=X.InnerArrayToLocaleString;
|
|||
|
|
C=X.IsNaN;
|
|||
|
|
D=X.MakeRangeError;
|
|||
|
|
E=X.MakeTypeError;
|
|||
|
|
F=X.MaxSimple;
|
|||
|
|
G=X.MinSimple;
|
|||
|
|
H=X.PackedArrayReverse;
|
|||
|
|
I=X.SpeciesConstructor;
|
|||
|
|
J=X.ToPositiveInteger;
|
|||
|
|
});
|
|||
|
|
function TypedArrayDefaultConstructor(Y){
|
|||
|
|
switch(%_ClassOf(Y)){
|
|||
|
|
case"Uint8Array":
|
|||
|
|
return N;
|
|||
|
|
|
|||
|
|
case"Int8Array":
|
|||
|
|
return O;
|
|||
|
|
|
|||
|
|
case"Uint16Array":
|
|||
|
|
return P;
|
|||
|
|
|
|||
|
|
case"Int16Array":
|
|||
|
|
return Q;
|
|||
|
|
|
|||
|
|
case"Uint32Array":
|
|||
|
|
return R;
|
|||
|
|
|
|||
|
|
case"Int32Array":
|
|||
|
|
return S;
|
|||
|
|
|
|||
|
|
case"Float32Array":
|
|||
|
|
return T;
|
|||
|
|
|
|||
|
|
case"Float64Array":
|
|||
|
|
return U;
|
|||
|
|
|
|||
|
|
case"Uint8ClampedArray":
|
|||
|
|
return V;
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
throw E(43,
|
|||
|
|
"TypedArrayDefaultConstructor",this);
|
|||
|
|
}
|
|||
|
|
function TypedArrayCreate(Z,aa,ab,ac){
|
|||
|
|
if((ab===(void 0))){
|
|||
|
|
var ad=new Z(aa);
|
|||
|
|
}else{
|
|||
|
|
var ad=new Z(aa,ab,ac);
|
|||
|
|
}
|
|||
|
|
if(!(%_IsTypedArray(ad)))throw E(71);
|
|||
|
|
if((typeof(aa)==='number')&&%_TypedArrayGetLength(ad)<aa){
|
|||
|
|
throw E(248);
|
|||
|
|
}
|
|||
|
|
return ad;
|
|||
|
|
}
|
|||
|
|
function TypedArraySpeciesCreate(ae,aa,ab,ac,af){
|
|||
|
|
var ag=TypedArrayDefaultConstructor(ae);
|
|||
|
|
var Z=I(ae,ag,
|
|||
|
|
af);
|
|||
|
|
return TypedArrayCreate(Z,aa,ab,ac);
|
|||
|
|
}
|
|||
|
|
function Uint8ArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 1!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Uint8Array",1);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 1!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Uint8Array",1);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/1;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*1;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,1,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Uint8ArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*1;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,1,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,1,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint8ArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*1;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,1,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,1,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint8ArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Uint8ArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Uint8ArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*1;
|
|||
|
|
Uint8ArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint8ArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Uint8ArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Uint8ArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Uint8ArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Uint8ArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Uint8ArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Uint8Array")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint8ArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*1;
|
|||
|
|
return new N(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function Int8ArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 1!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Int8Array",1);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 1!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Int8Array",1);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/1;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*1;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,2,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Int8ArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*1;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,2,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,2,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int8ArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*1;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,2,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,2,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int8ArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Int8ArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Int8ArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*1;
|
|||
|
|
Int8ArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int8ArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Int8ArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Int8ArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Int8ArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Int8ArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Int8ArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Int8Array")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int8ArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*1;
|
|||
|
|
return new O(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function Uint16ArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 2!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Uint16Array",2);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 2!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Uint16Array",2);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/2;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*2;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,3,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Uint16ArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*2;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,3,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,3,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint16ArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*2;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,3,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,3,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint16ArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Uint16ArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Uint16ArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*2;
|
|||
|
|
Uint16ArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint16ArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Uint16ArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Uint16ArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Uint16ArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Uint16ArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Uint16ArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Uint16Array")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint16ArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*2;
|
|||
|
|
return new P(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function Int16ArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 2!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Int16Array",2);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 2!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Int16Array",2);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/2;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*2;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,4,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Int16ArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*2;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,4,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,4,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int16ArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*2;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,4,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,4,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int16ArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Int16ArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Int16ArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*2;
|
|||
|
|
Int16ArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int16ArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Int16ArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Int16ArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Int16ArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Int16ArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Int16ArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Int16Array")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int16ArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*2;
|
|||
|
|
return new Q(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function Uint32ArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 4!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Uint32Array",4);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 4!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Uint32Array",4);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/4;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*4;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,5,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Uint32ArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*4;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,5,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,5,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint32ArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*4;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,5,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,5,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint32ArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Uint32ArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Uint32ArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*4;
|
|||
|
|
Uint32ArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint32ArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Uint32ArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Uint32ArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Uint32ArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Uint32ArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Uint32ArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Uint32Array")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint32ArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*4;
|
|||
|
|
return new R(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function Int32ArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 4!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Int32Array",4);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 4!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Int32Array",4);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/4;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*4;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,6,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Int32ArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*4;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,6,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,6,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int32ArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*4;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,6,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,6,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int32ArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Int32ArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Int32ArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*4;
|
|||
|
|
Int32ArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int32ArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Int32ArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Int32ArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Int32ArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Int32ArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Int32ArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Int32Array")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Int32ArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*4;
|
|||
|
|
return new S(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function Float32ArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 4!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Float32Array",4);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 4!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Float32Array",4);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/4;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*4;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,7,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Float32ArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*4;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,7,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,7,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Float32ArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*4;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,7,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,7,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Float32ArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Float32ArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Float32ArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*4;
|
|||
|
|
Float32ArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Float32ArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Float32ArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Float32ArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Float32ArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Float32ArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Float32ArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Float32Array")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Float32ArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*4;
|
|||
|
|
return new T(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function Float64ArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 8!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Float64Array",8);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 8!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Float64Array",8);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/8;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*8;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,8,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Float64ArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*8;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,8,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,8,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Float64ArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*8;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,8,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,8,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Float64ArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Float64ArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Float64ArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*8;
|
|||
|
|
Float64ArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Float64ArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Float64ArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Float64ArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Float64ArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Float64ArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Float64ArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Float64Array")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Float64ArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*8;
|
|||
|
|
return new U(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function Uint8ClampedArrayConstructByArrayBuffer(ah,ai,aj,ak){
|
|||
|
|
if(!(aj===(void 0))){
|
|||
|
|
aj=J(aj,168);
|
|||
|
|
}
|
|||
|
|
if(!(ak===(void 0))){
|
|||
|
|
ak=J(ak,168);
|
|||
|
|
}
|
|||
|
|
var al=%_ArrayBufferGetByteLength(ai);
|
|||
|
|
var am;
|
|||
|
|
if((aj===(void 0))){
|
|||
|
|
am=0;
|
|||
|
|
}else{
|
|||
|
|
am=aj;
|
|||
|
|
if(am % 1!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"start offset","Uint8ClampedArray",1);
|
|||
|
|
}
|
|||
|
|
if(am>al){
|
|||
|
|
throw D(169);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var an;
|
|||
|
|
var ao;
|
|||
|
|
if((ak===(void 0))){
|
|||
|
|
if(al % 1!==0){
|
|||
|
|
throw D(167,
|
|||
|
|
"byte length","Uint8ClampedArray",1);
|
|||
|
|
}
|
|||
|
|
an=al-am;
|
|||
|
|
ao=an/1;
|
|||
|
|
}else{
|
|||
|
|
var ao=ak;
|
|||
|
|
an=ao*1;
|
|||
|
|
}
|
|||
|
|
if((am+an>al)
|
|||
|
|
||(ao>%_MaxSmi())){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
%_TypedArrayInitialize(ah,9,ai,am,an,true);
|
|||
|
|
}
|
|||
|
|
function Uint8ClampedArrayConstructByLength(ah,ak){
|
|||
|
|
var ap=(ak===(void 0))?
|
|||
|
|
0:J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var aq=ap*1;
|
|||
|
|
if(aq>%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
var ai=new h(aq);
|
|||
|
|
%_TypedArrayInitialize(ah,9,ai,0,aq,true);
|
|||
|
|
}else{
|
|||
|
|
%_TypedArrayInitialize(ah,9,null,0,aq,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint8ClampedArrayConstructByArrayLike(ah,ar,ak){
|
|||
|
|
var ap=J(ak,168);
|
|||
|
|
if(ap>%_MaxSmi()){
|
|||
|
|
throw D(168);
|
|||
|
|
}
|
|||
|
|
var as=false;
|
|||
|
|
var aq=ap*1;
|
|||
|
|
if(aq<=%_TypedArrayMaxSizeInHeap()){
|
|||
|
|
%_TypedArrayInitialize(ah,9,null,0,aq,false);
|
|||
|
|
}else{
|
|||
|
|
as=
|
|||
|
|
%TypedArrayInitializeFromArrayLike(ah,9,ar,ap);
|
|||
|
|
}
|
|||
|
|
if(!as){
|
|||
|
|
for(var at=0;at<ap;at++){
|
|||
|
|
ah[at]=ar[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint8ClampedArrayConstructByIterable(ah,au,av){
|
|||
|
|
var aw=new B();
|
|||
|
|
var ax=%_Call(av,au);
|
|||
|
|
var ay={
|
|||
|
|
__proto__:null
|
|||
|
|
};
|
|||
|
|
ay[K]=function(){return ax;}
|
|||
|
|
for(var az of ay){
|
|||
|
|
aw.push(az);
|
|||
|
|
}
|
|||
|
|
Uint8ClampedArrayConstructByArrayLike(ah,aw,aw.length);
|
|||
|
|
}
|
|||
|
|
function Uint8ClampedArrayConstructByTypedArray(ah,Y){
|
|||
|
|
var aA=%TypedArrayGetBuffer(Y);
|
|||
|
|
var ak=%_TypedArrayGetLength(Y);
|
|||
|
|
var aq=%_ArrayBufferViewGetByteLength(Y);
|
|||
|
|
var an=ak*1;
|
|||
|
|
Uint8ClampedArrayConstructByArrayLike(ah,Y,ak);
|
|||
|
|
var aB=I(aA,h);
|
|||
|
|
var aC=aB.prototype;
|
|||
|
|
if((%_IsJSReceiver(aC))&&aC!==i){
|
|||
|
|
%InternalSetPrototype(%TypedArrayGetBuffer(ah),aC);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint8ClampedArrayConstructor(ab,ac,aD){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
if((%_ClassOf(ab)==='ArrayBuffer')||(%_ClassOf(ab)==='SharedArrayBuffer')){
|
|||
|
|
Uint8ClampedArrayConstructByArrayBuffer(this,ab,ac,aD);
|
|||
|
|
}else if((typeof(ab)==='number')||(typeof(ab)==='string')||
|
|||
|
|
(typeof(ab)==='boolean')||(ab===(void 0))){
|
|||
|
|
Uint8ClampedArrayConstructByLength(this,ab);
|
|||
|
|
}else if((%_IsTypedArray(ab))){
|
|||
|
|
Uint8ClampedArrayConstructByTypedArray(this,ab);
|
|||
|
|
}else{
|
|||
|
|
var av=ab[K];
|
|||
|
|
if((av===(void 0))||av===d){
|
|||
|
|
Uint8ClampedArrayConstructByArrayLike(this,ab,ab.length);
|
|||
|
|
}else{
|
|||
|
|
Uint8ClampedArrayConstructByIterable(this,ab,av);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
throw E(27,"Uint8ClampedArray")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function Uint8ClampedArraySubArray(aE,aF){
|
|||
|
|
var aG=(%_ToInteger(aE));
|
|||
|
|
if(!(aF===(void 0))){
|
|||
|
|
var aH=(%_ToInteger(aF));
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
}else{
|
|||
|
|
var aI=%_TypedArrayGetLength(this);
|
|||
|
|
var aH=aI;
|
|||
|
|
}
|
|||
|
|
if(aG<0){
|
|||
|
|
aG=F(0,aI+aG);
|
|||
|
|
}else{
|
|||
|
|
aG=G(aG,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<0){
|
|||
|
|
aH=F(0,aI+aH);
|
|||
|
|
}else{
|
|||
|
|
aH=G(aH,aI);
|
|||
|
|
}
|
|||
|
|
if(aH<aG){
|
|||
|
|
aH=aG;
|
|||
|
|
}
|
|||
|
|
var ao=aH-aG;
|
|||
|
|
var aJ=
|
|||
|
|
%_ArrayBufferViewGetByteOffset(this)+aG*1;
|
|||
|
|
return new V(%TypedArrayGetBuffer(this),aJ,ao);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function TypedArraySubArray(aE,aF){
|
|||
|
|
switch(%_ClassOf(this)){
|
|||
|
|
case"Uint8Array":
|
|||
|
|
return %_Call(Uint8ArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
case"Int8Array":
|
|||
|
|
return %_Call(Int8ArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
case"Uint16Array":
|
|||
|
|
return %_Call(Uint16ArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
case"Int16Array":
|
|||
|
|
return %_Call(Int16ArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
case"Uint32Array":
|
|||
|
|
return %_Call(Uint32ArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
case"Int32Array":
|
|||
|
|
return %_Call(Int32ArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
case"Float32Array":
|
|||
|
|
return %_Call(Float32ArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
case"Float64Array":
|
|||
|
|
return %_Call(Float64ArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
case"Uint8ClampedArray":
|
|||
|
|
return %_Call(Uint8ClampedArraySubArray,this,aE,aF);
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
throw E(43,
|
|||
|
|
"get TypedArray.prototype.subarray",this);
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(TypedArraySubArray);
|
|||
|
|
function TypedArraySetFromArrayLike(aK,aL,aM,am){
|
|||
|
|
if(am>0){
|
|||
|
|
for(var at=0;at<aM;at++){
|
|||
|
|
aK[am+at]=aL[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else{
|
|||
|
|
for(var at=0;at<aM;at++){
|
|||
|
|
aK[at]=aL[at];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function TypedArraySetFromOverlappingTypedArray(aK,aL,am){
|
|||
|
|
var aN=aL.BYTES_PER_ELEMENT;
|
|||
|
|
var aO=aK.BYTES_PER_ELEMENT;
|
|||
|
|
var aM=%_TypedArrayGetLength(aL);
|
|||
|
|
function CopyLeftPart(){
|
|||
|
|
var aP=aK.byteOffset+(am+1)*aO;
|
|||
|
|
var aQ=aL.byteOffset;
|
|||
|
|
for(var aR=0;
|
|||
|
|
aR<aM&&aP<=aQ;
|
|||
|
|
aR++){
|
|||
|
|
aK[am+aR]=aL[aR];
|
|||
|
|
aP+=aO;
|
|||
|
|
aQ+=aN;
|
|||
|
|
}
|
|||
|
|
return aR;
|
|||
|
|
}
|
|||
|
|
var aR=CopyLeftPart();
|
|||
|
|
function CopyRightPart(){
|
|||
|
|
var aP=
|
|||
|
|
aK.byteOffset+(am+aM-1)*aO;
|
|||
|
|
var aQ=
|
|||
|
|
aL.byteOffset+aM*aN;
|
|||
|
|
for(var aS=aM-1;
|
|||
|
|
aS>=aR&&aP>=aQ;
|
|||
|
|
aS--){
|
|||
|
|
aK[am+aS]=aL[aS];
|
|||
|
|
aP-=aO;
|
|||
|
|
aQ-=aN;
|
|||
|
|
}
|
|||
|
|
return aS;
|
|||
|
|
}
|
|||
|
|
var aS=CopyRightPart();
|
|||
|
|
var aT=new g(aS+1-aR);
|
|||
|
|
for(var at=aR;at<=aS;at++){
|
|||
|
|
aT[at-aR]=aL[at];
|
|||
|
|
}
|
|||
|
|
for(at=aR;at<=aS;at++){
|
|||
|
|
aK[am+at]=aT[at-aR];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function TypedArraySet(ah,am){
|
|||
|
|
var aU=(am===(void 0))?0:(%_ToInteger(am));
|
|||
|
|
if(aU<0)throw E(180);
|
|||
|
|
if(aU>%_MaxSmi()){
|
|||
|
|
throw D(181);
|
|||
|
|
}
|
|||
|
|
switch(%TypedArraySetFastCases(this,ah,aU)){
|
|||
|
|
case 0:
|
|||
|
|
return;
|
|||
|
|
case 1:
|
|||
|
|
TypedArraySetFromOverlappingTypedArray(this,ah,aU);
|
|||
|
|
return;
|
|||
|
|
case 2:
|
|||
|
|
TypedArraySetFromArrayLike(this,
|
|||
|
|
ah,%_TypedArrayGetLength(ah),aU);
|
|||
|
|
return;
|
|||
|
|
case 3:
|
|||
|
|
var ap=ah.length;
|
|||
|
|
if((ap===(void 0))){
|
|||
|
|
if((typeof(ah)==='number')){
|
|||
|
|
throw E(45);
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
ap=(%_ToLength(ap));
|
|||
|
|
if(aU+ap>%_TypedArrayGetLength(this)){
|
|||
|
|
throw D(181);
|
|||
|
|
}
|
|||
|
|
TypedArraySetFromArrayLike(this,ah,ap,aU);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArraySet,1);
|
|||
|
|
function TypedArrayGetToStringTag(){
|
|||
|
|
if(!(%_IsTypedArray(this)))return;
|
|||
|
|
var aV=%_ClassOf(this);
|
|||
|
|
if((aV===(void 0)))return;
|
|||
|
|
return aV;
|
|||
|
|
}
|
|||
|
|
function TypedArrayCopyWithin(aK,aW,aF){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return l(aK,aW,aF,this,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayCopyWithin,2);
|
|||
|
|
function TypedArrayEvery(aX,aY){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return m(aX,aY,this,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayEvery,1);
|
|||
|
|
function TypedArrayForEach(aX,aY){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
r(aX,aY,this,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayForEach,1);
|
|||
|
|
function TypedArrayFill(az,aW,aF){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return n(az,aW,aF,this,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayFill,1);
|
|||
|
|
function TypedArrayFilter(aX,aZ){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
if(!(typeof(aX)==='function'))throw E(15,aX);
|
|||
|
|
var ba=new B();
|
|||
|
|
o(aX,aZ,this,ak,ba);
|
|||
|
|
var bb=ba.length;
|
|||
|
|
var bc=TypedArraySpeciesCreate(this,bb);
|
|||
|
|
for(var at=0;at<bb;at++){
|
|||
|
|
bc[at]=ba[at];
|
|||
|
|
}
|
|||
|
|
return bc;
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayFilter,1);
|
|||
|
|
function TypedArrayFind(bd,aZ){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return p(bd,aZ,this,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayFind,1);
|
|||
|
|
function TypedArrayFindIndex(bd,aZ){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return q(bd,aZ,this,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayFindIndex,1);
|
|||
|
|
function TypedArrayReverse(){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return H(this,ak);
|
|||
|
|
}
|
|||
|
|
function TypedArrayComparefn(be,bf){
|
|||
|
|
if(be===0&&be===bf){
|
|||
|
|
be=1/be;
|
|||
|
|
bf=1/bf;
|
|||
|
|
}
|
|||
|
|
if(be<bf){
|
|||
|
|
return-1;
|
|||
|
|
}else if(be>bf){
|
|||
|
|
return 1;
|
|||
|
|
}else if(C(be)&&C(bf)){
|
|||
|
|
return C(bf)?0:1;
|
|||
|
|
}else if(C(be)){
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
function TypedArraySort(bg){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
if((bg===(void 0))){
|
|||
|
|
bg=TypedArrayComparefn;
|
|||
|
|
}
|
|||
|
|
return z(this,ak,bg);
|
|||
|
|
}
|
|||
|
|
function TypedArrayIndexOf(bh,bi){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return t(this,bh,bi,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayIndexOf,1);
|
|||
|
|
function TypedArrayLastIndexOf(bh,bi){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return v(this,bh,bi,ak,
|
|||
|
|
arguments.length);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayLastIndexOf,1);
|
|||
|
|
function TypedArrayMap(aX,aZ){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
var ba=TypedArraySpeciesCreate(this,ak);
|
|||
|
|
if(!(typeof(aX)==='function'))throw E(15,aX);
|
|||
|
|
for(var at=0;at<ak;at++){
|
|||
|
|
var bh=this[at];
|
|||
|
|
ba[at]=%_Call(aX,aZ,bh,at,this);
|
|||
|
|
}
|
|||
|
|
return ba;
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayMap,1);
|
|||
|
|
function TypedArraySome(aX,aY){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return y(aX,aY,this,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArraySome,1);
|
|||
|
|
function TypedArrayToLocaleString(){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return A(this,ak);
|
|||
|
|
}
|
|||
|
|
function TypedArrayJoin(bj){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return u(bj,this,ak);
|
|||
|
|
}
|
|||
|
|
function TypedArrayReduce(bk,bl){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return w(bk,bl,this,ak,
|
|||
|
|
arguments.length);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayReduce,1);
|
|||
|
|
function TypedArrayReduceRight(bk,bl){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return x(bk,bl,this,ak,
|
|||
|
|
arguments.length);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayReduceRight,1);
|
|||
|
|
function TypedArraySlice(aW,aF){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var bm=%_TypedArrayGetLength(this);
|
|||
|
|
var bn=(%_ToInteger(aW));
|
|||
|
|
var bo;
|
|||
|
|
if(bn<0){
|
|||
|
|
bo=F(bm+bn,0);
|
|||
|
|
}else{
|
|||
|
|
bo=G(bn,bm);
|
|||
|
|
}
|
|||
|
|
var bp;
|
|||
|
|
if((aF===(void 0))){
|
|||
|
|
bp=bm;
|
|||
|
|
}else{
|
|||
|
|
bp=(%_ToInteger(aF));
|
|||
|
|
}
|
|||
|
|
var bq;
|
|||
|
|
if(bp<0){
|
|||
|
|
bq=F(bm+bp,0);
|
|||
|
|
}else{
|
|||
|
|
bq=G(bp,bm);
|
|||
|
|
}
|
|||
|
|
var br=F(bq-bo,0);
|
|||
|
|
var bs=TypedArraySpeciesCreate(this,br);
|
|||
|
|
var bt=0;
|
|||
|
|
while(bo<bq){
|
|||
|
|
var bu=this[bo];
|
|||
|
|
bs[bt]=bu;
|
|||
|
|
bo++;
|
|||
|
|
bt++;
|
|||
|
|
}
|
|||
|
|
return bs;
|
|||
|
|
}
|
|||
|
|
function TypedArrayIncludes(bv,bw){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw E(71);
|
|||
|
|
var ak=%_TypedArrayGetLength(this);
|
|||
|
|
return s(bv,bw,this,ak);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayIncludes,1);
|
|||
|
|
function TypedArrayOf(){
|
|||
|
|
var ak=arguments.length;
|
|||
|
|
var bs=TypedArrayCreate(this,ak);
|
|||
|
|
for(var at=0;at<ak;at++){
|
|||
|
|
bs[at]=arguments[at];
|
|||
|
|
}
|
|||
|
|
return bs;
|
|||
|
|
}
|
|||
|
|
function IterableToArrayLike(bx){
|
|||
|
|
var au=f(bx,K);
|
|||
|
|
if(!(au===(void 0))){
|
|||
|
|
var by=new B();
|
|||
|
|
var at=0;
|
|||
|
|
for(var az of
|
|||
|
|
{[K](){return e(bx,au)}}){
|
|||
|
|
by[at]=az;
|
|||
|
|
at++;
|
|||
|
|
}
|
|||
|
|
var bs=[];
|
|||
|
|
%MoveArrayContents(by,bs);
|
|||
|
|
return bs;
|
|||
|
|
}
|
|||
|
|
return(%_ToObject(bx));
|
|||
|
|
}
|
|||
|
|
function TypedArrayFrom(aL,bz,aZ){
|
|||
|
|
if(!%IsConstructor(this))throw E(65,this);
|
|||
|
|
var bA;
|
|||
|
|
if(!(bz===(void 0))){
|
|||
|
|
if(!(typeof(bz)==='function'))throw E(15,this);
|
|||
|
|
bA=true;
|
|||
|
|
}else{
|
|||
|
|
bA=false;
|
|||
|
|
}
|
|||
|
|
var ar=IterableToArrayLike(aL);
|
|||
|
|
var ak=(%_ToLength(ar.length));
|
|||
|
|
var bB=TypedArrayCreate(this,ak);
|
|||
|
|
var az,bC;
|
|||
|
|
for(var at=0;at<ak;at++){
|
|||
|
|
az=ar[at];
|
|||
|
|
if(bA){
|
|||
|
|
bC=%_Call(bz,aZ,az,at);
|
|||
|
|
}else{
|
|||
|
|
bC=az;
|
|||
|
|
}
|
|||
|
|
bB[at]=bC;
|
|||
|
|
}
|
|||
|
|
return bB;
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(TypedArrayFrom,1);
|
|||
|
|
function TypedArrayConstructor(){
|
|||
|
|
if((new.target===(void 0))){
|
|||
|
|
throw E(26,"TypedArray");
|
|||
|
|
}
|
|||
|
|
if(new.target===W){
|
|||
|
|
throw E(24,"TypedArray");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function TypedArraySpecies(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
%SetCode(W,TypedArrayConstructor);
|
|||
|
|
b.InstallFunctions(W,2,[
|
|||
|
|
"from",TypedArrayFrom,
|
|||
|
|
"of",TypedArrayOf
|
|||
|
|
]);
|
|||
|
|
b.InstallGetter(W,L,TypedArraySpecies);
|
|||
|
|
b.InstallGetter(W.prototype,M,
|
|||
|
|
TypedArrayGetToStringTag);
|
|||
|
|
b.InstallFunctions(W.prototype,2,[
|
|||
|
|
"subarray",TypedArraySubArray,
|
|||
|
|
"set",TypedArraySet,
|
|||
|
|
"copyWithin",TypedArrayCopyWithin,
|
|||
|
|
"every",TypedArrayEvery,
|
|||
|
|
"fill",TypedArrayFill,
|
|||
|
|
"filter",TypedArrayFilter,
|
|||
|
|
"find",TypedArrayFind,
|
|||
|
|
"findIndex",TypedArrayFindIndex,
|
|||
|
|
"includes",TypedArrayIncludes,
|
|||
|
|
"indexOf",TypedArrayIndexOf,
|
|||
|
|
"join",TypedArrayJoin,
|
|||
|
|
"lastIndexOf",TypedArrayLastIndexOf,
|
|||
|
|
"forEach",TypedArrayForEach,
|
|||
|
|
"map",TypedArrayMap,
|
|||
|
|
"reduce",TypedArrayReduce,
|
|||
|
|
"reduceRight",TypedArrayReduceRight,
|
|||
|
|
"reverse",TypedArrayReverse,
|
|||
|
|
"slice",TypedArraySlice,
|
|||
|
|
"some",TypedArraySome,
|
|||
|
|
"sort",TypedArraySort,
|
|||
|
|
"toLocaleString",TypedArrayToLocaleString
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(W.prototype,"toString",c,
|
|||
|
|
2);
|
|||
|
|
%SetCode(N,Uint8ArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(N,new k());
|
|||
|
|
%InternalSetPrototype(N,W);
|
|||
|
|
%InternalSetPrototype(N.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(N,"BYTES_PER_ELEMENT",1,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(N.prototype,
|
|||
|
|
"constructor",a.Uint8Array,2);
|
|||
|
|
%AddNamedProperty(N.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",1,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
%SetCode(O,Int8ArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(O,new k());
|
|||
|
|
%InternalSetPrototype(O,W);
|
|||
|
|
%InternalSetPrototype(O.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(O,"BYTES_PER_ELEMENT",1,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(O.prototype,
|
|||
|
|
"constructor",a.Int8Array,2);
|
|||
|
|
%AddNamedProperty(O.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",1,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
%SetCode(P,Uint16ArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(P,new k());
|
|||
|
|
%InternalSetPrototype(P,W);
|
|||
|
|
%InternalSetPrototype(P.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(P,"BYTES_PER_ELEMENT",2,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(P.prototype,
|
|||
|
|
"constructor",a.Uint16Array,2);
|
|||
|
|
%AddNamedProperty(P.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",2,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
%SetCode(Q,Int16ArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(Q,new k());
|
|||
|
|
%InternalSetPrototype(Q,W);
|
|||
|
|
%InternalSetPrototype(Q.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(Q,"BYTES_PER_ELEMENT",2,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(Q.prototype,
|
|||
|
|
"constructor",a.Int16Array,2);
|
|||
|
|
%AddNamedProperty(Q.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",2,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
%SetCode(R,Uint32ArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(R,new k());
|
|||
|
|
%InternalSetPrototype(R,W);
|
|||
|
|
%InternalSetPrototype(R.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(R,"BYTES_PER_ELEMENT",4,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(R.prototype,
|
|||
|
|
"constructor",a.Uint32Array,2);
|
|||
|
|
%AddNamedProperty(R.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",4,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
%SetCode(S,Int32ArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(S,new k());
|
|||
|
|
%InternalSetPrototype(S,W);
|
|||
|
|
%InternalSetPrototype(S.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(S,"BYTES_PER_ELEMENT",4,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(S.prototype,
|
|||
|
|
"constructor",a.Int32Array,2);
|
|||
|
|
%AddNamedProperty(S.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",4,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
%SetCode(T,Float32ArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(T,new k());
|
|||
|
|
%InternalSetPrototype(T,W);
|
|||
|
|
%InternalSetPrototype(T.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(T,"BYTES_PER_ELEMENT",4,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(T.prototype,
|
|||
|
|
"constructor",a.Float32Array,2);
|
|||
|
|
%AddNamedProperty(T.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",4,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
%SetCode(U,Float64ArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(U,new k());
|
|||
|
|
%InternalSetPrototype(U,W);
|
|||
|
|
%InternalSetPrototype(U.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(U,"BYTES_PER_ELEMENT",8,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(U.prototype,
|
|||
|
|
"constructor",a.Float64Array,2);
|
|||
|
|
%AddNamedProperty(U.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",8,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
%SetCode(V,Uint8ClampedArrayConstructor);
|
|||
|
|
%FunctionSetPrototype(V,new k());
|
|||
|
|
%InternalSetPrototype(V,W);
|
|||
|
|
%InternalSetPrototype(V.prototype,W.prototype);
|
|||
|
|
%AddNamedProperty(V,"BYTES_PER_ELEMENT",1,
|
|||
|
|
1|2|4);
|
|||
|
|
%AddNamedProperty(V.prototype,
|
|||
|
|
"constructor",a.Uint8ClampedArray,2);
|
|||
|
|
%AddNamedProperty(V.prototype,
|
|||
|
|
"BYTES_PER_ELEMENT",1,
|
|||
|
|
1|2|4);
|
|||
|
|
|
|||
|
|
|
|||
|
|
function DataViewGetInt8JS(am,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.getInt8',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<1)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
return %DataViewGetInt8(this,am,!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewGetInt8JS,1);
|
|||
|
|
function DataViewSetInt8JS(am,az,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.setInt8',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<2)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
%DataViewSetInt8(this,am,(%_ToNumber(az)),!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewSetInt8JS,2);
|
|||
|
|
|
|||
|
|
function DataViewGetUint8JS(am,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.getUint8',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<1)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
return %DataViewGetUint8(this,am,!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewGetUint8JS,1);
|
|||
|
|
function DataViewSetUint8JS(am,az,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.setUint8',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<2)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
%DataViewSetUint8(this,am,(%_ToNumber(az)),!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewSetUint8JS,2);
|
|||
|
|
|
|||
|
|
function DataViewGetInt16JS(am,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.getInt16',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<1)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
return %DataViewGetInt16(this,am,!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewGetInt16JS,1);
|
|||
|
|
function DataViewSetInt16JS(am,az,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.setInt16',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<2)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
%DataViewSetInt16(this,am,(%_ToNumber(az)),!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewSetInt16JS,2);
|
|||
|
|
|
|||
|
|
function DataViewGetUint16JS(am,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.getUint16',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<1)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
return %DataViewGetUint16(this,am,!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewGetUint16JS,1);
|
|||
|
|
function DataViewSetUint16JS(am,az,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.setUint16',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<2)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
%DataViewSetUint16(this,am,(%_ToNumber(az)),!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewSetUint16JS,2);
|
|||
|
|
|
|||
|
|
function DataViewGetInt32JS(am,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.getInt32',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<1)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
return %DataViewGetInt32(this,am,!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewGetInt32JS,1);
|
|||
|
|
function DataViewSetInt32JS(am,az,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.setInt32',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<2)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
%DataViewSetInt32(this,am,(%_ToNumber(az)),!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewSetInt32JS,2);
|
|||
|
|
|
|||
|
|
function DataViewGetUint32JS(am,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.getUint32',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<1)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
return %DataViewGetUint32(this,am,!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewGetUint32JS,1);
|
|||
|
|
function DataViewSetUint32JS(am,az,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.setUint32',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<2)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
%DataViewSetUint32(this,am,(%_ToNumber(az)),!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewSetUint32JS,2);
|
|||
|
|
|
|||
|
|
function DataViewGetFloat32JS(am,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.getFloat32',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<1)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
return %DataViewGetFloat32(this,am,!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewGetFloat32JS,1);
|
|||
|
|
function DataViewSetFloat32JS(am,az,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.setFloat32',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<2)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
%DataViewSetFloat32(this,am,(%_ToNumber(az)),!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewSetFloat32JS,2);
|
|||
|
|
|
|||
|
|
function DataViewGetFloat64JS(am,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.getFloat64',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<1)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
return %DataViewGetFloat64(this,am,!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewGetFloat64JS,1);
|
|||
|
|
function DataViewSetFloat64JS(am,az,bD){
|
|||
|
|
if(!(%_ClassOf(this)==='DataView')){
|
|||
|
|
throw E(43,
|
|||
|
|
'DataView.setFloat64',this);
|
|||
|
|
}
|
|||
|
|
if(arguments.length<2)throw E(45);
|
|||
|
|
am=J(am,158);
|
|||
|
|
%DataViewSetFloat64(this,am,(%_ToNumber(az)),!!bD);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(DataViewSetFloat64JS,2);
|
|||
|
|
|
|||
|
|
|
|||
|
|
b.InstallFunctions(j.prototype,2,[
|
|||
|
|
"getInt8",DataViewGetInt8JS,
|
|||
|
|
"setInt8",DataViewSetInt8JS,
|
|||
|
|
"getUint8",DataViewGetUint8JS,
|
|||
|
|
"setUint8",DataViewSetUint8JS,
|
|||
|
|
"getInt16",DataViewGetInt16JS,
|
|||
|
|
"setInt16",DataViewSetInt16JS,
|
|||
|
|
"getUint16",DataViewGetUint16JS,
|
|||
|
|
"setUint16",DataViewSetUint16JS,
|
|||
|
|
"getInt32",DataViewGetInt32JS,
|
|||
|
|
"setInt32",DataViewSetInt32JS,
|
|||
|
|
"getUint32",DataViewGetUint32JS,
|
|||
|
|
"setUint32",DataViewSetUint32JS,
|
|||
|
|
"getFloat32",DataViewGetFloat32JS,
|
|||
|
|
"setFloat32",DataViewSetFloat32JS,
|
|||
|
|
"getFloat64",DataViewGetFloat64JS,
|
|||
|
|
"setFloat64",DataViewSetFloat64JS
|
|||
|
|
]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
Hiterator-prototype<70>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Object;
|
|||
|
|
var d=b.ImportNow("IteratorPrototype");
|
|||
|
|
var e=b.ImportNow("iterator_symbol");
|
|||
|
|
function IteratorPrototypeIterator(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
b.SetFunctionName(IteratorPrototypeIterator,e);
|
|||
|
|
%AddNamedProperty(d,e,
|
|||
|
|
IteratorPrototypeIterator,2);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
(collection<11>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Map;
|
|||
|
|
var d=a.Object;
|
|||
|
|
var e=a.Set;
|
|||
|
|
var f=b.ImportNow("hash_code_symbol");
|
|||
|
|
var g;
|
|||
|
|
var h;
|
|||
|
|
var i;
|
|||
|
|
var j;
|
|||
|
|
var k;
|
|||
|
|
var l=b.ImportNow("species_symbol");
|
|||
|
|
var m=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
b.Import(function(n){
|
|||
|
|
g=n.IntRandom;
|
|||
|
|
h=n.MakeTypeError;
|
|||
|
|
i=n.MapIterator;
|
|||
|
|
j=n.NumberIsNaN;
|
|||
|
|
k=n.SetIterator;
|
|||
|
|
});
|
|||
|
|
function HashToEntry(o,p,q){
|
|||
|
|
var r=(p&((q)-1));
|
|||
|
|
return((%_FixedArrayGet(o,(3+(r))|0)));
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(HashToEntry);
|
|||
|
|
function SetFindEntry(o,q,s,p){
|
|||
|
|
var t=HashToEntry(o,p,q);
|
|||
|
|
if(t===-1)return t;
|
|||
|
|
var u=((%_FixedArrayGet(o,((3+(q)+((t)<<1)))|0)));
|
|||
|
|
if(s===u)return t;
|
|||
|
|
var v=j(s);
|
|||
|
|
while(true){
|
|||
|
|
if(v&&j(u)){
|
|||
|
|
return t;
|
|||
|
|
}
|
|||
|
|
t=((%_FixedArrayGet(o,((3+(q)+((t)<<1))+1)|0)));
|
|||
|
|
if(t===-1)return t;
|
|||
|
|
u=((%_FixedArrayGet(o,((3+(q)+((t)<<1)))|0)));
|
|||
|
|
if(s===u)return t;
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(SetFindEntry);
|
|||
|
|
function MapFindEntry(o,q,s,p){
|
|||
|
|
var t=HashToEntry(o,p,q);
|
|||
|
|
if(t===-1)return t;
|
|||
|
|
var u=((%_FixedArrayGet(o,((3+(q)+((t)*3)))|0)));
|
|||
|
|
if(s===u)return t;
|
|||
|
|
var v=j(s);
|
|||
|
|
while(true){
|
|||
|
|
if(v&&j(u)){
|
|||
|
|
return t;
|
|||
|
|
}
|
|||
|
|
t=((%_FixedArrayGet(o,((3+(q)+((t)*3))+2)|0)));
|
|||
|
|
if(t===-1)return t;
|
|||
|
|
u=((%_FixedArrayGet(o,((3+(q)+((t)*3)))|0)));
|
|||
|
|
if(s===u)return t;
|
|||
|
|
}
|
|||
|
|
return-1;
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(MapFindEntry);
|
|||
|
|
function ComputeIntegerHash(s,w){
|
|||
|
|
var p=s;
|
|||
|
|
p=p^w;
|
|||
|
|
p=~p+(p<<15);
|
|||
|
|
p=p^(p>>>12);
|
|||
|
|
p=p+(p<<2);
|
|||
|
|
p=p^(p>>>4);
|
|||
|
|
p=(p*2057)|0;
|
|||
|
|
p=p^(p>>>16);
|
|||
|
|
return p&0x3fffffff;
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(ComputeIntegerHash);
|
|||
|
|
function GetExistingHash(s){
|
|||
|
|
if(%_IsSmi(s)){
|
|||
|
|
return ComputeIntegerHash(s,0);
|
|||
|
|
}
|
|||
|
|
if((typeof(s)==='string')){
|
|||
|
|
var x=%_StringGetRawHashField(s);
|
|||
|
|
if((x&1)===0){
|
|||
|
|
return x>>>2;
|
|||
|
|
}
|
|||
|
|
}else if((%_IsJSReceiver(s))&&!(%_IsJSProxy(s))&&!(%_ClassOf(s)==='global')){
|
|||
|
|
var p=(s[f]);
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
return %GenericHash(s);
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(GetExistingHash);
|
|||
|
|
function GetHash(s){
|
|||
|
|
var p=GetExistingHash(s);
|
|||
|
|
if((p===(void 0))){
|
|||
|
|
p=g()|0;
|
|||
|
|
if(p===0)p=1;
|
|||
|
|
(s[f]=p);
|
|||
|
|
}
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
%SetForceInlineFlag(GetHash);
|
|||
|
|
function SetConstructor(y){
|
|||
|
|
if((new.target===(void 0))){
|
|||
|
|
throw h(27,"Set");
|
|||
|
|
}
|
|||
|
|
%_SetInitialize(this);
|
|||
|
|
if(!(y==null)){
|
|||
|
|
var z=this.add;
|
|||
|
|
if(!(typeof(z)==='function')){
|
|||
|
|
throw h(85,z,'add',this);
|
|||
|
|
}
|
|||
|
|
for(var A of y){
|
|||
|
|
%_Call(z,this,A);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function SetAdd(s){
|
|||
|
|
if(!(%_ClassOf(this)==='Set')){
|
|||
|
|
throw h(43,'Set.prototype.add',this);
|
|||
|
|
}
|
|||
|
|
if(s===0){
|
|||
|
|
s=0;
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
var q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
var p=GetHash(s);
|
|||
|
|
if(SetFindEntry(o,q,s,p)!==-1)return this;
|
|||
|
|
var B=((%_FixedArrayGet(o,(1)|0)));
|
|||
|
|
var C=((%_FixedArrayGet(o,(2)|0)));
|
|||
|
|
var D=q<<1;
|
|||
|
|
if((B+C)>=D){
|
|||
|
|
%SetGrow(this);
|
|||
|
|
o=%_JSCollectionGetTable(this);
|
|||
|
|
q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
B=((%_FixedArrayGet(o,(1)|0)));
|
|||
|
|
C=((%_FixedArrayGet(o,(2)|0)));
|
|||
|
|
}
|
|||
|
|
var t=B+C;
|
|||
|
|
var E=(3+(q)+((t)<<1));
|
|||
|
|
var r=(p&((q)-1));
|
|||
|
|
var F=((%_FixedArrayGet(o,(3+(r))|0)));
|
|||
|
|
((%_FixedArraySet(o,(3+(r))|0,t)));
|
|||
|
|
(((%_FixedArraySet(o,(1)|0,(B+1)|0))));
|
|||
|
|
(%_FixedArraySet(o,(E)|0,s));
|
|||
|
|
((%_FixedArraySet(o,(E+1)|0,(F)|0)));
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
function SetHas(s){
|
|||
|
|
if(!(%_ClassOf(this)==='Set')){
|
|||
|
|
throw h(43,'Set.prototype.has',this);
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
var q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
var p=GetExistingHash(s);
|
|||
|
|
if((p===(void 0)))return false;
|
|||
|
|
return SetFindEntry(o,q,s,p)!==-1;
|
|||
|
|
}
|
|||
|
|
function SetDelete(s){
|
|||
|
|
if(!(%_ClassOf(this)==='Set')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Set.prototype.delete',this);
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
var q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
var p=GetExistingHash(s);
|
|||
|
|
if((p===(void 0)))return false;
|
|||
|
|
var t=SetFindEntry(o,q,s,p);
|
|||
|
|
if(t===-1)return false;
|
|||
|
|
var B=((%_FixedArrayGet(o,(1)|0)))-1;
|
|||
|
|
var C=((%_FixedArrayGet(o,(2)|0)))+1;
|
|||
|
|
var E=(3+(q)+((t)<<1));
|
|||
|
|
(%_FixedArraySet(o,(E)|0,%_TheHole()));
|
|||
|
|
(((%_FixedArraySet(o,(1)|0,(B)|0))));
|
|||
|
|
(((%_FixedArraySet(o,(2)|0,(C)|0))));
|
|||
|
|
if(B<(q>>>1))%SetShrink(this);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
function SetGetSize(){
|
|||
|
|
if(!(%_ClassOf(this)==='Set')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Set.prototype.size',this);
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
return((%_FixedArrayGet(o,(1)|0)));
|
|||
|
|
}
|
|||
|
|
function SetClearJS(){
|
|||
|
|
if(!(%_ClassOf(this)==='Set')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Set.prototype.clear',this);
|
|||
|
|
}
|
|||
|
|
%_SetClear(this);
|
|||
|
|
}
|
|||
|
|
function SetForEach(G,H){
|
|||
|
|
if(!(%_ClassOf(this)==='Set')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Set.prototype.forEach',this);
|
|||
|
|
}
|
|||
|
|
if(!(typeof(G)==='function'))throw h(15,G);
|
|||
|
|
var I=new k(this,2);
|
|||
|
|
var s;
|
|||
|
|
var J=[(void 0)];
|
|||
|
|
while(%SetIteratorNext(I,J)){
|
|||
|
|
s=J[0];
|
|||
|
|
%_Call(G,H,s,s,this);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function SetSpecies(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
%SetCode(e,SetConstructor);
|
|||
|
|
%FunctionSetLength(e,0);
|
|||
|
|
%FunctionSetPrototype(e,new d());
|
|||
|
|
%AddNamedProperty(e.prototype,"constructor",e,2);
|
|||
|
|
%AddNamedProperty(e.prototype,m,"Set",
|
|||
|
|
2|1);
|
|||
|
|
%FunctionSetLength(SetForEach,1);
|
|||
|
|
b.InstallGetter(e,l,SetSpecies);
|
|||
|
|
b.InstallGetter(e.prototype,"size",SetGetSize);
|
|||
|
|
b.InstallFunctions(e.prototype,2,[
|
|||
|
|
"add",SetAdd,
|
|||
|
|
"has",SetHas,
|
|||
|
|
"delete",SetDelete,
|
|||
|
|
"clear",SetClearJS,
|
|||
|
|
"forEach",SetForEach
|
|||
|
|
]);
|
|||
|
|
function MapConstructor(y){
|
|||
|
|
if((new.target===(void 0))){
|
|||
|
|
throw h(27,"Map");
|
|||
|
|
}
|
|||
|
|
%_MapInitialize(this);
|
|||
|
|
if(!(y==null)){
|
|||
|
|
var z=this.set;
|
|||
|
|
if(!(typeof(z)==='function')){
|
|||
|
|
throw h(85,z,'set',this);
|
|||
|
|
}
|
|||
|
|
for(var K of y){
|
|||
|
|
if(!(%_IsJSReceiver(K))){
|
|||
|
|
throw h(50,K);
|
|||
|
|
}
|
|||
|
|
%_Call(z,this,K[0],K[1]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function MapGet(s){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Map.prototype.get',this);
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
var q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
var p=GetExistingHash(s);
|
|||
|
|
if((p===(void 0)))return(void 0);
|
|||
|
|
var t=MapFindEntry(o,q,s,p);
|
|||
|
|
if(t===-1)return(void 0);
|
|||
|
|
return((%_FixedArrayGet(o,((3+(q)+((t)*3))+1)|0)));
|
|||
|
|
}
|
|||
|
|
function MapSet(s,A){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Map.prototype.set',this);
|
|||
|
|
}
|
|||
|
|
if(s===0){
|
|||
|
|
s=0;
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
var q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
var p=GetHash(s);
|
|||
|
|
var t=MapFindEntry(o,q,s,p);
|
|||
|
|
if(t!==-1){
|
|||
|
|
var L=(3+(q)+((t)*3));
|
|||
|
|
(%_FixedArraySet(o,(L+1)|0,A));
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
var B=((%_FixedArrayGet(o,(1)|0)));
|
|||
|
|
var C=((%_FixedArrayGet(o,(2)|0)));
|
|||
|
|
var D=q<<1;
|
|||
|
|
if((B+C)>=D){
|
|||
|
|
%MapGrow(this);
|
|||
|
|
o=%_JSCollectionGetTable(this);
|
|||
|
|
q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
B=((%_FixedArrayGet(o,(1)|0)));
|
|||
|
|
C=((%_FixedArrayGet(o,(2)|0)));
|
|||
|
|
}
|
|||
|
|
t=B+C;
|
|||
|
|
var E=(3+(q)+((t)*3));
|
|||
|
|
var r=(p&((q)-1));
|
|||
|
|
var F=((%_FixedArrayGet(o,(3+(r))|0)));
|
|||
|
|
((%_FixedArraySet(o,(3+(r))|0,t)));
|
|||
|
|
(((%_FixedArraySet(o,(1)|0,(B+1)|0))));
|
|||
|
|
(%_FixedArraySet(o,(E)|0,s));
|
|||
|
|
(%_FixedArraySet(o,(E+1)|0,A));
|
|||
|
|
(%_FixedArraySet(o,(E+2)|0,F));
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
function MapHas(s){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Map.prototype.has',this);
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
var q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
var p=GetHash(s);
|
|||
|
|
return MapFindEntry(o,q,s,p)!==-1;
|
|||
|
|
}
|
|||
|
|
function MapDelete(s){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Map.prototype.delete',this);
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
var q=((%_FixedArrayGet(o,(0)|0)));
|
|||
|
|
var p=GetHash(s);
|
|||
|
|
var t=MapFindEntry(o,q,s,p);
|
|||
|
|
if(t===-1)return false;
|
|||
|
|
var B=((%_FixedArrayGet(o,(1)|0)))-1;
|
|||
|
|
var C=((%_FixedArrayGet(o,(2)|0)))+1;
|
|||
|
|
var E=(3+(q)+((t)*3));
|
|||
|
|
(%_FixedArraySet(o,(E)|0,%_TheHole()));
|
|||
|
|
(%_FixedArraySet(o,(E+1)|0,%_TheHole()));
|
|||
|
|
(((%_FixedArraySet(o,(1)|0,(B)|0))));
|
|||
|
|
(((%_FixedArraySet(o,(2)|0,(C)|0))));
|
|||
|
|
if(B<(q>>>1))%MapShrink(this);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
function MapGetSize(){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Map.prototype.size',this);
|
|||
|
|
}
|
|||
|
|
var o=%_JSCollectionGetTable(this);
|
|||
|
|
return((%_FixedArrayGet(o,(1)|0)));
|
|||
|
|
}
|
|||
|
|
function MapClearJS(){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Map.prototype.clear',this);
|
|||
|
|
}
|
|||
|
|
%_MapClear(this);
|
|||
|
|
}
|
|||
|
|
function MapForEach(G,H){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw h(43,
|
|||
|
|
'Map.prototype.forEach',this);
|
|||
|
|
}
|
|||
|
|
if(!(typeof(G)==='function'))throw h(15,G);
|
|||
|
|
var I=new i(this,3);
|
|||
|
|
var J=[(void 0),(void 0)];
|
|||
|
|
while(%MapIteratorNext(I,J)){
|
|||
|
|
%_Call(G,H,J[1],J[0],this);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function MapSpecies(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
%SetCode(c,MapConstructor);
|
|||
|
|
%FunctionSetLength(c,0);
|
|||
|
|
%FunctionSetPrototype(c,new d());
|
|||
|
|
%AddNamedProperty(c.prototype,"constructor",c,2);
|
|||
|
|
%AddNamedProperty(
|
|||
|
|
c.prototype,m,"Map",2|1);
|
|||
|
|
%FunctionSetLength(MapForEach,1);
|
|||
|
|
b.InstallGetter(c,l,MapSpecies);
|
|||
|
|
b.InstallGetter(c.prototype,"size",MapGetSize);
|
|||
|
|
b.InstallFunctions(c.prototype,2,[
|
|||
|
|
"get",MapGet,
|
|||
|
|
"set",MapSet,
|
|||
|
|
"has",MapHas,
|
|||
|
|
"delete",MapDelete,
|
|||
|
|
"clear",MapClearJS,
|
|||
|
|
"forEach",MapForEach
|
|||
|
|
]);
|
|||
|
|
%InstallToContext([
|
|||
|
|
"map_get",MapGet,
|
|||
|
|
"map_set",MapSet,
|
|||
|
|
"map_has",MapHas,
|
|||
|
|
"map_delete",MapDelete,
|
|||
|
|
"set_add",SetAdd,
|
|||
|
|
"set_has",SetHas,
|
|||
|
|
"set_delete",SetDelete,
|
|||
|
|
]);
|
|||
|
|
b.Export(function(M){
|
|||
|
|
M.GetExistingHash=GetExistingHash;
|
|||
|
|
M.GetHash=GetHash;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
<weak-collection<6F>-
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c;
|
|||
|
|
var d;
|
|||
|
|
var e=a.Object;
|
|||
|
|
var f=a.WeakMap;
|
|||
|
|
var g=a.WeakSet;
|
|||
|
|
var h;
|
|||
|
|
var i=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
b.Import(function(j){
|
|||
|
|
c=j.GetExistingHash;
|
|||
|
|
d=j.GetHash;
|
|||
|
|
h=j.MakeTypeError;
|
|||
|
|
});
|
|||
|
|
function WeakMapConstructor(k){
|
|||
|
|
if((new.target===(void 0))){
|
|||
|
|
throw h(27,"WeakMap");
|
|||
|
|
}
|
|||
|
|
%WeakCollectionInitialize(this);
|
|||
|
|
if(!(k==null)){
|
|||
|
|
var l=this.set;
|
|||
|
|
if(!(typeof(l)==='function')){
|
|||
|
|
throw h(85,l,'set',this);
|
|||
|
|
}
|
|||
|
|
for(var m of k){
|
|||
|
|
if(!(%_IsJSReceiver(m))){
|
|||
|
|
throw h(50,m);
|
|||
|
|
}
|
|||
|
|
%_Call(l,this,m[0],m[1]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function WeakMapGet(n){
|
|||
|
|
if(!(%_ClassOf(this)==='WeakMap')){
|
|||
|
|
throw h(43,
|
|||
|
|
'WeakMap.prototype.get',this);
|
|||
|
|
}
|
|||
|
|
if(!(%_IsJSReceiver(n)))return(void 0);
|
|||
|
|
var o=c(n);
|
|||
|
|
if((o===(void 0)))return(void 0);
|
|||
|
|
return %WeakCollectionGet(this,n,o);
|
|||
|
|
}
|
|||
|
|
function WeakMapSet(n,p){
|
|||
|
|
if(!(%_ClassOf(this)==='WeakMap')){
|
|||
|
|
throw h(43,
|
|||
|
|
'WeakMap.prototype.set',this);
|
|||
|
|
}
|
|||
|
|
if(!(%_IsJSReceiver(n)))throw h(163);
|
|||
|
|
return %WeakCollectionSet(this,n,p,d(n));
|
|||
|
|
}
|
|||
|
|
function WeakMapHas(n){
|
|||
|
|
if(!(%_ClassOf(this)==='WeakMap')){
|
|||
|
|
throw h(43,
|
|||
|
|
'WeakMap.prototype.has',this);
|
|||
|
|
}
|
|||
|
|
if(!(%_IsJSReceiver(n)))return false;
|
|||
|
|
var o=c(n);
|
|||
|
|
if((o===(void 0)))return false;
|
|||
|
|
return %WeakCollectionHas(this,n,o);
|
|||
|
|
}
|
|||
|
|
function WeakMapDelete(n){
|
|||
|
|
if(!(%_ClassOf(this)==='WeakMap')){
|
|||
|
|
throw h(43,
|
|||
|
|
'WeakMap.prototype.delete',this);
|
|||
|
|
}
|
|||
|
|
if(!(%_IsJSReceiver(n)))return false;
|
|||
|
|
var o=c(n);
|
|||
|
|
if((o===(void 0)))return false;
|
|||
|
|
return %WeakCollectionDelete(this,n,o);
|
|||
|
|
}
|
|||
|
|
%SetCode(f,WeakMapConstructor);
|
|||
|
|
%FunctionSetLength(f,0);
|
|||
|
|
%FunctionSetPrototype(f,new e());
|
|||
|
|
%AddNamedProperty(f.prototype,"constructor",f,
|
|||
|
|
2);
|
|||
|
|
%AddNamedProperty(f.prototype,i,"WeakMap",
|
|||
|
|
2|1);
|
|||
|
|
b.InstallFunctions(f.prototype,2,[
|
|||
|
|
"get",WeakMapGet,
|
|||
|
|
"set",WeakMapSet,
|
|||
|
|
"has",WeakMapHas,
|
|||
|
|
"delete",WeakMapDelete
|
|||
|
|
]);
|
|||
|
|
function WeakSetConstructor(k){
|
|||
|
|
if((new.target===(void 0))){
|
|||
|
|
throw h(27,"WeakSet");
|
|||
|
|
}
|
|||
|
|
%WeakCollectionInitialize(this);
|
|||
|
|
if(!(k==null)){
|
|||
|
|
var l=this.add;
|
|||
|
|
if(!(typeof(l)==='function')){
|
|||
|
|
throw h(85,l,'add',this);
|
|||
|
|
}
|
|||
|
|
for(var p of k){
|
|||
|
|
%_Call(l,this,p);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function WeakSetAdd(p){
|
|||
|
|
if(!(%_ClassOf(this)==='WeakSet')){
|
|||
|
|
throw h(43,
|
|||
|
|
'WeakSet.prototype.add',this);
|
|||
|
|
}
|
|||
|
|
if(!(%_IsJSReceiver(p)))throw h(164);
|
|||
|
|
return %WeakCollectionSet(this,p,true,d(p));
|
|||
|
|
}
|
|||
|
|
function WeakSetHas(p){
|
|||
|
|
if(!(%_ClassOf(this)==='WeakSet')){
|
|||
|
|
throw h(43,
|
|||
|
|
'WeakSet.prototype.has',this);
|
|||
|
|
}
|
|||
|
|
if(!(%_IsJSReceiver(p)))return false;
|
|||
|
|
var o=c(p);
|
|||
|
|
if((o===(void 0)))return false;
|
|||
|
|
return %WeakCollectionHas(this,p,o);
|
|||
|
|
}
|
|||
|
|
function WeakSetDelete(p){
|
|||
|
|
if(!(%_ClassOf(this)==='WeakSet')){
|
|||
|
|
throw h(43,
|
|||
|
|
'WeakSet.prototype.delete',this);
|
|||
|
|
}
|
|||
|
|
if(!(%_IsJSReceiver(p)))return false;
|
|||
|
|
var o=c(p);
|
|||
|
|
if((o===(void 0)))return false;
|
|||
|
|
return %WeakCollectionDelete(this,p,o);
|
|||
|
|
}
|
|||
|
|
%SetCode(g,WeakSetConstructor);
|
|||
|
|
%FunctionSetLength(g,0);
|
|||
|
|
%FunctionSetPrototype(g,new e());
|
|||
|
|
%AddNamedProperty(g.prototype,"constructor",g,
|
|||
|
|
2);
|
|||
|
|
%AddNamedProperty(g.prototype,i,"WeakSet",
|
|||
|
|
2|1);
|
|||
|
|
b.InstallFunctions(g.prototype,2,[
|
|||
|
|
"add",WeakSetAdd,
|
|||
|
|
"has",WeakSetHas,
|
|||
|
|
"delete",WeakSetDelete
|
|||
|
|
]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
Lcollection-iterator(
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Map;
|
|||
|
|
var d=a.Set;
|
|||
|
|
var e=b.ImportNow("iterator_symbol");
|
|||
|
|
var f;
|
|||
|
|
var g=b.ImportNow("MapIterator");
|
|||
|
|
var h=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
var i=b.ImportNow("SetIterator");
|
|||
|
|
b.Import(function(j){
|
|||
|
|
f=j.MakeTypeError;
|
|||
|
|
});
|
|||
|
|
function SetIteratorConstructor(k,l){
|
|||
|
|
%SetIteratorInitialize(this,k,l);
|
|||
|
|
}
|
|||
|
|
function SetIteratorNextJS(){
|
|||
|
|
if(!(%_ClassOf(this)==='Set Iterator')){
|
|||
|
|
throw f(43,
|
|||
|
|
'Set Iterator.prototype.next',this);
|
|||
|
|
}
|
|||
|
|
var m=[(void 0),(void 0)];
|
|||
|
|
var n=%_CreateIterResultObject(m,false);
|
|||
|
|
switch(%SetIteratorNext(this,m)){
|
|||
|
|
case 0:
|
|||
|
|
n.value=(void 0);
|
|||
|
|
n.done=true;
|
|||
|
|
break;
|
|||
|
|
case 2:
|
|||
|
|
n.value=m[0];
|
|||
|
|
break;
|
|||
|
|
case 3:
|
|||
|
|
m[1]=m[0];
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
return n;
|
|||
|
|
}
|
|||
|
|
function SetEntries(){
|
|||
|
|
if(!(%_ClassOf(this)==='Set')){
|
|||
|
|
throw f(43,
|
|||
|
|
'Set.prototype.entries',this);
|
|||
|
|
}
|
|||
|
|
return new i(this,3);
|
|||
|
|
}
|
|||
|
|
function SetValues(){
|
|||
|
|
if(!(%_ClassOf(this)==='Set')){
|
|||
|
|
throw f(43,
|
|||
|
|
'Set.prototype.values',this);
|
|||
|
|
}
|
|||
|
|
return new i(this,2);
|
|||
|
|
}
|
|||
|
|
%SetCode(i,SetIteratorConstructor);
|
|||
|
|
%FunctionSetInstanceClassName(i,'Set Iterator');
|
|||
|
|
b.InstallFunctions(i.prototype,2,[
|
|||
|
|
'next',SetIteratorNextJS
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(i.prototype,h,
|
|||
|
|
"Set Iterator",1|2);
|
|||
|
|
b.InstallFunctions(d.prototype,2,[
|
|||
|
|
'entries',SetEntries,
|
|||
|
|
'keys',SetValues,
|
|||
|
|
'values',SetValues
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(d.prototype,e,SetValues,2);
|
|||
|
|
function MapIteratorConstructor(o,l){
|
|||
|
|
%MapIteratorInitialize(this,o,l);
|
|||
|
|
}
|
|||
|
|
function MapIteratorNextJS(){
|
|||
|
|
if(!(%_ClassOf(this)==='Map Iterator')){
|
|||
|
|
throw f(43,
|
|||
|
|
'Map Iterator.prototype.next',this);
|
|||
|
|
}
|
|||
|
|
var m=[(void 0),(void 0)];
|
|||
|
|
var n=%_CreateIterResultObject(m,false);
|
|||
|
|
switch(%MapIteratorNext(this,m)){
|
|||
|
|
case 0:
|
|||
|
|
n.value=(void 0);
|
|||
|
|
n.done=true;
|
|||
|
|
break;
|
|||
|
|
case 1:
|
|||
|
|
n.value=m[0];
|
|||
|
|
break;
|
|||
|
|
case 2:
|
|||
|
|
n.value=m[1];
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
return n;
|
|||
|
|
}
|
|||
|
|
function MapEntries(){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw f(43,
|
|||
|
|
'Map.prototype.entries',this);
|
|||
|
|
}
|
|||
|
|
return new g(this,3);
|
|||
|
|
}
|
|||
|
|
function MapKeys(){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw f(43,
|
|||
|
|
'Map.prototype.keys',this);
|
|||
|
|
}
|
|||
|
|
return new g(this,1);
|
|||
|
|
}
|
|||
|
|
function MapValues(){
|
|||
|
|
if(!(%_ClassOf(this)==='Map')){
|
|||
|
|
throw f(43,
|
|||
|
|
'Map.prototype.values',this);
|
|||
|
|
}
|
|||
|
|
return new g(this,2);
|
|||
|
|
}
|
|||
|
|
%SetCode(g,MapIteratorConstructor);
|
|||
|
|
%FunctionSetInstanceClassName(g,'Map Iterator');
|
|||
|
|
b.InstallFunctions(g.prototype,2,[
|
|||
|
|
'next',MapIteratorNextJS
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(g.prototype,h,
|
|||
|
|
"Map Iterator",1|2);
|
|||
|
|
b.InstallFunctions(c.prototype,2,[
|
|||
|
|
'entries',MapEntries,
|
|||
|
|
'keys',MapKeys,
|
|||
|
|
'values',MapValues
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(c.prototype,e,MapEntries,2);
|
|||
|
|
b.Export(function(p){
|
|||
|
|
p.MapEntries=MapEntries;
|
|||
|
|
p.MapIteratorNext=MapIteratorNextJS;
|
|||
|
|
p.SetIteratorNext=SetIteratorNextJS;
|
|||
|
|
p.SetValues=SetValues;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
promise<73><65>
|
|||
|
|
(function(a,b,c){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var d=b.InternalArray;
|
|||
|
|
var e;
|
|||
|
|
var f=
|
|||
|
|
b.ImportNow("promise_combined_deferred_symbol");
|
|||
|
|
var g=
|
|||
|
|
b.ImportNow("promise_has_handler_symbol");
|
|||
|
|
var h=
|
|||
|
|
b.ImportNow("promise_reject_reactions_symbol");
|
|||
|
|
var i=
|
|||
|
|
b.ImportNow("promise_fulfill_reactions_symbol");
|
|||
|
|
var j=
|
|||
|
|
b.ImportNow("promise_deferred_reactions_symbol");
|
|||
|
|
var k=b.ImportNow("promise_raw_symbol");
|
|||
|
|
var l=b.ImportNow("promise_state_symbol");
|
|||
|
|
var m=b.ImportNow("promise_result_symbol");
|
|||
|
|
var n;
|
|||
|
|
var o=b.ImportNow("species_symbol");
|
|||
|
|
var p=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
b.Import(function(q){
|
|||
|
|
e=q.MakeTypeError;
|
|||
|
|
n=q.SpeciesConstructor;
|
|||
|
|
});
|
|||
|
|
const kPending=0;
|
|||
|
|
const kFulfilled=+1;
|
|||
|
|
const kRejected=-1;
|
|||
|
|
var r=0;
|
|||
|
|
function CreateResolvingFunctions(s){
|
|||
|
|
var t=false;
|
|||
|
|
var u=value=>{
|
|||
|
|
if(t===true)return;
|
|||
|
|
t=true;
|
|||
|
|
ResolvePromise(s,value);
|
|||
|
|
};
|
|||
|
|
var v=reason=>{
|
|||
|
|
if(t===true)return;
|
|||
|
|
t=true;
|
|||
|
|
RejectPromise(s,reason);
|
|||
|
|
};
|
|||
|
|
return{
|
|||
|
|
__proto__:null,
|
|||
|
|
resolve:u,
|
|||
|
|
reject:v
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
var w=function Promise(x){
|
|||
|
|
if(x===k){
|
|||
|
|
return %_NewObject(w,new.target);
|
|||
|
|
}
|
|||
|
|
if((new.target===(void 0)))throw e(64,this);
|
|||
|
|
if(!(typeof(x)==='function')){
|
|||
|
|
throw e(126,x);
|
|||
|
|
}
|
|||
|
|
var s=PromiseInit(%_NewObject(w,new.target));
|
|||
|
|
var y=CreateResolvingFunctions(s);
|
|||
|
|
var z=(%_DebugIsActive()!=0);
|
|||
|
|
try{
|
|||
|
|
if(z)%DebugPushPromise(s,Promise);
|
|||
|
|
x(y.resolve,y.reject);
|
|||
|
|
}catch(e){
|
|||
|
|
%_Call(y.reject,(void 0),e);
|
|||
|
|
}finally{
|
|||
|
|
if(z)%DebugPopPromise();
|
|||
|
|
}
|
|||
|
|
return s;
|
|||
|
|
}
|
|||
|
|
function PromiseSet(s,A,B){
|
|||
|
|
(s[l]=A);
|
|||
|
|
(s[m]=B);
|
|||
|
|
(s[i]=(void 0));
|
|||
|
|
(s[h]=(void 0));
|
|||
|
|
(s[j]=(void 0));
|
|||
|
|
return s;
|
|||
|
|
}
|
|||
|
|
function PromiseCreateAndSet(A,B){
|
|||
|
|
var s=new w(k);
|
|||
|
|
if((%_DebugIsActive()!=0))PromiseSet(s,kPending,(void 0));
|
|||
|
|
return PromiseSet(s,A,B);
|
|||
|
|
}
|
|||
|
|
function PromiseInit(s){
|
|||
|
|
return PromiseSet(s,kPending,(void 0));
|
|||
|
|
}
|
|||
|
|
function FulfillPromise(s,A,B,C){
|
|||
|
|
if((s[l])===kPending){
|
|||
|
|
var D=(s[C]);
|
|||
|
|
if(!(D===(void 0))){
|
|||
|
|
var D=(s[C]);
|
|||
|
|
var E=(s[j]);
|
|||
|
|
PromiseEnqueue(B,D,E,A);
|
|||
|
|
}
|
|||
|
|
PromiseSet(s,A,B);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function PromiseHandle(B,F,G){
|
|||
|
|
var z=(%_DebugIsActive()!=0);
|
|||
|
|
try{
|
|||
|
|
if(z)%DebugPushPromise(G.promise,PromiseHandle);
|
|||
|
|
var H=F(B);
|
|||
|
|
G.resolve(H);
|
|||
|
|
}catch(exception){
|
|||
|
|
try{G.reject(exception);}catch(e){}
|
|||
|
|
}finally{
|
|||
|
|
if(z)%DebugPopPromise();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function PromiseEnqueue(B,D,E,A){
|
|||
|
|
var I,J,K=(%_DebugIsActive()!=0);
|
|||
|
|
%EnqueueMicrotask(function(){
|
|||
|
|
if(K){
|
|||
|
|
%DebugAsyncTaskEvent({type:"willHandle",id:I,name:J});
|
|||
|
|
}
|
|||
|
|
if((%_IsArray(D))){
|
|||
|
|
for(var L=0;L<D.length;L+=2){
|
|||
|
|
PromiseHandle(B,D[L],D[L+1]);
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
PromiseHandle(B,D,E);
|
|||
|
|
}
|
|||
|
|
if(K){
|
|||
|
|
%DebugAsyncTaskEvent({type:"didHandle",id:I,name:J});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
if(K){
|
|||
|
|
I=++r;
|
|||
|
|
J=A===kFulfilled?"Promise.resolve":"Promise.reject";
|
|||
|
|
%DebugAsyncTaskEvent({type:"enqueue",id:I,name:J});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function PromiseAttachCallbacks(s,G,M,N){
|
|||
|
|
var O=
|
|||
|
|
(s[i]);
|
|||
|
|
if((O===(void 0))){
|
|||
|
|
(s[i]=M);
|
|||
|
|
(s[h]=N);
|
|||
|
|
(s[j]=G);
|
|||
|
|
}else if(!(%_IsArray(O))){
|
|||
|
|
var P=new d();
|
|||
|
|
var Q=new d();
|
|||
|
|
var R=(s[j]);
|
|||
|
|
P.push(
|
|||
|
|
O,R,M,G);
|
|||
|
|
Q.push((s[h]),
|
|||
|
|
R,
|
|||
|
|
N,
|
|||
|
|
G);
|
|||
|
|
(s[i]=P);
|
|||
|
|
(s[h]=Q);
|
|||
|
|
}else{
|
|||
|
|
O.push(M,G);
|
|||
|
|
(s[h]).push(N,G);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function PromiseIdResolveHandler(S){return S}
|
|||
|
|
function PromiseIdRejectHandler(T){throw T}
|
|||
|
|
function PromiseNopResolver(){}
|
|||
|
|
function IsPromise(S){
|
|||
|
|
return(%_IsJSReceiver(S))&&(!(S[l]===(void 0)));
|
|||
|
|
}
|
|||
|
|
function PromiseCreate(){
|
|||
|
|
return new w(PromiseNopResolver)
|
|||
|
|
}
|
|||
|
|
function ResolvePromise(s,U){
|
|||
|
|
if(U===s){
|
|||
|
|
return RejectPromise(s,e(81,U));
|
|||
|
|
}
|
|||
|
|
if((%_IsJSReceiver(U))){
|
|||
|
|
try{
|
|||
|
|
var V=U.then;
|
|||
|
|
}catch(e){
|
|||
|
|
return RejectPromise(s,e);
|
|||
|
|
}
|
|||
|
|
if(IsPromise(U)&&V===PromiseThen){
|
|||
|
|
var W=(U[l]);
|
|||
|
|
if(W===kFulfilled){
|
|||
|
|
var X=(U[m]);
|
|||
|
|
FulfillPromise(s,kFulfilled,X,
|
|||
|
|
i);
|
|||
|
|
(s[g]=true);
|
|||
|
|
return;
|
|||
|
|
}else if(W===kRejected){
|
|||
|
|
var X=(U[m]);
|
|||
|
|
if(!(!(U[g]===(void 0)))){
|
|||
|
|
%PromiseRevokeReject(U);
|
|||
|
|
}
|
|||
|
|
RejectPromise(s,X);
|
|||
|
|
(U[g]=true);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if((typeof(V)==='function')){
|
|||
|
|
var I;
|
|||
|
|
var J="PromiseResolveThenableJob";
|
|||
|
|
var K=(%_DebugIsActive()!=0);
|
|||
|
|
%EnqueueMicrotask(function(){
|
|||
|
|
if(K){
|
|||
|
|
%DebugAsyncTaskEvent({type:"willHandle",id:I,name:J});
|
|||
|
|
}
|
|||
|
|
var y=CreateResolvingFunctions(s);
|
|||
|
|
try{
|
|||
|
|
%_Call(V,U,y.resolve,y.reject);
|
|||
|
|
}catch(e){
|
|||
|
|
%_Call(y.reject,(void 0),e);
|
|||
|
|
}
|
|||
|
|
if(K){
|
|||
|
|
%DebugAsyncTaskEvent({type:"didHandle",id:I,name:J});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
if(K){
|
|||
|
|
I=++r;
|
|||
|
|
%DebugAsyncTaskEvent({type:"enqueue",id:I,name:J});
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
FulfillPromise(s,kFulfilled,U,i);
|
|||
|
|
}
|
|||
|
|
function RejectPromise(s,Y){
|
|||
|
|
if((s[l])===kPending){
|
|||
|
|
var z=(%_DebugIsActive()!=0);
|
|||
|
|
if(z||
|
|||
|
|
!(!(s[g]===(void 0)))){
|
|||
|
|
%PromiseRejectEvent(s,Y,z);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
FulfillPromise(s,kRejected,Y,h)
|
|||
|
|
}
|
|||
|
|
function NewPromiseCapability(Z){
|
|||
|
|
if(Z===w){
|
|||
|
|
var s=PromiseInit(new w(k));
|
|||
|
|
var y=CreateResolvingFunctions(s);
|
|||
|
|
return{
|
|||
|
|
promise:s,
|
|||
|
|
resolve:y.resolve,
|
|||
|
|
reject:y.reject
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
var H={promise:(void 0),resolve:(void 0),reject:(void 0)};
|
|||
|
|
H.promise=new Z((u,v)=>{
|
|||
|
|
if(!(H.resolve===(void 0))||!(H.reject===(void 0)))
|
|||
|
|
throw e(82);
|
|||
|
|
H.resolve=u;
|
|||
|
|
H.reject=v;
|
|||
|
|
});
|
|||
|
|
if(!(typeof(H.resolve)==='function')||!(typeof(H.reject)==='function'))
|
|||
|
|
throw e(83);
|
|||
|
|
return H;
|
|||
|
|
}
|
|||
|
|
function PromiseDefer(){
|
|||
|
|
%IncrementUseCounter(19);
|
|||
|
|
return NewPromiseCapability(this);
|
|||
|
|
}
|
|||
|
|
function PromiseAccept(S){
|
|||
|
|
%IncrementUseCounter(18);
|
|||
|
|
return %_Call(PromiseResolve,this,S);
|
|||
|
|
}
|
|||
|
|
function PromiseReject(T){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw e(16,PromiseResolve);
|
|||
|
|
}
|
|||
|
|
if(this===w){
|
|||
|
|
var s=PromiseCreateAndSet(kRejected,T);
|
|||
|
|
%PromiseRejectEvent(s,T,false);
|
|||
|
|
return s;
|
|||
|
|
}else{
|
|||
|
|
var aa=NewPromiseCapability(this);
|
|||
|
|
%_Call(aa.reject,(void 0),T);
|
|||
|
|
return aa.promise;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function PromiseCreateRejected(T){
|
|||
|
|
return %_Call(PromiseReject,w,T);
|
|||
|
|
}
|
|||
|
|
function PromiseCreateResolved(S){
|
|||
|
|
return %_Call(PromiseResolve,w,S);
|
|||
|
|
}
|
|||
|
|
function PromiseThen(M,N){
|
|||
|
|
var A=(this[l]);
|
|||
|
|
if((A===(void 0))){
|
|||
|
|
throw e(64,this);
|
|||
|
|
}
|
|||
|
|
var ab=n(this,w);
|
|||
|
|
M=(typeof(M)==='function')?M:PromiseIdResolveHandler;
|
|||
|
|
N=(typeof(N)==='function')?N:PromiseIdRejectHandler;
|
|||
|
|
var G=NewPromiseCapability(ab);
|
|||
|
|
switch(A){
|
|||
|
|
case kPending:
|
|||
|
|
PromiseAttachCallbacks(this,G,M,N);
|
|||
|
|
break;
|
|||
|
|
case kFulfilled:
|
|||
|
|
PromiseEnqueue((this[m]),
|
|||
|
|
M,G,kFulfilled);
|
|||
|
|
break;
|
|||
|
|
case kRejected:
|
|||
|
|
if(!(!(this[g]===(void 0)))){
|
|||
|
|
%PromiseRevokeReject(this);
|
|||
|
|
}
|
|||
|
|
PromiseEnqueue((this[m]),
|
|||
|
|
N,G,kRejected);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
(this[g]=true);
|
|||
|
|
return G.promise;
|
|||
|
|
}
|
|||
|
|
function PromiseChain(M,N){
|
|||
|
|
%IncrementUseCounter(17);
|
|||
|
|
return %_Call(PromiseThen,this,M,N);
|
|||
|
|
}
|
|||
|
|
function PromiseCatch(N){
|
|||
|
|
return this.then((void 0),N);
|
|||
|
|
}
|
|||
|
|
function PromiseResolve(S){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw e(16,PromiseResolve);
|
|||
|
|
}
|
|||
|
|
if(IsPromise(S)&&S.constructor===this)return S;
|
|||
|
|
var aa=NewPromiseCapability(this);
|
|||
|
|
var ac=%_Call(aa.resolve,(void 0),S);
|
|||
|
|
return aa.promise;
|
|||
|
|
}
|
|||
|
|
function PromiseAll(ad){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw e(16,"Promise.all");
|
|||
|
|
}
|
|||
|
|
var G=NewPromiseCapability(this);
|
|||
|
|
var ae=new d();
|
|||
|
|
var af;
|
|||
|
|
function CreateResolveElementFunction(ag,ah,aa){
|
|||
|
|
var ai=false;
|
|||
|
|
return(S)=>{
|
|||
|
|
if(ai===true)return;
|
|||
|
|
ai=true;
|
|||
|
|
ah[ag]=S;
|
|||
|
|
if(--af===0){
|
|||
|
|
var aj=[];
|
|||
|
|
%MoveArrayContents(ah,aj);
|
|||
|
|
%_Call(aa.resolve,(void 0),aj);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
try{
|
|||
|
|
var L=0;
|
|||
|
|
af=1;
|
|||
|
|
for(var B of ad){
|
|||
|
|
var ak=this.resolve(B);
|
|||
|
|
++af;
|
|||
|
|
ak.then(
|
|||
|
|
CreateResolveElementFunction(L,ae,G),
|
|||
|
|
G.reject);
|
|||
|
|
(G.reject[f]=G);
|
|||
|
|
++L;
|
|||
|
|
}
|
|||
|
|
if(--af===0){
|
|||
|
|
var aj=[];
|
|||
|
|
%MoveArrayContents(ae,aj);
|
|||
|
|
%_Call(G.resolve,(void 0),aj);
|
|||
|
|
}
|
|||
|
|
}catch(e){
|
|||
|
|
%_Call(G.reject,(void 0),e);
|
|||
|
|
}
|
|||
|
|
return G.promise;
|
|||
|
|
}
|
|||
|
|
function PromiseRace(ad){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw e(16,PromiseRace);
|
|||
|
|
}
|
|||
|
|
var G=NewPromiseCapability(this);
|
|||
|
|
try{
|
|||
|
|
for(var B of ad){
|
|||
|
|
this.resolve(B).then(G.resolve,G.reject);
|
|||
|
|
(G.reject[f]=G);
|
|||
|
|
}
|
|||
|
|
}catch(e){
|
|||
|
|
G.reject(e)
|
|||
|
|
}
|
|||
|
|
return G.promise;
|
|||
|
|
}
|
|||
|
|
function PromiseHasUserDefinedRejectHandlerCheck(F,G){
|
|||
|
|
if(F!==PromiseIdRejectHandler){
|
|||
|
|
var al=(F[f]);
|
|||
|
|
if((al===(void 0)))return true;
|
|||
|
|
if(PromiseHasUserDefinedRejectHandlerRecursive(al.promise)){
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}else if(PromiseHasUserDefinedRejectHandlerRecursive(G.promise)){
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
function PromiseHasUserDefinedRejectHandlerRecursive(s){
|
|||
|
|
var am=(s[h]);
|
|||
|
|
var E=(s[j]);
|
|||
|
|
if((am===(void 0)))return false;
|
|||
|
|
if(!(%_IsArray(am))){
|
|||
|
|
return PromiseHasUserDefinedRejectHandlerCheck(am,E);
|
|||
|
|
}else{
|
|||
|
|
for(var L=0;L<am.length;L+=2){
|
|||
|
|
if(PromiseHasUserDefinedRejectHandlerCheck(am[L],am[L+1])){
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
function PromiseHasUserDefinedRejectHandler(){
|
|||
|
|
return PromiseHasUserDefinedRejectHandlerRecursive(this);
|
|||
|
|
};
|
|||
|
|
function PromiseSpecies(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
%AddNamedProperty(a,'Promise',w,2);
|
|||
|
|
%AddNamedProperty(w.prototype,p,"Promise",
|
|||
|
|
2|1);
|
|||
|
|
b.InstallFunctions(w,2,[
|
|||
|
|
"reject",PromiseReject,
|
|||
|
|
"all",PromiseAll,
|
|||
|
|
"race",PromiseRace,
|
|||
|
|
"resolve",PromiseResolve
|
|||
|
|
]);
|
|||
|
|
b.InstallGetter(w,o,PromiseSpecies);
|
|||
|
|
b.InstallFunctions(w.prototype,2,[
|
|||
|
|
"then",PromiseThen,
|
|||
|
|
"catch",PromiseCatch
|
|||
|
|
]);
|
|||
|
|
%InstallToContext([
|
|||
|
|
"promise_catch",PromiseCatch,
|
|||
|
|
"promise_chain",PromiseChain,
|
|||
|
|
"promise_create",PromiseCreate,
|
|||
|
|
"promise_has_user_defined_reject_handler",PromiseHasUserDefinedRejectHandler,
|
|||
|
|
"promise_reject",RejectPromise,
|
|||
|
|
"promise_resolve",ResolvePromise,
|
|||
|
|
"promise_then",PromiseThen,
|
|||
|
|
"promise_create_rejected",PromiseCreateRejected,
|
|||
|
|
"promise_create_resolved",PromiseCreateResolved
|
|||
|
|
]);
|
|||
|
|
b.InstallFunctions(c,0,[
|
|||
|
|
"createPromise",PromiseCreate,
|
|||
|
|
"resolvePromise",ResolvePromise,
|
|||
|
|
"rejectPromise",RejectPromise
|
|||
|
|
]);
|
|||
|
|
[PromiseChain,PromiseDefer,PromiseAccept].forEach(
|
|||
|
|
fn=>%FunctionRemovePrototype(fn));
|
|||
|
|
b.Export(function(an){
|
|||
|
|
an.PromiseChain=PromiseChain;
|
|||
|
|
an.PromiseDefer=PromiseDefer;
|
|||
|
|
an.PromiseAccept=PromiseAccept;
|
|||
|
|
an.PromiseCreateRejected=PromiseCreateRejected;
|
|||
|
|
an.PromiseCreateResolved=PromiseCreateResolved;
|
|||
|
|
an.PromiseThen=PromiseThen;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
messages<19>
|
|||
|
|
(function(a,b){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c;
|
|||
|
|
var d;
|
|||
|
|
var e;
|
|||
|
|
var f;
|
|||
|
|
var g=
|
|||
|
|
b.ImportNow("call_site_receiver_symbol");
|
|||
|
|
var h=
|
|||
|
|
b.ImportNow("call_site_function_symbol");
|
|||
|
|
var i=
|
|||
|
|
b.ImportNow("call_site_position_symbol");
|
|||
|
|
var j=
|
|||
|
|
b.ImportNow("call_site_strict_symbol");
|
|||
|
|
var k=
|
|||
|
|
b.ImportNow("call_site_wasm_obj_symbol");
|
|||
|
|
var l=
|
|||
|
|
b.ImportNow("call_site_wasm_func_index_symbol");
|
|||
|
|
var m;
|
|||
|
|
var n=
|
|||
|
|
b.ImportNow("formatted_stack_trace_symbol");
|
|||
|
|
var o=a.Object;
|
|||
|
|
var p;
|
|||
|
|
var q;
|
|||
|
|
var r;
|
|||
|
|
var s=b.InternalArray;
|
|||
|
|
var t=b.ImportNow("internal_error_symbol");
|
|||
|
|
var u;
|
|||
|
|
var v=b.ImportNow("object_to_string");
|
|||
|
|
var w=b.ImportNow("Script");
|
|||
|
|
var x=b.ImportNow("stack_trace_symbol");
|
|||
|
|
var y;
|
|||
|
|
var z;
|
|||
|
|
var A=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
var B;
|
|||
|
|
var C;
|
|||
|
|
var D;
|
|||
|
|
b.Import(function(E){
|
|||
|
|
c=E.ArrayJoin;
|
|||
|
|
d=E.Bool16x8ToString;
|
|||
|
|
e=E.Bool32x4ToString;
|
|||
|
|
f=E.Bool8x16ToString;
|
|||
|
|
m=E.Float32x4ToString;
|
|||
|
|
p=E.Int16x8ToString;
|
|||
|
|
q=E.Int32x4ToString;
|
|||
|
|
r=E.Int8x16ToString;
|
|||
|
|
u=E.ObjectHasOwnProperty;
|
|||
|
|
y=E.StringIndexOf;
|
|||
|
|
z=E.SymbolToString;
|
|||
|
|
B=E.Uint16x8ToString;
|
|||
|
|
C=E.Uint32x4ToString;
|
|||
|
|
D=E.Uint8x16ToString;
|
|||
|
|
});
|
|||
|
|
var F;
|
|||
|
|
var G;
|
|||
|
|
var H;
|
|||
|
|
var I;
|
|||
|
|
var J;
|
|||
|
|
var K;
|
|||
|
|
var L;
|
|||
|
|
function NoSideEffectsObjectToString(){
|
|||
|
|
if((this===(void 0)))return"[object Undefined]";
|
|||
|
|
if((this===null))return"[object Null]";
|
|||
|
|
var M=(%_ToObject(this));
|
|||
|
|
var N=%_ClassOf(M);
|
|||
|
|
var O=%GetDataProperty(M,A);
|
|||
|
|
if(!(typeof(O)==='string')){
|
|||
|
|
O=N;
|
|||
|
|
}
|
|||
|
|
return`[object ${O}]`;
|
|||
|
|
}
|
|||
|
|
function IsErrorObject(P){
|
|||
|
|
return(%_Call(u,P,x));
|
|||
|
|
}
|
|||
|
|
function NoSideEffectsErrorToString(){
|
|||
|
|
var Q=%GetDataProperty(this,"name");
|
|||
|
|
var R=%GetDataProperty(this,"message");
|
|||
|
|
Q=(Q===(void 0))?"Error":NoSideEffectsToString(Q);
|
|||
|
|
R=(R===(void 0))?"":NoSideEffectsToString(R);
|
|||
|
|
if(Q=="")return R;
|
|||
|
|
if(R=="")return Q;
|
|||
|
|
return`${Q}: ${R}`;
|
|||
|
|
}
|
|||
|
|
function NoSideEffectsToString(P){
|
|||
|
|
if((typeof(P)==='string'))return P;
|
|||
|
|
if((typeof(P)==='number'))return %_NumberToString(P);
|
|||
|
|
if((typeof(P)==='boolean'))return P?'true':'false';
|
|||
|
|
if((P===(void 0)))return'undefined';
|
|||
|
|
if((P===null))return'null';
|
|||
|
|
if((%IsFunction(P))){
|
|||
|
|
var S=%FunctionToString(P);
|
|||
|
|
if(S.length>128){
|
|||
|
|
S=%_SubString(S,0,111)+"...<omitted>..."+
|
|||
|
|
%_SubString(S,S.length-2,S.length);
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
}
|
|||
|
|
if((typeof(P)==='symbol'))return %_Call(z,P);
|
|||
|
|
if((%IsSimdValue(P))){
|
|||
|
|
switch(typeof(P)){
|
|||
|
|
case'float32x4':return %_Call(m,P);
|
|||
|
|
case'int32x4':return %_Call(q,P);
|
|||
|
|
case'int16x8':return %_Call(p,P);
|
|||
|
|
case'int8x16':return %_Call(r,P);
|
|||
|
|
case'uint32x4':return %_Call(C,P);
|
|||
|
|
case'uint16x8':return %_Call(B,P);
|
|||
|
|
case'uint8x16':return %_Call(D,P);
|
|||
|
|
case'bool32x4':return %_Call(e,P);
|
|||
|
|
case'bool16x8':return %_Call(d,P);
|
|||
|
|
case'bool8x16':return %_Call(f,P);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if((%_IsJSReceiver(P))){
|
|||
|
|
if(IsErrorObject(P)||
|
|||
|
|
%GetDataProperty(P,"toString")===ErrorToString){
|
|||
|
|
return %_Call(NoSideEffectsErrorToString,P);
|
|||
|
|
}
|
|||
|
|
if(%GetDataProperty(P,"toString")===v){
|
|||
|
|
var T=%GetDataProperty(P,"constructor");
|
|||
|
|
if((%IsFunction(T))){
|
|||
|
|
var U=%FunctionGetName(T);
|
|||
|
|
if(U!="")return`#<${U}>`;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return %_Call(NoSideEffectsObjectToString,P);
|
|||
|
|
}
|
|||
|
|
function MakeGenericError(T,V,W,X,Y){
|
|||
|
|
var Z=new T(FormatMessage(V,W,X,Y));
|
|||
|
|
Z[t]=true;
|
|||
|
|
return Z;
|
|||
|
|
}
|
|||
|
|
%FunctionSetInstanceClassName(w,'Script');
|
|||
|
|
%AddNamedProperty(w.prototype,'constructor',w,
|
|||
|
|
2|4|1);
|
|||
|
|
%SetCode(w,function(aa){
|
|||
|
|
throw MakeError(6);
|
|||
|
|
});
|
|||
|
|
function FormatMessage(V,W,X,Y){
|
|||
|
|
var W=NoSideEffectsToString(W);
|
|||
|
|
var X=NoSideEffectsToString(X);
|
|||
|
|
var Y=NoSideEffectsToString(Y);
|
|||
|
|
try{
|
|||
|
|
return %FormatMessageString(V,W,X,Y);
|
|||
|
|
}catch(e){
|
|||
|
|
return"<error>";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function GetLineNumber(R){
|
|||
|
|
var ab=%MessageGetStartPosition(R);
|
|||
|
|
if(ab==-1)return 0;
|
|||
|
|
var ac=%MessageGetScript(R);
|
|||
|
|
var ad=ac.locationFromPosition(ab,true);
|
|||
|
|
if(ad==null)return 0;
|
|||
|
|
return ad.line+1;
|
|||
|
|
}
|
|||
|
|
function GetColumnNumber(R){
|
|||
|
|
var ac=%MessageGetScript(R);
|
|||
|
|
var ab=%MessageGetStartPosition(R);
|
|||
|
|
var ad=ac.locationFromPosition(ab,true);
|
|||
|
|
if(ad==null)return-1;
|
|||
|
|
return ad.column;
|
|||
|
|
}
|
|||
|
|
function GetSourceLine(R){
|
|||
|
|
var ac=%MessageGetScript(R);
|
|||
|
|
var ab=%MessageGetStartPosition(R);
|
|||
|
|
var ad=ac.locationFromPosition(ab,true);
|
|||
|
|
if(ad==null)return"";
|
|||
|
|
return ad.sourceText;
|
|||
|
|
}
|
|||
|
|
function ScriptLocationFromPosition(position,
|
|||
|
|
include_resource_offset){
|
|||
|
|
return %ScriptPositionInfo(this,position,!!include_resource_offset);
|
|||
|
|
}
|
|||
|
|
function ScriptNameOrSourceURL(){
|
|||
|
|
if(this.source_url)return this.source_url;
|
|||
|
|
return this.name;
|
|||
|
|
}
|
|||
|
|
b.SetUpLockedPrototype(w,[
|
|||
|
|
"source",
|
|||
|
|
"name",
|
|||
|
|
"source_url",
|
|||
|
|
"source_mapping_url",
|
|||
|
|
"line_offset",
|
|||
|
|
"column_offset"
|
|||
|
|
],[
|
|||
|
|
"locationFromPosition",ScriptLocationFromPosition,
|
|||
|
|
"nameOrSourceURL",ScriptNameOrSourceURL,
|
|||
|
|
]
|
|||
|
|
);
|
|||
|
|
function GetStackTraceLine(ae,af,ag,ah){
|
|||
|
|
return new CallSite(ae,af,ag,false).toString();
|
|||
|
|
}
|
|||
|
|
function CallSite(ai,af,ag,aj){
|
|||
|
|
if(!(%IsFunction(af))&&!%IsWasmObject(ai)){
|
|||
|
|
throw MakeTypeError(18,typeof ai,typeof af);
|
|||
|
|
}
|
|||
|
|
if((new.target===(void 0))){
|
|||
|
|
return new CallSite(ai,af,ag,aj);
|
|||
|
|
}
|
|||
|
|
if((%IsFunction(af))){
|
|||
|
|
(this[g]=ai);
|
|||
|
|
(this[h]=af);
|
|||
|
|
}else{
|
|||
|
|
(this[k]=ai);
|
|||
|
|
(this[l]=((af)>>>0));
|
|||
|
|
}
|
|||
|
|
(this[i]=((ag)|0));
|
|||
|
|
(this[j]=(!!(aj)));
|
|||
|
|
}
|
|||
|
|
function CheckCallSite(P,Q){
|
|||
|
|
if(!(%_IsJSReceiver(P))||!(%_Call(u,P,i))){
|
|||
|
|
throw MakeTypeError(19,Q);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function CallSiteGetThis(){
|
|||
|
|
CheckCallSite(this,"getThis");
|
|||
|
|
return(this[j])
|
|||
|
|
?(void 0):(this[g]);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetFunction(){
|
|||
|
|
CheckCallSite(this,"getFunction");
|
|||
|
|
return(this[j])
|
|||
|
|
?(void 0):(this[h]);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetPosition(){
|
|||
|
|
CheckCallSite(this,"getPosition");
|
|||
|
|
return(this[i]);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetTypeName(){
|
|||
|
|
CheckCallSite(this,"getTypeName");
|
|||
|
|
return GetTypeName((this[g]),false);
|
|||
|
|
}
|
|||
|
|
function CallSiteIsToplevel(){
|
|||
|
|
CheckCallSite(this,"isTopLevel");
|
|||
|
|
return %CallSiteIsToplevelRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteIsEval(){
|
|||
|
|
CheckCallSite(this,"isEval");
|
|||
|
|
return %CallSiteIsEvalRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetEvalOrigin(){
|
|||
|
|
CheckCallSite(this,"getEvalOrigin");
|
|||
|
|
var ac=%FunctionGetScript((this[h]));
|
|||
|
|
return FormatEvalOrigin(ac);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetScriptNameOrSourceURL(){
|
|||
|
|
CheckCallSite(this,"getScriptNameOrSourceURL");
|
|||
|
|
return %CallSiteGetScriptNameOrSourceUrlRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetFunctionName(){
|
|||
|
|
CheckCallSite(this,"getFunctionName");
|
|||
|
|
return %CallSiteGetFunctionNameRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetMethodName(){
|
|||
|
|
CheckCallSite(this,"getMethodName");
|
|||
|
|
return %CallSiteGetMethodNameRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetFileName(){
|
|||
|
|
CheckCallSite(this,"getFileName");
|
|||
|
|
return %CallSiteGetFileNameRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetLineNumber(){
|
|||
|
|
if((%_Call(u,this,k))){
|
|||
|
|
return(this[l]);
|
|||
|
|
}
|
|||
|
|
CheckCallSite(this,"getLineNumber");
|
|||
|
|
return %CallSiteGetLineNumberRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteGetColumnNumber(){
|
|||
|
|
CheckCallSite(this,"getColumnNumber");
|
|||
|
|
return %CallSiteGetColumnNumberRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteIsNative(){
|
|||
|
|
CheckCallSite(this,"isNative");
|
|||
|
|
return %CallSiteIsNativeRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteIsConstructor(){
|
|||
|
|
CheckCallSite(this,"isConstructor");
|
|||
|
|
return %CallSiteIsConstructorRT(this);
|
|||
|
|
}
|
|||
|
|
function CallSiteToString(){
|
|||
|
|
if((%_Call(u,this,k))){
|
|||
|
|
var ak=this.getFunctionName();
|
|||
|
|
var al=(this[l]);
|
|||
|
|
var ag=this.getPosition();
|
|||
|
|
if((ak===null))ak="<WASM UNNAMED>";
|
|||
|
|
return ak+" (<WASM>["+al+"]+"+ag+")";
|
|||
|
|
}
|
|||
|
|
var am;
|
|||
|
|
var an="";
|
|||
|
|
if(this.isNative()){
|
|||
|
|
an="native";
|
|||
|
|
}else{
|
|||
|
|
am=this.getScriptNameOrSourceURL();
|
|||
|
|
if(!am&&this.isEval()){
|
|||
|
|
an=this.getEvalOrigin();
|
|||
|
|
an+=", ";
|
|||
|
|
}
|
|||
|
|
if(am){
|
|||
|
|
an+=am;
|
|||
|
|
}else{
|
|||
|
|
an+="<anonymous>";
|
|||
|
|
}
|
|||
|
|
var ao=this.getLineNumber();
|
|||
|
|
if(ao!=null){
|
|||
|
|
an+=":"+ao;
|
|||
|
|
var ap=this.getColumnNumber();
|
|||
|
|
if(ap){
|
|||
|
|
an+=":"+ap;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
var aq="";
|
|||
|
|
var ar=this.getFunctionName();
|
|||
|
|
var as=true;
|
|||
|
|
var at=this.isConstructor();
|
|||
|
|
var au=!(this.isToplevel()||at);
|
|||
|
|
if(au){
|
|||
|
|
var av=GetTypeName((this[g]),true);
|
|||
|
|
var aw=this.getMethodName();
|
|||
|
|
if(ar){
|
|||
|
|
if(av&&%_Call(y,ar,av)!=0){
|
|||
|
|
aq+=av+".";
|
|||
|
|
}
|
|||
|
|
aq+=ar;
|
|||
|
|
if(aw&&
|
|||
|
|
(%_Call(y,ar,"."+aw)!=
|
|||
|
|
ar.length-aw.length-1)){
|
|||
|
|
aq+=" [as "+aw+"]";
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
aq+=av+"."+(aw||"<anonymous>");
|
|||
|
|
}
|
|||
|
|
}else if(at){
|
|||
|
|
aq+="new "+(ar||"<anonymous>");
|
|||
|
|
}else if(ar){
|
|||
|
|
aq+=ar;
|
|||
|
|
}else{
|
|||
|
|
aq+=an;
|
|||
|
|
as=false;
|
|||
|
|
}
|
|||
|
|
if(as){
|
|||
|
|
aq+=" ("+an+")";
|
|||
|
|
}
|
|||
|
|
return aq;
|
|||
|
|
}
|
|||
|
|
b.SetUpLockedPrototype(CallSite,["receiver","fun","pos"],[
|
|||
|
|
"getThis",CallSiteGetThis,
|
|||
|
|
"getTypeName",CallSiteGetTypeName,
|
|||
|
|
"isToplevel",CallSiteIsToplevel,
|
|||
|
|
"isEval",CallSiteIsEval,
|
|||
|
|
"getEvalOrigin",CallSiteGetEvalOrigin,
|
|||
|
|
"getScriptNameOrSourceURL",CallSiteGetScriptNameOrSourceURL,
|
|||
|
|
"getFunction",CallSiteGetFunction,
|
|||
|
|
"getFunctionName",CallSiteGetFunctionName,
|
|||
|
|
"getMethodName",CallSiteGetMethodName,
|
|||
|
|
"getFileName",CallSiteGetFileName,
|
|||
|
|
"getLineNumber",CallSiteGetLineNumber,
|
|||
|
|
"getColumnNumber",CallSiteGetColumnNumber,
|
|||
|
|
"isNative",CallSiteIsNative,
|
|||
|
|
"getPosition",CallSiteGetPosition,
|
|||
|
|
"isConstructor",CallSiteIsConstructor,
|
|||
|
|
"toString",CallSiteToString
|
|||
|
|
]);
|
|||
|
|
function FormatEvalOrigin(ac){
|
|||
|
|
var ax=ac.nameOrSourceURL();
|
|||
|
|
if(ax){
|
|||
|
|
return ax;
|
|||
|
|
}
|
|||
|
|
var ay="eval at ";
|
|||
|
|
if(ac.eval_from_function_name){
|
|||
|
|
ay+=ac.eval_from_function_name;
|
|||
|
|
}else{
|
|||
|
|
ay+="<anonymous>";
|
|||
|
|
}
|
|||
|
|
var az=ac.eval_from_script;
|
|||
|
|
if(az){
|
|||
|
|
if(az.compilation_type==1){
|
|||
|
|
ay+=" ("+FormatEvalOrigin(az)+")";
|
|||
|
|
}else{
|
|||
|
|
if(az.name){
|
|||
|
|
ay+=" ("+az.name;
|
|||
|
|
var ad=az.locationFromPosition(
|
|||
|
|
ac.eval_from_script_position,true);
|
|||
|
|
if(ad){
|
|||
|
|
ay+=":"+(ad.line+1);
|
|||
|
|
ay+=":"+(ad.column+1);
|
|||
|
|
}
|
|||
|
|
ay+=")";
|
|||
|
|
}else{
|
|||
|
|
ay+=" (unknown source)";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return ay;
|
|||
|
|
}
|
|||
|
|
function FormatErrorString(Z){
|
|||
|
|
try{
|
|||
|
|
return %_Call(ErrorToString,Z);
|
|||
|
|
}catch(e){
|
|||
|
|
try{
|
|||
|
|
return"<error: "+e+">";
|
|||
|
|
}catch(ee){
|
|||
|
|
return"<error>";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function GetStackFrames(aA){
|
|||
|
|
var aB=new s();
|
|||
|
|
%MoveArrayContents(aA,aB);
|
|||
|
|
var aC=new s();
|
|||
|
|
var aD=aB[0];
|
|||
|
|
for(var aE=1;aE<aB.length;aE+=4){
|
|||
|
|
var ae=aB[aE];
|
|||
|
|
var af=aB[aE+1];
|
|||
|
|
var aF=aB[aE+2];
|
|||
|
|
var aG=aB[aE+3];
|
|||
|
|
var ag=(typeof(af)==='number')&&aG<0?(-1-aG):
|
|||
|
|
%FunctionGetPositionForOffset(aF,aG);
|
|||
|
|
aD--;
|
|||
|
|
aC.push(new CallSite(ae,af,ag,(aD<0)));
|
|||
|
|
}
|
|||
|
|
return aC;
|
|||
|
|
}
|
|||
|
|
var aH=false;
|
|||
|
|
function FormatStackTrace(P,aA){
|
|||
|
|
var aC=GetStackFrames(aA);
|
|||
|
|
if((%IsFunction(F.prepareStackTrace))&&
|
|||
|
|
!aH){
|
|||
|
|
var aI=[];
|
|||
|
|
%MoveArrayContents(aC,aI);
|
|||
|
|
aH=true;
|
|||
|
|
var aJ=(void 0);
|
|||
|
|
try{
|
|||
|
|
aJ=F.prepareStackTrace(P,aI);
|
|||
|
|
}catch(e){
|
|||
|
|
throw e;
|
|||
|
|
}finally{
|
|||
|
|
aH=false;
|
|||
|
|
}
|
|||
|
|
return aJ;
|
|||
|
|
}
|
|||
|
|
var aK=new s();
|
|||
|
|
aK.push(FormatErrorString(P));
|
|||
|
|
for(var aE=0;aE<aC.length;aE++){
|
|||
|
|
var aL=aC[aE];
|
|||
|
|
var aq;
|
|||
|
|
try{
|
|||
|
|
aq=aL.toString();
|
|||
|
|
}catch(e){
|
|||
|
|
try{
|
|||
|
|
aq="<error: "+e+">";
|
|||
|
|
}catch(ee){
|
|||
|
|
aq="<error>";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
aK.push(" at "+aq);
|
|||
|
|
}
|
|||
|
|
return %_Call(c,aK,"\n");
|
|||
|
|
}
|
|||
|
|
function GetTypeName(ai,aM){
|
|||
|
|
if((ai==null))return null;
|
|||
|
|
if((%_IsJSProxy(ai)))return"Proxy";
|
|||
|
|
var T=%GetDataProperty((%_ToObject(ai)),"constructor");
|
|||
|
|
if(!(%IsFunction(T))){
|
|||
|
|
return aM?null:%_Call(NoSideEffectsToString,ai);
|
|||
|
|
}
|
|||
|
|
return %FunctionGetName(T);
|
|||
|
|
}
|
|||
|
|
var aN=function(){
|
|||
|
|
var aO=(void 0);
|
|||
|
|
var aP=this;
|
|||
|
|
while(aP){
|
|||
|
|
var aO=
|
|||
|
|
(aP[n]);
|
|||
|
|
if((aO===(void 0))){
|
|||
|
|
var aJ=(aP[x]);
|
|||
|
|
if((aJ===(void 0))){
|
|||
|
|
aP=%object_get_prototype_of(aP);
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
aO=FormatStackTrace(aP,aJ);
|
|||
|
|
(aP[x]=(void 0));
|
|||
|
|
(aP[n]=aO);
|
|||
|
|
}
|
|||
|
|
return aO;
|
|||
|
|
}
|
|||
|
|
return(void 0);
|
|||
|
|
};
|
|||
|
|
var aQ=function(aR){
|
|||
|
|
if(IsErrorObject(this)){
|
|||
|
|
(this[x]=(void 0));
|
|||
|
|
(this[n]=aR);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
var aS=function(){};
|
|||
|
|
function SetUpError(aT){
|
|||
|
|
%FunctionSetInstanceClassName(aT,'Error');
|
|||
|
|
var Q=aT.name;
|
|||
|
|
var aU=new o();
|
|||
|
|
if(Q!=='Error'){
|
|||
|
|
%InternalSetPrototype(aT,F);
|
|||
|
|
%InternalSetPrototype(aU,F.prototype);
|
|||
|
|
}
|
|||
|
|
%FunctionSetPrototype(aT,aU);
|
|||
|
|
%AddNamedProperty(aT.prototype,'name',Q,2);
|
|||
|
|
%AddNamedProperty(aT.prototype,'message','',2);
|
|||
|
|
%AddNamedProperty(
|
|||
|
|
aT.prototype,'constructor',aT,2);
|
|||
|
|
%SetCode(aT,function(aV){
|
|||
|
|
if((new.target===(void 0)))return new aT(aV);
|
|||
|
|
try{aS(this,aT);}catch(e){}
|
|||
|
|
if(!(aV===(void 0))){
|
|||
|
|
%AddNamedProperty(this,'message',(%_ToString(aV)),2);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
%SetNativeFlag(aT);
|
|||
|
|
return aT;
|
|||
|
|
};
|
|||
|
|
F=SetUpError(a.Error);
|
|||
|
|
L=SetUpError(a.EvalError);
|
|||
|
|
H=SetUpError(a.RangeError);
|
|||
|
|
K=SetUpError(a.ReferenceError);
|
|||
|
|
J=SetUpError(a.SyntaxError);
|
|||
|
|
G=SetUpError(a.TypeError);
|
|||
|
|
I=SetUpError(a.URIError);
|
|||
|
|
b.InstallFunctions(F.prototype,2,
|
|||
|
|
['toString',ErrorToString]);
|
|||
|
|
function ErrorToString(){
|
|||
|
|
if(!(%_IsJSReceiver(this))){
|
|||
|
|
throw MakeTypeError(16,"Error.prototype.toString");
|
|||
|
|
}
|
|||
|
|
var Q=this.name;
|
|||
|
|
Q=(Q===(void 0))?"Error":(%_ToString(Q));
|
|||
|
|
var R=this.message;
|
|||
|
|
R=(R===(void 0))?"":(%_ToString(R));
|
|||
|
|
if(Q=="")return R;
|
|||
|
|
if(R=="")return Q;
|
|||
|
|
return`${Q}: ${R}`
|
|||
|
|
}
|
|||
|
|
function MakeError(V,W,X,Y){
|
|||
|
|
return MakeGenericError(F,V,W,X,Y);
|
|||
|
|
}
|
|||
|
|
function MakeRangeError(V,W,X,Y){
|
|||
|
|
return MakeGenericError(H,V,W,X,Y);
|
|||
|
|
}
|
|||
|
|
function MakeSyntaxError(V,W,X,Y){
|
|||
|
|
return MakeGenericError(J,V,W,X,Y);
|
|||
|
|
}
|
|||
|
|
function MakeTypeError(V,W,X,Y){
|
|||
|
|
return MakeGenericError(G,V,W,X,Y);
|
|||
|
|
}
|
|||
|
|
function MakeURIError(){
|
|||
|
|
return MakeGenericError(I,279);
|
|||
|
|
}
|
|||
|
|
var aW=MakeRangeError(177);
|
|||
|
|
b.InstallGetterSetter(aW,'stack',
|
|||
|
|
aN,aQ)
|
|||
|
|
aS=function captureStackTrace(P,aX){
|
|||
|
|
%object_define_property(P,'stack',{get:aN,
|
|||
|
|
set:aQ,
|
|||
|
|
configurable:true});
|
|||
|
|
%CollectStackTrace(P,aX?aX:aS);
|
|||
|
|
};
|
|||
|
|
F.captureStackTrace=aS;
|
|||
|
|
%InstallToContext([
|
|||
|
|
"get_stack_trace_line_fun",GetStackTraceLine,
|
|||
|
|
"make_error_function",MakeGenericError,
|
|||
|
|
"make_range_error",MakeRangeError,
|
|||
|
|
"make_type_error",MakeTypeError,
|
|||
|
|
"message_get_column_number",GetColumnNumber,
|
|||
|
|
"message_get_line_number",GetLineNumber,
|
|||
|
|
"message_get_source_line",GetSourceLine,
|
|||
|
|
"no_side_effects_to_string_fun",NoSideEffectsToString,
|
|||
|
|
"stack_overflow_boilerplate",aW,
|
|||
|
|
]);
|
|||
|
|
b.Export(function(aY){
|
|||
|
|
aY.ErrorToString=ErrorToString;
|
|||
|
|
aY.MakeError=MakeError;
|
|||
|
|
aY.MakeRangeError=MakeRangeError;
|
|||
|
|
aY.MakeSyntaxError=MakeSyntaxError;
|
|||
|
|
aY.MakeTypeError=MakeTypeError;
|
|||
|
|
aY.MakeURIError=MakeURIError;
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
8array-iterator1$
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=
|
|||
|
|
b.ImportNow("array_iteration_kind_symbol");
|
|||
|
|
var d=
|
|||
|
|
b.ImportNow("array_iterator_next_symbol");
|
|||
|
|
var e=
|
|||
|
|
b.ImportNow("array_iterator_object_symbol");
|
|||
|
|
var f=a.Array;
|
|||
|
|
var g=b.ImportNow("IteratorPrototype");
|
|||
|
|
var h=b.ImportNow("iterator_symbol");
|
|||
|
|
var i;
|
|||
|
|
var j=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
var k=%object_get_prototype_of(a.Uint8Array);
|
|||
|
|
b.Import(function(l){
|
|||
|
|
i=l.MakeTypeError;
|
|||
|
|
})
|
|||
|
|
function ArrayIterator(){}
|
|||
|
|
function CreateArrayIterator(m,n){
|
|||
|
|
var o=(%_ToObject(m));
|
|||
|
|
var p=new ArrayIterator;
|
|||
|
|
(p[e]=o);
|
|||
|
|
(p[d]=0);
|
|||
|
|
(p[c]=n);
|
|||
|
|
return p;
|
|||
|
|
}
|
|||
|
|
function ArrayIteratorIterator(){
|
|||
|
|
return this;
|
|||
|
|
}
|
|||
|
|
function ArrayIteratorNext(){
|
|||
|
|
var p=this;
|
|||
|
|
var q=(void 0);
|
|||
|
|
var r=true;
|
|||
|
|
if(!(%_IsJSReceiver(p))||
|
|||
|
|
!(!(p[d]===(void 0)))){
|
|||
|
|
throw i(43,
|
|||
|
|
'Array Iterator.prototype.next',this);
|
|||
|
|
}
|
|||
|
|
var m=(p[e]);
|
|||
|
|
if(!(m===(void 0))){
|
|||
|
|
var s=(p[d]);
|
|||
|
|
var t=(p[c]);
|
|||
|
|
var u=((m.length)>>>0);
|
|||
|
|
if(s>=u){
|
|||
|
|
(p[e]=(void 0));
|
|||
|
|
}else{
|
|||
|
|
(p[d]=s+1);
|
|||
|
|
if(t==2){
|
|||
|
|
q=m[s];
|
|||
|
|
}else if(t==3){
|
|||
|
|
q=[s,m[s]];
|
|||
|
|
}else{
|
|||
|
|
q=s;
|
|||
|
|
}
|
|||
|
|
r=false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return %_CreateIterResultObject(q,r);
|
|||
|
|
}
|
|||
|
|
function ArrayEntries(){
|
|||
|
|
return CreateArrayIterator(this,3);
|
|||
|
|
}
|
|||
|
|
function ArrayValues(){
|
|||
|
|
return CreateArrayIterator(this,2);
|
|||
|
|
}
|
|||
|
|
function ArrayKeys(){
|
|||
|
|
return CreateArrayIterator(this,1);
|
|||
|
|
}
|
|||
|
|
function TypedArrayEntries(){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw i(71);
|
|||
|
|
return %_Call(ArrayEntries,this);
|
|||
|
|
}
|
|||
|
|
function TypedArrayValues(){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw i(71);
|
|||
|
|
return %_Call(ArrayValues,this);
|
|||
|
|
}
|
|||
|
|
function TypedArrayKeys(){
|
|||
|
|
if(!(%_IsTypedArray(this)))throw i(71);
|
|||
|
|
return %_Call(ArrayKeys,this);
|
|||
|
|
}
|
|||
|
|
%FunctionSetPrototype(ArrayIterator,{__proto__:g});
|
|||
|
|
%FunctionSetInstanceClassName(ArrayIterator,'Array Iterator');
|
|||
|
|
b.InstallFunctions(ArrayIterator.prototype,2,[
|
|||
|
|
'next',ArrayIteratorNext
|
|||
|
|
]);
|
|||
|
|
b.SetFunctionName(ArrayIteratorIterator,h);
|
|||
|
|
%AddNamedProperty(ArrayIterator.prototype,j,
|
|||
|
|
"Array Iterator",1|2);
|
|||
|
|
b.InstallFunctions(f.prototype,2,[
|
|||
|
|
'entries',ArrayEntries,
|
|||
|
|
'keys',ArrayKeys
|
|||
|
|
]);
|
|||
|
|
b.SetFunctionName(ArrayValues,'values');
|
|||
|
|
%AddNamedProperty(f.prototype,h,ArrayValues,
|
|||
|
|
2);
|
|||
|
|
b.InstallFunctions(k.prototype,2,[
|
|||
|
|
'entries',TypedArrayEntries,
|
|||
|
|
'keys',TypedArrayKeys,
|
|||
|
|
'values',TypedArrayValues
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(k.prototype,
|
|||
|
|
h,TypedArrayValues,2);
|
|||
|
|
b.Export(function(v){
|
|||
|
|
v.ArrayValues=ArrayValues;
|
|||
|
|
});
|
|||
|
|
%InstallToContext(["array_values_iterator",ArrayValues]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
<string-iterator<6F>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.String;
|
|||
|
|
var d=b.ImportNow("IteratorPrototype");
|
|||
|
|
var e=b.ImportNow("iterator_symbol");
|
|||
|
|
var f;
|
|||
|
|
var g=
|
|||
|
|
b.ImportNow("string_iterator_iterated_string_symbol");
|
|||
|
|
var h=
|
|||
|
|
b.ImportNow("string_iterator_next_index_symbol");
|
|||
|
|
var i=b.ImportNow("to_string_tag_symbol");
|
|||
|
|
b.Import(function(j){
|
|||
|
|
f=j.MakeTypeError;
|
|||
|
|
});
|
|||
|
|
function StringIterator(){}
|
|||
|
|
function CreateStringIterator(k){
|
|||
|
|
if((%IS_VAR(k)===null)||(k===(void 0)))throw f(17,'String.prototype[Symbol.iterator]');
|
|||
|
|
var l=(%_ToString(k));
|
|||
|
|
var m=new StringIterator;
|
|||
|
|
(m[g]=l);
|
|||
|
|
(m[h]=0);
|
|||
|
|
return m;
|
|||
|
|
}
|
|||
|
|
function StringIteratorNext(){
|
|||
|
|
var m=this;
|
|||
|
|
var n=(void 0);
|
|||
|
|
var o=true;
|
|||
|
|
if(!(%_IsJSReceiver(m))||
|
|||
|
|
!(!(m[h]===(void 0)))){
|
|||
|
|
throw f(43,
|
|||
|
|
'String Iterator.prototype.next');
|
|||
|
|
}
|
|||
|
|
var l=(m[g]);
|
|||
|
|
if(!(l===(void 0))){
|
|||
|
|
var p=(m[h]);
|
|||
|
|
var q=((l.length)>>>0);
|
|||
|
|
if(p>=q){
|
|||
|
|
(m[g]=(void 0));
|
|||
|
|
}else{
|
|||
|
|
var r=%_StringCharCodeAt(l,p);
|
|||
|
|
n=%_StringCharFromCode(r);
|
|||
|
|
o=false;
|
|||
|
|
p++;
|
|||
|
|
if(r>=0xD800&&r<=0xDBFF&&p<q){
|
|||
|
|
var s=%_StringCharCodeAt(l,p);
|
|||
|
|
if(s>=0xDC00&&s<=0xDFFF){
|
|||
|
|
n+=%_StringCharFromCode(s);
|
|||
|
|
p++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
(m[h]=p);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return %_CreateIterResultObject(n,o);
|
|||
|
|
}
|
|||
|
|
function StringPrototypeIterator(){
|
|||
|
|
return CreateStringIterator(this);
|
|||
|
|
}
|
|||
|
|
%FunctionSetPrototype(StringIterator,{__proto__:d});
|
|||
|
|
%FunctionSetInstanceClassName(StringIterator,'String Iterator');
|
|||
|
|
b.InstallFunctions(StringIterator.prototype,2,[
|
|||
|
|
'next',StringIteratorNext
|
|||
|
|
]);
|
|||
|
|
%AddNamedProperty(StringIterator.prototype,i,
|
|||
|
|
"String Iterator",1|2);
|
|||
|
|
b.SetFunctionName(StringPrototypeIterator,e);
|
|||
|
|
%AddNamedProperty(c.prototype,e,
|
|||
|
|
StringPrototypeIterator,2);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
$templates
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Map;
|
|||
|
|
var d=b.InternalArray;
|
|||
|
|
var e=new c;
|
|||
|
|
var f=c.prototype.get;
|
|||
|
|
var g=c.prototype.set;
|
|||
|
|
function SameCallSiteElements(h,i){
|
|||
|
|
var j=h.length;
|
|||
|
|
var i=i.raw;
|
|||
|
|
if(j!==i.length)return false;
|
|||
|
|
for(var k=0;k<j;++k){
|
|||
|
|
if(h[k]!==i[k])return false;
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
function GetCachedCallSite(l,m){
|
|||
|
|
var n=%_Call(f,e,m);
|
|||
|
|
if((n===(void 0)))return;
|
|||
|
|
var j=n.length;
|
|||
|
|
for(var k=0;k<j;++k){
|
|||
|
|
if(SameCallSiteElements(l,n[k]))return n[k];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function SetCachedCallSite(l,m){
|
|||
|
|
var n=%_Call(f,e,m);
|
|||
|
|
var o;
|
|||
|
|
if((n===(void 0))){
|
|||
|
|
o=new d(1);
|
|||
|
|
o[0]=l;
|
|||
|
|
%_Call(g,e,m,o);
|
|||
|
|
}else{
|
|||
|
|
n.push(l);
|
|||
|
|
}
|
|||
|
|
return l;
|
|||
|
|
}
|
|||
|
|
function GetTemplateCallSite(l,h,m){
|
|||
|
|
var p=GetCachedCallSite(h,m);
|
|||
|
|
if(!(p===(void 0)))return p;
|
|||
|
|
%AddNamedProperty(l,"raw",%object_freeze(h),
|
|||
|
|
1|2|4);
|
|||
|
|
return SetCachedCallSite(%object_freeze(l),m);
|
|||
|
|
}
|
|||
|
|
%InstallToContext(["get_template_call_site",GetTemplateCallSite]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
spread<61>
|
|||
|
|
(function(a,b){
|
|||
|
|
'use strict';
|
|||
|
|
var c=b.InternalArray;
|
|||
|
|
var d;
|
|||
|
|
b.Import(function(e){
|
|||
|
|
d=e.MakeTypeError;
|
|||
|
|
});
|
|||
|
|
function SpreadArguments(){
|
|||
|
|
var f=arguments.length;
|
|||
|
|
var g=new c();
|
|||
|
|
for(var h=0;h<f;++h){
|
|||
|
|
var i=arguments[h];
|
|||
|
|
var j=i.length;
|
|||
|
|
for(var k=0;k<j;++k){
|
|||
|
|
g.push(i[k]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return g;
|
|||
|
|
}
|
|||
|
|
function SpreadIterable(l){
|
|||
|
|
if((l==null)){
|
|||
|
|
throw d(69,l);
|
|||
|
|
}
|
|||
|
|
var g=new c();
|
|||
|
|
for(var m of l){
|
|||
|
|
g.push(m);
|
|||
|
|
}
|
|||
|
|
return g;
|
|||
|
|
}
|
|||
|
|
%InstallToContext([
|
|||
|
|
"spread_arguments",SpreadArguments,
|
|||
|
|
"spread_iterable",SpreadIterable,
|
|||
|
|
]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
proxy<78>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c=a.Proxy;
|
|||
|
|
function ProxyCreateRevocable(d,e){
|
|||
|
|
var f=new c(d,e);
|
|||
|
|
return{proxy:f,revoke:()=>%JSProxyRevoke(f)};
|
|||
|
|
}
|
|||
|
|
b.InstallFunctions(c,2,[
|
|||
|
|
"revocable",ProxyCreateRevocable
|
|||
|
|
]);
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
i18n<38><6E>
|
|||
|
|
(function(a,b){
|
|||
|
|
"use strict";
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var c;
|
|||
|
|
var d;
|
|||
|
|
var e;
|
|||
|
|
var f;
|
|||
|
|
var g=a.Date;
|
|||
|
|
var h=a.Number;
|
|||
|
|
var i=a.RegExp;
|
|||
|
|
var j=a.String;
|
|||
|
|
var k=b.InstallFunctions;
|
|||
|
|
var l=b.InstallGetter;
|
|||
|
|
var m=b.InternalArray;
|
|||
|
|
var n;
|
|||
|
|
var o
|
|||
|
|
var p;
|
|||
|
|
var q;
|
|||
|
|
var r;
|
|||
|
|
var s;
|
|||
|
|
var t=b.ImportNow("ObjectHasOwnProperty");
|
|||
|
|
var u=b.OverrideFunction;
|
|||
|
|
var v=b.ImportNow("intl_pattern_symbol");
|
|||
|
|
var w=b.ImportNow("intl_resolved_symbol");
|
|||
|
|
var x=b.SetFunctionName;
|
|||
|
|
var y;
|
|||
|
|
var z;
|
|||
|
|
var A;
|
|||
|
|
var B;
|
|||
|
|
var C;
|
|||
|
|
b.Import(function(D){
|
|||
|
|
c=D.ArrayIndexOf;
|
|||
|
|
d=D.ArrayJoin;
|
|||
|
|
e=D.ArrayPush;
|
|||
|
|
p=D.IsNaN;
|
|||
|
|
q=D.MakeError;
|
|||
|
|
r=D.MakeRangeError;
|
|||
|
|
s=D.MakeTypeError;
|
|||
|
|
n=D.InternalRegExpMatch;
|
|||
|
|
o=D.InternalRegExpReplace;
|
|||
|
|
y=D.StringIndexOf;
|
|||
|
|
z=D.StringLastIndexOf;
|
|||
|
|
A=D.StringSplit;
|
|||
|
|
B=D.StringSubstr;
|
|||
|
|
C=D.StringSubstring;
|
|||
|
|
});
|
|||
|
|
b.ImportFromExperimental(function(D){
|
|||
|
|
f=D.FLAG_intl_extra;
|
|||
|
|
});
|
|||
|
|
function InstallFunction(E,F,G){
|
|||
|
|
k(E,2,[F,G]);
|
|||
|
|
}
|
|||
|
|
function InstallConstructor(E,F,G){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
x(G,F);
|
|||
|
|
%AddNamedProperty(E,F,G,2);
|
|||
|
|
%SetNativeFlag(G);
|
|||
|
|
%ToFastProperties(E);
|
|||
|
|
}
|
|||
|
|
function AddBoundMethod(H,I,J,K,L){
|
|||
|
|
%CheckIsBootstrapping();
|
|||
|
|
var M=%CreatePrivateSymbol(I);
|
|||
|
|
var N=function(){
|
|||
|
|
if(!%IsInitializedIntlObjectOfType(this,L)){
|
|||
|
|
throw s(52,I);
|
|||
|
|
}
|
|||
|
|
if((this[M]===(void 0))){
|
|||
|
|
var O;
|
|||
|
|
if((K===(void 0))||K===2){
|
|||
|
|
O=(x,y)=>J(this,x,y);
|
|||
|
|
}else if(K===1){
|
|||
|
|
O=x=>J(this,x);
|
|||
|
|
}else{
|
|||
|
|
O=(...args)=>{
|
|||
|
|
if(args.length>0){
|
|||
|
|
return J(this,args[0]);
|
|||
|
|
}else{
|
|||
|
|
return J(this);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
%FunctionSetName(O,'__bound'+I+'__');
|
|||
|
|
%FunctionRemovePrototype(O);
|
|||
|
|
%SetNativeFlag(O);
|
|||
|
|
this[M]=O;
|
|||
|
|
}
|
|||
|
|
return this[M];
|
|||
|
|
};
|
|||
|
|
l(H.prototype,I,N,2);
|
|||
|
|
}
|
|||
|
|
var P={};
|
|||
|
|
%AddNamedProperty(a,"Intl",P,2);
|
|||
|
|
var Q={
|
|||
|
|
'collator':(void 0),
|
|||
|
|
'numberformat':(void 0),
|
|||
|
|
'dateformat':(void 0),
|
|||
|
|
'breakiterator':(void 0)
|
|||
|
|
};
|
|||
|
|
var R=(void 0);
|
|||
|
|
function GetDefaultICULocaleJS(){
|
|||
|
|
if((R===(void 0))){
|
|||
|
|
R=%GetDefaultICULocale();
|
|||
|
|
}
|
|||
|
|
return R;
|
|||
|
|
}
|
|||
|
|
var S=(void 0);
|
|||
|
|
function GetUnicodeExtensionRE(){
|
|||
|
|
if(((void 0)===(void 0))){
|
|||
|
|
S=new i('-u(-[a-z0-9]{2,8})+','g');
|
|||
|
|
}
|
|||
|
|
return S;
|
|||
|
|
}
|
|||
|
|
var T=(void 0);
|
|||
|
|
function GetAnyExtensionRE(){
|
|||
|
|
if((T===(void 0))){
|
|||
|
|
T=new i('-[a-z0-9]{1}-.*','g');
|
|||
|
|
}
|
|||
|
|
return T;
|
|||
|
|
}
|
|||
|
|
var U=(void 0);
|
|||
|
|
function GetQuotedStringRE(){
|
|||
|
|
if((U===(void 0))){
|
|||
|
|
U=new i("'[^']+'",'g');
|
|||
|
|
}
|
|||
|
|
return U;
|
|||
|
|
}
|
|||
|
|
var V=(void 0);
|
|||
|
|
function GetServiceRE(){
|
|||
|
|
if((V===(void 0))){
|
|||
|
|
V=
|
|||
|
|
new i('^(collator|numberformat|dateformat|breakiterator)$');
|
|||
|
|
}
|
|||
|
|
return V;
|
|||
|
|
}
|
|||
|
|
var W=(void 0);
|
|||
|
|
function GetLanguageTagRE(){
|
|||
|
|
if((W===(void 0))){
|
|||
|
|
BuildLanguageTagREs();
|
|||
|
|
}
|
|||
|
|
return W;
|
|||
|
|
}
|
|||
|
|
var X=(void 0);
|
|||
|
|
function GetLanguageVariantRE(){
|
|||
|
|
if((X===(void 0))){
|
|||
|
|
BuildLanguageTagREs();
|
|||
|
|
}
|
|||
|
|
return X;
|
|||
|
|
}
|
|||
|
|
var Y=(void 0);
|
|||
|
|
function GetLanguageSingletonRE(){
|
|||
|
|
if((Y===(void 0))){
|
|||
|
|
BuildLanguageTagREs();
|
|||
|
|
}
|
|||
|
|
return Y;
|
|||
|
|
}
|
|||
|
|
var Z=(void 0);
|
|||
|
|
function GetTimezoneNameCheckRE(){
|
|||
|
|
if((Z===(void 0))){
|
|||
|
|
Z=new i(
|
|||
|
|
'^([A-Za-z]+)/([A-Za-z_-]+)((?:\/[A-Za-z_-]+)+)*$');
|
|||
|
|
}
|
|||
|
|
return Z;
|
|||
|
|
}
|
|||
|
|
var aa=(void 0);
|
|||
|
|
function GetTimezoneNameLocationPartRE(){
|
|||
|
|
if((aa===(void 0))){
|
|||
|
|
aa=
|
|||
|
|
new i('^([A-Za-z]+)((?:[_-][A-Za-z]+)+)*$');
|
|||
|
|
}
|
|||
|
|
return aa;
|
|||
|
|
}
|
|||
|
|
function supportedLocalesOf(ab,ac,ad){
|
|||
|
|
if((n(GetServiceRE(),ab)===null)){
|
|||
|
|
throw q(7,ab);
|
|||
|
|
}
|
|||
|
|
if((ad===(void 0))){
|
|||
|
|
ad={};
|
|||
|
|
}else{
|
|||
|
|
ad=(%_ToObject(ad));
|
|||
|
|
}
|
|||
|
|
var ae=ad.localeMatcher;
|
|||
|
|
if(!(ae===(void 0))){
|
|||
|
|
ae=(%_ToString(ae));
|
|||
|
|
if(ae!=='lookup'&&ae!=='best fit'){
|
|||
|
|
throw r(173,ae);
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
ae='best fit';
|
|||
|
|
}
|
|||
|
|
var af=initializeLocaleList(ac);
|
|||
|
|
if((Q[ab]===(void 0))){
|
|||
|
|
Q[ab]=getAvailableLocalesOf(ab);
|
|||
|
|
}
|
|||
|
|
if(ae==='best fit'){
|
|||
|
|
return initializeLocaleList(bestFitSupportedLocalesOf(
|
|||
|
|
af,Q[ab]));
|
|||
|
|
}
|
|||
|
|
return initializeLocaleList(lookupSupportedLocalesOf(
|
|||
|
|
af,Q[ab]));
|
|||
|
|
}
|
|||
|
|
function lookupSupportedLocalesOf(af,ag){
|
|||
|
|
var ah=new m();
|
|||
|
|
for(var ai=0;ai<af.length;++ai){
|
|||
|
|
var aj=o(
|
|||
|
|
GetUnicodeExtensionRE(),af[ai],'');
|
|||
|
|
do{
|
|||
|
|
if(!(ag[aj]===(void 0))){
|
|||
|
|
%_Call(e,ah,af[ai]);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
var ak=%_Call(z,aj,'-');
|
|||
|
|
if(ak===-1){
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
aj=%_Call(C,aj,0,ak);
|
|||
|
|
}while(true);
|
|||
|
|
}
|
|||
|
|
return ah;
|
|||
|
|
}
|
|||
|
|
function bestFitSupportedLocalesOf(af,ag){
|
|||
|
|
return lookupSupportedLocalesOf(af,ag);
|
|||
|
|
}
|
|||
|
|
function getGetOption(ad,al){
|
|||
|
|
if((ad===(void 0)))throw q(4,al);
|
|||
|
|
var am=function getOption(an,L,ao,ap){
|
|||
|
|
if(!(ad[an]===(void 0))){
|
|||
|
|
var aq=ad[an];
|
|||
|
|
switch(L){
|
|||
|
|
case'boolean':
|
|||
|
|
aq=(!!(aq));
|
|||
|
|
break;
|
|||
|
|
case'string':
|
|||
|
|
aq=(%_ToString(aq));
|
|||
|
|
break;
|
|||
|
|
case'number':
|
|||
|
|
aq=(%_ToNumber(aq));
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
throw q(8);
|
|||
|
|
}
|
|||
|
|
if(!(ao===(void 0))&&%_Call(c,ao,aq)===-1){
|
|||
|
|
throw r(183,aq,al,an);
|
|||
|
|
}
|
|||
|
|
return aq;
|
|||
|
|
}
|
|||
|
|
return ap;
|
|||
|
|
}
|
|||
|
|
return am;
|
|||
|
|
}
|
|||
|
|
function resolveLocale(ab,af,ad){
|
|||
|
|
af=initializeLocaleList(af);
|
|||
|
|
var am=getGetOption(ad,ab);
|
|||
|
|
var ae=am('localeMatcher','string',
|
|||
|
|
['lookup','best fit'],'best fit');
|
|||
|
|
var ar;
|
|||
|
|
if(ae==='lookup'){
|
|||
|
|
ar=lookupMatcher(ab,af);
|
|||
|
|
}else{
|
|||
|
|
ar=bestFitMatcher(ab,af);
|
|||
|
|
}
|
|||
|
|
return ar;
|
|||
|
|
}
|
|||
|
|
function lookupMatcher(ab,af){
|
|||
|
|
if((n(GetServiceRE(),ab)===null)){
|
|||
|
|
throw q(7,ab);
|
|||
|
|
}
|
|||
|
|
if((Q[ab]===(void 0))){
|
|||
|
|
Q[ab]=getAvailableLocalesOf(ab);
|
|||
|
|
}
|
|||
|
|
for(var ai=0;ai<af.length;++ai){
|
|||
|
|
var aj=o(
|
|||
|
|
GetAnyExtensionRE(),af[ai],'');
|
|||
|
|
do{
|
|||
|
|
if(!(Q[ab][aj]===(void 0))){
|
|||
|
|
var as=n(
|
|||
|
|
GetUnicodeExtensionRE(),af[ai]);
|
|||
|
|
var at=(as===null)?'':as[0];
|
|||
|
|
return{'locale':aj,'extension':at,'position':ai};
|
|||
|
|
}
|
|||
|
|
var ak=%_Call(z,aj,'-');
|
|||
|
|
if(ak===-1){
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
aj=%_Call(C,aj,0,ak);
|
|||
|
|
}while(true);
|
|||
|
|
}
|
|||
|
|
return{'locale':GetDefaultICULocaleJS(),'extension':'','position':-1};
|
|||
|
|
}
|
|||
|
|
function bestFitMatcher(ab,af){
|
|||
|
|
return lookupMatcher(ab,af);
|
|||
|
|
}
|
|||
|
|
function parseExtension(at){
|
|||
|
|
var au=%_Call(A,at,'-');
|
|||
|
|
if(au.length<=2||
|
|||
|
|
(au[0]!==''&&au[1]!=='u')){
|
|||
|
|
return{};
|
|||
|
|
}
|
|||
|
|
var av={};
|
|||
|
|
var aw=(void 0);
|
|||
|
|
for(var ai=2;ai<au.length;++ai){
|
|||
|
|
var K=au[ai].length;
|
|||
|
|
var ax=au[ai];
|
|||
|
|
if(K===2){
|
|||
|
|
av[ax]=(void 0);
|
|||
|
|
aw=ax;
|
|||
|
|
}else if(K>=3&&K<=8&&!(aw===(void 0))){
|
|||
|
|
av[aw]=ax;
|
|||
|
|
aw=(void 0);
|
|||
|
|
}else{
|
|||
|
|
return{};
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return av;
|
|||
|
|
}
|
|||
|
|
function setOptions(ay,av,az,am,aA){
|
|||
|
|
var at='';
|
|||
|
|
var aB=function updateExtension(aC,aq){
|
|||
|
|
return'-'+aC+'-'+(%_ToString(aq));
|
|||
|
|
}
|
|||
|
|
var aD=function updateProperty(an,L,aq){
|
|||
|
|
if(L==='boolean'&&(typeof aq==='string')){
|
|||
|
|
aq=(aq==='true')?true:false;
|
|||
|
|
}
|
|||
|
|
if(!(an===(void 0))){
|
|||
|
|
defineWEProperty(aA,an,aq);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for(var aC in az){
|
|||
|
|
if((%_Call(t,az,aC))){
|
|||
|
|
var aq=(void 0);
|
|||
|
|
var aE=az[aC];
|
|||
|
|
if(!(aE.property===(void 0))){
|
|||
|
|
aq=am(aE.property,aE.type,aE.values);
|
|||
|
|
}
|
|||
|
|
if(!(aq===(void 0))){
|
|||
|
|
aD(aE.property,aE.type,aq);
|
|||
|
|
at+=aB(aC,aq);
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if((%_Call(t,av,aC))){
|
|||
|
|
aq=av[aC];
|
|||
|
|
if(!(aq===(void 0))){
|
|||
|
|
aD(aE.property,aE.type,aq);
|
|||
|
|
at+=aB(aC,aq);
|
|||
|
|
}else if(aE.type==='boolean'){
|
|||
|
|
aD(aE.property,aE.type,true);
|
|||
|
|
at+=aB(aC,true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return at===''?'':'-u'+at;
|
|||
|
|
}
|
|||
|
|
function freezeArray(aF){
|
|||
|
|
var aG=[];
|
|||
|
|
var aH=aF.length;
|
|||
|
|
for(var ai=0;ai<aH;ai++){
|
|||
|
|
if(ai in aF){
|
|||
|
|
%object_define_property(aG,ai,{value:aF[ai],
|
|||
|
|
configurable:false,
|
|||
|
|
writable:false,
|
|||
|
|
enumerable:true});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
%object_define_property(aG,'length',{value:aH,writable:false});
|
|||
|
|
return aG;
|
|||
|
|
}
|
|||
|
|
function getOptimalLanguageTag(aI,ar){
|
|||
|
|
if(aI===ar){
|
|||
|
|
return aI;
|
|||
|
|
}
|
|||
|
|
var ac=%GetLanguageTagVariants([aI,ar]);
|
|||
|
|
if(ac[0].maximized!==ac[1].maximized){
|
|||
|
|
return ar;
|
|||
|
|
}
|
|||
|
|
var aJ=new i('^'+ac[1].base,'g');
|
|||
|
|
return o(aJ,ar,ac[0].base);
|
|||
|
|
}
|
|||
|
|
function getAvailableLocalesOf(ab){
|
|||
|
|
var aK=%AvailableLocalesOf(ab);
|
|||
|
|
for(var ai in aK){
|
|||
|
|
if((%_Call(t,aK,ai))){
|
|||
|
|
var aL=n(
|
|||
|
|
/^([a-z]{2,3})-([A-Z][a-z]{3})-([A-Z]{2})$/,ai);
|
|||
|
|
if(!(aL===null)){
|
|||
|
|
aK[aL[1]+'-'+aL[3]]=null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return aK;
|
|||
|
|
}
|
|||
|
|
function defineWEProperty(E,an,aq){
|
|||
|
|
%object_define_property(E,an,
|
|||
|
|
{value:aq,writable:true,enumerable:true});
|
|||
|
|
}
|
|||
|
|
function addWEPropertyIfDefined(E,an,aq){
|
|||
|
|
if(!(aq===(void 0))){
|
|||
|
|
defineWEProperty(E,an,aq);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function defineWECProperty(E,an,aq){
|
|||
|
|
%object_define_property(E,an,{value:aq,
|
|||
|
|
writable:true,
|
|||
|
|
enumerable:true,
|
|||
|
|
configurable:true});
|
|||
|
|
}
|
|||
|
|
function addWECPropertyIfDefined(E,an,aq){
|
|||
|
|
if(!(aq===(void 0))){
|
|||
|
|
defineWECProperty(E,an,aq);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function toTitleCaseWord(aM){
|
|||
|
|
return %StringToUpperCase(%_Call(B,aM,0,1))+
|
|||
|
|
%StringToLowerCase(%_Call(B,aM,1));
|
|||
|
|
}
|
|||
|
|
function toTitleCaseTimezoneLocation(aN){
|
|||
|
|
var aO=n(GetTimezoneNameLocationPartRE(),aN)
|
|||
|
|
if((aO===null))throw r(150,aN);
|
|||
|
|
var aP=toTitleCaseWord(aO[1]);
|
|||
|
|
if(!(aO[2]===(void 0))&&2<aO.length){
|
|||
|
|
var aQ=%_Call(C,aO[2],0,1);
|
|||
|
|
var aL=%_Call(A,aO[2],aQ);
|
|||
|
|
for(var ai=1;ai<aL.length;ai++){
|
|||
|
|
var aR=aL[ai]
|
|||
|
|
var aS=%StringToLowerCase(aR);
|
|||
|
|
aP=aP+aQ+
|
|||
|
|
((aS!=='es'&&
|
|||
|
|
aS!=='of'&&aS!=='au')?
|
|||
|
|
toTitleCaseWord(aR):aS);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return aP;
|
|||
|
|
}
|
|||
|
|
function canonicalizeLanguageTag(aT){
|
|||
|
|
if((!(typeof(aT)==='string')&&!(%_IsJSReceiver(aT)))||
|
|||
|
|
(aT===null)){
|
|||
|
|
throw s(51);
|
|||
|
|
}
|
|||
|
|
if((typeof(aT)==='string')&&
|
|||
|
|
!(n(/^[a-z]{2,3}$/,aT)===null)){
|
|||
|
|
return aT;
|
|||
|
|
}
|
|||
|
|
var aU=(%_ToString(aT));
|
|||
|
|
if(isValidLanguageTag(aU)===false){
|
|||
|
|
throw r(162,aU);
|
|||
|
|
}
|
|||
|
|
var aV=%CanonicalizeLanguageTag(aU);
|
|||
|
|
if(aV==='invalid-tag'){
|
|||
|
|
throw r(162,aU);
|
|||
|
|
}
|
|||
|
|
return aV;
|
|||
|
|
}
|
|||
|
|
function initializeLocaleList(ac){
|
|||
|
|
var aW=new m();
|
|||
|
|
if(!(ac===(void 0))){
|
|||
|
|
if(typeof ac==='string'){
|
|||
|
|
%_Call(e,aW,canonicalizeLanguageTag(ac));
|
|||
|
|
return freezeArray(aW);
|
|||
|
|
}
|
|||
|
|
var aX=(%_ToObject(ac));
|
|||
|
|
var aY=((aX.length)>>>0);
|
|||
|
|
for(var aZ=0;aZ<aY;aZ++){
|
|||
|
|
if(aZ in aX){
|
|||
|
|
var aq=aX[aZ];
|
|||
|
|
var aV=canonicalizeLanguageTag(aq);
|
|||
|
|
if(%_Call(c,aW,aV)===-1){
|
|||
|
|
%_Call(e,aW,aV);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return freezeArray(aW);
|
|||
|
|
}
|
|||
|
|
function isValidLanguageTag(aj){
|
|||
|
|
if((n(GetLanguageTagRE(),aj)===null)){
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if(%_Call(y,aj,'x-')===0){
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
aj=%_Call(A,aj,'-x-')[0];
|
|||
|
|
var ba=new m();
|
|||
|
|
var bb=new m();
|
|||
|
|
var aL=%_Call(A,aj,'-');
|
|||
|
|
for(var ai=1;ai<aL.length;ai++){
|
|||
|
|
var aq=aL[ai];
|
|||
|
|
if(!(n(GetLanguageVariantRE(),aq)===null)&&
|
|||
|
|
bb.length===0){
|
|||
|
|
if(%_Call(c,ba,aq)===-1){
|
|||
|
|
%_Call(e,ba,aq);
|
|||
|
|
}else{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!(n(GetLanguageSingletonRE(),aq)===null)){
|
|||
|
|
if(%_Call(c,bb,aq)===-1){
|
|||
|
|
%_Call(e,bb,aq);
|
|||
|
|
}else{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
function BuildLanguageTagREs(){
|
|||
|
|
var bc='[a-zA-Z]';
|
|||
|
|
var bd='[0-9]';
|
|||
|
|
var be='('+bc+'|'+bd+')';
|
|||
|
|
var bf='(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|'+
|
|||
|
|
'zh-min|zh-min-nan|zh-xiang)';
|
|||
|
|
var bg='(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|'+
|
|||
|
|
'i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|'+
|
|||
|
|
'i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)';
|
|||
|
|
var bh='('+bg+'|'+bf+')';
|
|||
|
|
var bi='(x(-'+be+'{1,8})+)';
|
|||
|
|
var bj='('+bd+'|[A-WY-Za-wy-z])';
|
|||
|
|
Y=new i('^'+bj+'$','i');
|
|||
|
|
var at='('+bj+'(-'+be+'{2,8})+)';
|
|||
|
|
var bk='('+be+'{5,8}|('+bd+be+'{3}))';
|
|||
|
|
X=new i('^'+bk+'$','i');
|
|||
|
|
var bl='('+bc+'{2}|'+bd+'{3})';
|
|||
|
|
var bm='('+bc+'{4})';
|
|||
|
|
var bn='('+bc+'{3}(-'+bc+'{3}){0,2})';
|
|||
|
|
var bo='('+bc+'{2,3}(-'+bn+')?|'+bc+'{4}|'+
|
|||
|
|
bc+'{5,8})';
|
|||
|
|
var bp=bo+'(-'+bm+')?(-'+bl+')?(-'+
|
|||
|
|
bk+')*(-'+at+')*(-'+bi+')?';
|
|||
|
|
var bq=
|
|||
|
|
'^('+bp+'|'+bi+'|'+bh+')$';
|
|||
|
|
W=new i(bq,'i');
|
|||
|
|
}
|
|||
|
|
var br={
|
|||
|
|
get(){
|
|||
|
|
%IncrementUseCounter(16);
|
|||
|
|
return this[w];
|
|||
|
|
},
|
|||
|
|
set(aq){
|
|||
|
|
this[w]=aq;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
function initializeCollator(bs,ac,ad){
|
|||
|
|
if(%IsInitializedIntlObject(bs)){
|
|||
|
|
throw s(124,"Collator");
|
|||
|
|
}
|
|||
|
|
if((ad===(void 0))){
|
|||
|
|
ad={};
|
|||
|
|
}
|
|||
|
|
var am=getGetOption(ad,'collator');
|
|||
|
|
var bt={};
|
|||
|
|
defineWEProperty(bt,'usage',am(
|
|||
|
|
'usage','string',['sort','search'],'sort'));
|
|||
|
|
var bu=am('sensitivity','string',
|
|||
|
|
['base','accent','case','variant']);
|
|||
|
|
if((bu===(void 0))&&bt.usage==='sort'){
|
|||
|
|
bu='variant';
|
|||
|
|
}
|
|||
|
|
defineWEProperty(bt,'sensitivity',bu);
|
|||
|
|
defineWEProperty(bt,'ignorePunctuation',am(
|
|||
|
|
'ignorePunctuation','boolean',(void 0),false));
|
|||
|
|
var aj=resolveLocale('collator',ac,ad);
|
|||
|
|
var av=parseExtension(aj.extension);
|
|||
|
|
var bv={
|
|||
|
|
'kn':{'property':'numeric','type':'boolean'},
|
|||
|
|
'kf':{'property':'caseFirst','type':'string',
|
|||
|
|
'values':['false','lower','upper']}
|
|||
|
|
};
|
|||
|
|
setOptions(
|
|||
|
|
ad,av,bv,am,bt);
|
|||
|
|
var bw='default';
|
|||
|
|
var at='';
|
|||
|
|
if((%_Call(t,av,'co'))&&bt.usage==='sort'){
|
|||
|
|
var bx=[
|
|||
|
|
'big5han','dict','direct','ducet','gb2312','phonebk','phonetic',
|
|||
|
|
'pinyin','reformed','searchjl','stroke','trad','unihan','zhuyin'
|
|||
|
|
];
|
|||
|
|
if(%_Call(c,bx,av.co)!==-1){
|
|||
|
|
at='-u-co-'+av.co;
|
|||
|
|
bw=av.co;
|
|||
|
|
}
|
|||
|
|
}else if(bt.usage==='search'){
|
|||
|
|
at='-u-co-search';
|
|||
|
|
}
|
|||
|
|
defineWEProperty(bt,'collation',bw);
|
|||
|
|
var by=aj.locale+at;
|
|||
|
|
var ar=%object_define_properties({},{
|
|||
|
|
caseFirst:{writable:true},
|
|||
|
|
collation:{value:bt.collation,writable:true},
|
|||
|
|
ignorePunctuation:{writable:true},
|
|||
|
|
locale:{writable:true},
|
|||
|
|
numeric:{writable:true},
|
|||
|
|
requestedLocale:{value:by,writable:true},
|
|||
|
|
sensitivity:{writable:true},
|
|||
|
|
strength:{writable:true},
|
|||
|
|
usage:{value:bt.usage,writable:true}
|
|||
|
|
});
|
|||
|
|
var bz=%CreateCollator(by,
|
|||
|
|
bt,
|
|||
|
|
ar);
|
|||
|
|
%MarkAsInitializedIntlObjectOfType(bs,'collator',bz);
|
|||
|
|
bs[w]=ar;
|
|||
|
|
if(f){
|
|||
|
|
%object_define_property(bs,'resolved',br);
|
|||
|
|
}
|
|||
|
|
return bs;
|
|||
|
|
}
|
|||
|
|
InstallConstructor(P,'Collator',function(){
|
|||
|
|
var ac=arguments[0];
|
|||
|
|
var ad=arguments[1];
|
|||
|
|
if(!this||this===P){
|
|||
|
|
return new P.Collator(ac,ad);
|
|||
|
|
}
|
|||
|
|
return initializeCollator((%_ToObject(this)),ac,ad);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
InstallFunction(P.Collator.prototype,'resolvedOptions',function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if(!%IsInitializedIntlObjectOfType(this,'collator')){
|
|||
|
|
throw s(125,"Collator");
|
|||
|
|
}
|
|||
|
|
var bA=this;
|
|||
|
|
var aj=getOptimalLanguageTag(bA[w].requestedLocale,
|
|||
|
|
bA[w].locale);
|
|||
|
|
return{
|
|||
|
|
locale:aj,
|
|||
|
|
usage:bA[w].usage,
|
|||
|
|
sensitivity:bA[w].sensitivity,
|
|||
|
|
ignorePunctuation:bA[w].ignorePunctuation,
|
|||
|
|
numeric:bA[w].numeric,
|
|||
|
|
caseFirst:bA[w].caseFirst,
|
|||
|
|
collation:bA[w].collation
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
InstallFunction(P.Collator,'supportedLocalesOf',function(ac){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
return supportedLocalesOf('collator',ac,arguments[1]);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
function compare(bs,bB,bC){
|
|||
|
|
return %InternalCompare(%GetImplFromInitializedIntlObject(bs),
|
|||
|
|
(%_ToString(bB)),(%_ToString(bC)));
|
|||
|
|
};
|
|||
|
|
AddBoundMethod(P.Collator,'compare',compare,2,'collator');
|
|||
|
|
function isWellFormedCurrencyCode(bD){
|
|||
|
|
return typeof bD=="string"&&bD.length==3&&
|
|||
|
|
(n(/[^A-Za-z]/,bD)===null);
|
|||
|
|
}
|
|||
|
|
function getNumberOption(ad,an,bE,bF,bG){
|
|||
|
|
var aq=ad[an];
|
|||
|
|
if(!(aq===(void 0))){
|
|||
|
|
aq=(%_ToNumber(aq));
|
|||
|
|
if((!%_IsSmi(%IS_VAR(aq))&&!(aq==aq))||aq<bE||aq>bF){
|
|||
|
|
throw r(176,an);
|
|||
|
|
}
|
|||
|
|
return %math_floor(aq);
|
|||
|
|
}
|
|||
|
|
return bG;
|
|||
|
|
}
|
|||
|
|
var bH={
|
|||
|
|
get(){
|
|||
|
|
%IncrementUseCounter(15);
|
|||
|
|
return this[v];
|
|||
|
|
},
|
|||
|
|
set(aq){
|
|||
|
|
this[v]=aq;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
function initializeNumberFormat(bI,ac,ad){
|
|||
|
|
if(%IsInitializedIntlObject(bI)){
|
|||
|
|
throw s(124,"NumberFormat");
|
|||
|
|
}
|
|||
|
|
if((ad===(void 0))){
|
|||
|
|
ad={};
|
|||
|
|
}
|
|||
|
|
var am=getGetOption(ad,'numberformat');
|
|||
|
|
var aj=resolveLocale('numberformat',ac,ad);
|
|||
|
|
var bt={};
|
|||
|
|
defineWEProperty(bt,'style',am(
|
|||
|
|
'style','string',['decimal','percent','currency'],'decimal'));
|
|||
|
|
var bD=am('currency','string');
|
|||
|
|
if(!(bD===(void 0))&&!isWellFormedCurrencyCode(bD)){
|
|||
|
|
throw r(157,bD);
|
|||
|
|
}
|
|||
|
|
if(bt.style==='currency'&&(bD===(void 0))){
|
|||
|
|
throw s(29);
|
|||
|
|
}
|
|||
|
|
var bJ=am(
|
|||
|
|
'currencyDisplay','string',['code','symbol','name'],'symbol');
|
|||
|
|
if(bt.style==='currency'){
|
|||
|
|
defineWEProperty(bt,'currency',%StringToUpperCase(bD));
|
|||
|
|
defineWEProperty(bt,'currencyDisplay',bJ);
|
|||
|
|
}
|
|||
|
|
var bK=getNumberOption(ad,'minimumIntegerDigits',1,21,1);
|
|||
|
|
defineWEProperty(bt,'minimumIntegerDigits',bK);
|
|||
|
|
var bL=ad['minimumFractionDigits'];
|
|||
|
|
var bM=ad['maximumFractionDigits'];
|
|||
|
|
if(!(bL===(void 0))||bt.style!=='currency'){
|
|||
|
|
bL=getNumberOption(ad,'minimumFractionDigits',0,20,0);
|
|||
|
|
defineWEProperty(bt,'minimumFractionDigits',bL);
|
|||
|
|
}
|
|||
|
|
if(!(bM===(void 0))||bt.style!=='currency'){
|
|||
|
|
var bN=bt.style==='percent'?0:3;
|
|||
|
|
bL=(bL===(void 0))?0:bL;
|
|||
|
|
var bO=(bL>bN)?bL:bN;
|
|||
|
|
bM=getNumberOption(ad,'maximumFractionDigits',bL,20,bO);
|
|||
|
|
defineWEProperty(bt,'maximumFractionDigits',bM);
|
|||
|
|
}
|
|||
|
|
var bP=ad['minimumSignificantDigits'];
|
|||
|
|
var bQ=ad['maximumSignificantDigits'];
|
|||
|
|
if(!(bP===(void 0))||!(bQ===(void 0))){
|
|||
|
|
bP=getNumberOption(ad,'minimumSignificantDigits',1,21,0);
|
|||
|
|
defineWEProperty(bt,'minimumSignificantDigits',bP);
|
|||
|
|
bQ=getNumberOption(ad,'maximumSignificantDigits',bP,21,21);
|
|||
|
|
defineWEProperty(bt,'maximumSignificantDigits',bQ);
|
|||
|
|
}
|
|||
|
|
defineWEProperty(bt,'useGrouping',am(
|
|||
|
|
'useGrouping','boolean',(void 0),true));
|
|||
|
|
var av=parseExtension(aj.extension);
|
|||
|
|
var bR={
|
|||
|
|
'nu':{'property':(void 0),'type':'string'}
|
|||
|
|
};
|
|||
|
|
var at=setOptions(ad,av,bR,
|
|||
|
|
am,bt);
|
|||
|
|
var by=aj.locale+at;
|
|||
|
|
var ar=%object_define_properties({},{
|
|||
|
|
currency:{writable:true},
|
|||
|
|
currencyDisplay:{writable:true},
|
|||
|
|
locale:{writable:true},
|
|||
|
|
maximumFractionDigits:{writable:true},
|
|||
|
|
minimumFractionDigits:{writable:true},
|
|||
|
|
minimumIntegerDigits:{writable:true},
|
|||
|
|
numberingSystem:{writable:true},
|
|||
|
|
requestedLocale:{value:by,writable:true},
|
|||
|
|
style:{value:bt.style,writable:true},
|
|||
|
|
useGrouping:{writable:true}
|
|||
|
|
});
|
|||
|
|
if((%_Call(t,bt,'minimumSignificantDigits'))){
|
|||
|
|
defineWEProperty(ar,'minimumSignificantDigits',(void 0));
|
|||
|
|
}
|
|||
|
|
if((%_Call(t,bt,'maximumSignificantDigits'))){
|
|||
|
|
defineWEProperty(ar,'maximumSignificantDigits',(void 0));
|
|||
|
|
}
|
|||
|
|
var bS=%CreateNumberFormat(by,
|
|||
|
|
bt,
|
|||
|
|
ar);
|
|||
|
|
if(bt.style==='currency'){
|
|||
|
|
%object_define_property(ar,'currencyDisplay',
|
|||
|
|
{value:bJ,writable:true});
|
|||
|
|
}
|
|||
|
|
%MarkAsInitializedIntlObjectOfType(bI,'numberformat',bS);
|
|||
|
|
bI[w]=ar;
|
|||
|
|
if(f){
|
|||
|
|
%object_define_property(ar,'pattern',bH);
|
|||
|
|
%object_define_property(bI,'resolved',br);
|
|||
|
|
}
|
|||
|
|
return bI;
|
|||
|
|
}
|
|||
|
|
InstallConstructor(P,'NumberFormat',function(){
|
|||
|
|
var ac=arguments[0];
|
|||
|
|
var ad=arguments[1];
|
|||
|
|
if(!this||this===P){
|
|||
|
|
return new P.NumberFormat(ac,ad);
|
|||
|
|
}
|
|||
|
|
return initializeNumberFormat((%_ToObject(this)),ac,ad);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
InstallFunction(P.NumberFormat.prototype,'resolvedOptions',function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if(!%IsInitializedIntlObjectOfType(this,'numberformat')){
|
|||
|
|
throw s(125,"NumberFormat");
|
|||
|
|
}
|
|||
|
|
var bT=this;
|
|||
|
|
var aj=getOptimalLanguageTag(bT[w].requestedLocale,
|
|||
|
|
bT[w].locale);
|
|||
|
|
var aP={
|
|||
|
|
locale:aj,
|
|||
|
|
numberingSystem:bT[w].numberingSystem,
|
|||
|
|
style:bT[w].style,
|
|||
|
|
useGrouping:bT[w].useGrouping,
|
|||
|
|
minimumIntegerDigits:bT[w].minimumIntegerDigits,
|
|||
|
|
minimumFractionDigits:bT[w].minimumFractionDigits,
|
|||
|
|
maximumFractionDigits:bT[w].maximumFractionDigits,
|
|||
|
|
};
|
|||
|
|
if(aP.style==='currency'){
|
|||
|
|
defineWECProperty(aP,'currency',bT[w].currency);
|
|||
|
|
defineWECProperty(aP,'currencyDisplay',
|
|||
|
|
bT[w].currencyDisplay);
|
|||
|
|
}
|
|||
|
|
if((%_Call(t,bT[w],'minimumSignificantDigits'))){
|
|||
|
|
defineWECProperty(aP,'minimumSignificantDigits',
|
|||
|
|
bT[w].minimumSignificantDigits);
|
|||
|
|
}
|
|||
|
|
if((%_Call(t,bT[w],'maximumSignificantDigits'))){
|
|||
|
|
defineWECProperty(aP,'maximumSignificantDigits',
|
|||
|
|
bT[w].maximumSignificantDigits);
|
|||
|
|
}
|
|||
|
|
return aP;
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
InstallFunction(P.NumberFormat,'supportedLocalesOf',function(ac){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
return supportedLocalesOf('numberformat',ac,arguments[1]);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
function formatNumber(bS,aq){
|
|||
|
|
var bU=(%_ToNumber(aq))+0;
|
|||
|
|
return %InternalNumberFormat(%GetImplFromInitializedIntlObject(bS),
|
|||
|
|
bU);
|
|||
|
|
}
|
|||
|
|
function IntlParseNumber(bS,aq){
|
|||
|
|
return %InternalNumberParse(%GetImplFromInitializedIntlObject(bS),
|
|||
|
|
(%_ToString(aq)));
|
|||
|
|
}
|
|||
|
|
AddBoundMethod(P.NumberFormat,'format',formatNumber,1,'numberformat');
|
|||
|
|
function toLDMLString(ad){
|
|||
|
|
var am=getGetOption(ad,'dateformat');
|
|||
|
|
var bV='';
|
|||
|
|
var bW=am('weekday','string',['narrow','short','long']);
|
|||
|
|
bV+=appendToLDMLString(
|
|||
|
|
bW,{narrow:'EEEEE',short:'EEE',long:'EEEE'});
|
|||
|
|
bW=am('era','string',['narrow','short','long']);
|
|||
|
|
bV+=appendToLDMLString(
|
|||
|
|
bW,{narrow:'GGGGG',short:'GGG',long:'GGGG'});
|
|||
|
|
bW=am('year','string',['2-digit','numeric']);
|
|||
|
|
bV+=appendToLDMLString(bW,{'2-digit':'yy','numeric':'y'});
|
|||
|
|
bW=am('month','string',
|
|||
|
|
['2-digit','numeric','narrow','short','long']);
|
|||
|
|
bV+=appendToLDMLString(bW,{'2-digit':'MM','numeric':'M',
|
|||
|
|
'narrow':'MMMMM','short':'MMM','long':'MMMM'});
|
|||
|
|
bW=am('day','string',['2-digit','numeric']);
|
|||
|
|
bV+=appendToLDMLString(
|
|||
|
|
bW,{'2-digit':'dd','numeric':'d'});
|
|||
|
|
var bX=am('hour12','boolean');
|
|||
|
|
bW=am('hour','string',['2-digit','numeric']);
|
|||
|
|
if((bX===(void 0))){
|
|||
|
|
bV+=appendToLDMLString(bW,{'2-digit':'jj','numeric':'j'});
|
|||
|
|
}else if(bX===true){
|
|||
|
|
bV+=appendToLDMLString(bW,{'2-digit':'hh','numeric':'h'});
|
|||
|
|
}else{
|
|||
|
|
bV+=appendToLDMLString(bW,{'2-digit':'HH','numeric':'H'});
|
|||
|
|
}
|
|||
|
|
bW=am('minute','string',['2-digit','numeric']);
|
|||
|
|
bV+=appendToLDMLString(bW,{'2-digit':'mm','numeric':'m'});
|
|||
|
|
bW=am('second','string',['2-digit','numeric']);
|
|||
|
|
bV+=appendToLDMLString(bW,{'2-digit':'ss','numeric':'s'});
|
|||
|
|
bW=am('timeZoneName','string',['short','long']);
|
|||
|
|
bV+=appendToLDMLString(bW,{short:'z',long:'zzzz'});
|
|||
|
|
return bV;
|
|||
|
|
}
|
|||
|
|
function appendToLDMLString(bW,bY){
|
|||
|
|
if(!(bW===(void 0))){
|
|||
|
|
return bY[bW];
|
|||
|
|
}else{
|
|||
|
|
return'';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
function fromLDMLString(bV){
|
|||
|
|
bV=o(GetQuotedStringRE(),bV,'');
|
|||
|
|
var ad={};
|
|||
|
|
var aO=n(/E{3,5}/,bV);
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'weekday',aO,{EEEEE:'narrow',EEE:'short',EEEE:'long'});
|
|||
|
|
aO=n(/G{3,5}/,bV);
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'era',aO,{GGGGG:'narrow',GGG:'short',GGGG:'long'});
|
|||
|
|
aO=n(/y{1,2}/,bV);
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'year',aO,{y:'numeric',yy:'2-digit'});
|
|||
|
|
aO=n(/M{1,5}/,bV);
|
|||
|
|
ad=appendToDateTimeObject(ad,'month',aO,{MM:'2-digit',
|
|||
|
|
M:'numeric',MMMMM:'narrow',MMM:'short',MMMM:'long'});
|
|||
|
|
aO=n(/L{1,5}/,bV);
|
|||
|
|
ad=appendToDateTimeObject(ad,'month',aO,{LL:'2-digit',
|
|||
|
|
L:'numeric',LLLLL:'narrow',LLL:'short',LLLL:'long'});
|
|||
|
|
aO=n(/d{1,2}/,bV);
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'day',aO,{d:'numeric',dd:'2-digit'});
|
|||
|
|
aO=n(/h{1,2}/,bV);
|
|||
|
|
if(aO!==null){
|
|||
|
|
ad['hour12']=true;
|
|||
|
|
}
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'hour',aO,{h:'numeric',hh:'2-digit'});
|
|||
|
|
aO=n(/H{1,2}/,bV);
|
|||
|
|
if(aO!==null){
|
|||
|
|
ad['hour12']=false;
|
|||
|
|
}
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'hour',aO,{H:'numeric',HH:'2-digit'});
|
|||
|
|
aO=n(/m{1,2}/,bV);
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'minute',aO,{m:'numeric',mm:'2-digit'});
|
|||
|
|
aO=n(/s{1,2}/,bV);
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'second',aO,{s:'numeric',ss:'2-digit'});
|
|||
|
|
aO=n(/z|zzzz/,bV);
|
|||
|
|
ad=appendToDateTimeObject(
|
|||
|
|
ad,'timeZoneName',aO,{z:'short',zzzz:'long'});
|
|||
|
|
return ad;
|
|||
|
|
}
|
|||
|
|
function appendToDateTimeObject(ad,bW,aO,bY){
|
|||
|
|
if((aO===null)){
|
|||
|
|
if(!(%_Call(t,ad,bW))){
|
|||
|
|
defineWEProperty(ad,bW,(void 0));
|
|||
|
|
}
|
|||
|
|
return ad;
|
|||
|
|
}
|
|||
|
|
var an=aO[0];
|
|||
|
|
defineWEProperty(ad,bW,bY[an]);
|
|||
|
|
return ad;
|
|||
|
|
}
|
|||
|
|
function toDateTimeOptions(ad,bZ,ca){
|
|||
|
|
if((ad===(void 0))){
|
|||
|
|
ad={};
|
|||
|
|
}else{
|
|||
|
|
ad=(%_ToObject(ad));
|
|||
|
|
}
|
|||
|
|
var cb=true;
|
|||
|
|
if((bZ==='date'||bZ==='any')&&
|
|||
|
|
(!(ad.weekday===(void 0))||!(ad.year===(void 0))||
|
|||
|
|
!(ad.month===(void 0))||!(ad.day===(void 0)))){
|
|||
|
|
cb=false;
|
|||
|
|
}
|
|||
|
|
if((bZ==='time'||bZ==='any')&&
|
|||
|
|
(!(ad.hour===(void 0))||!(ad.minute===(void 0))||
|
|||
|
|
!(ad.second===(void 0)))){
|
|||
|
|
cb=false;
|
|||
|
|
}
|
|||
|
|
if(cb&&(ca==='date'||ca==='all')){
|
|||
|
|
%object_define_property(ad,'year',{value:'numeric',
|
|||
|
|
writable:true,
|
|||
|
|
enumerable:true,
|
|||
|
|
configurable:true});
|
|||
|
|
%object_define_property(ad,'month',{value:'numeric',
|
|||
|
|
writable:true,
|
|||
|
|
enumerable:true,
|
|||
|
|
configurable:true});
|
|||
|
|
%object_define_property(ad,'day',{value:'numeric',
|
|||
|
|
writable:true,
|
|||
|
|
enumerable:true,
|
|||
|
|
configurable:true});
|
|||
|
|
}
|
|||
|
|
if(cb&&(ca==='time'||ca==='all')){
|
|||
|
|
%object_define_property(ad,'hour',{value:'numeric',
|
|||
|
|
writable:true,
|
|||
|
|
enumerable:true,
|
|||
|
|
configurable:true});
|
|||
|
|
%object_define_property(ad,'minute',{value:'numeric',
|
|||
|
|
writable:true,
|
|||
|
|
enumerable:true,
|
|||
|
|
configurable:true});
|
|||
|
|
%object_define_property(ad,'second',{value:'numeric',
|
|||
|
|
writable:true,
|
|||
|
|
enumerable:true,
|
|||
|
|
configurable:true});
|
|||
|
|
}
|
|||
|
|
return ad;
|
|||
|
|
}
|
|||
|
|
function initializeDateTimeFormat(cc,ac,ad){
|
|||
|
|
if(%IsInitializedIntlObject(cc)){
|
|||
|
|
throw s(124,"DateTimeFormat");
|
|||
|
|
}
|
|||
|
|
if((ad===(void 0))){
|
|||
|
|
ad={};
|
|||
|
|
}
|
|||
|
|
var aj=resolveLocale('dateformat',ac,ad);
|
|||
|
|
ad=toDateTimeOptions(ad,'any','date');
|
|||
|
|
var am=getGetOption(ad,'dateformat');
|
|||
|
|
var ae=am('formatMatcher','string',
|
|||
|
|
['basic','best fit'],'best fit');
|
|||
|
|
var bV=toLDMLString(ad);
|
|||
|
|
var cd=canonicalizeTimeZoneID(ad.timeZone);
|
|||
|
|
var bt={};
|
|||
|
|
var av=parseExtension(aj.extension);
|
|||
|
|
var ce={
|
|||
|
|
'ca':{'property':(void 0),'type':'string'},
|
|||
|
|
'nu':{'property':(void 0),'type':'string'}
|
|||
|
|
};
|
|||
|
|
var at=setOptions(ad,av,ce,
|
|||
|
|
am,bt);
|
|||
|
|
var by=aj.locale+at;
|
|||
|
|
var ar=%object_define_properties({},{
|
|||
|
|
calendar:{writable:true},
|
|||
|
|
day:{writable:true},
|
|||
|
|
era:{writable:true},
|
|||
|
|
hour12:{writable:true},
|
|||
|
|
hour:{writable:true},
|
|||
|
|
locale:{writable:true},
|
|||
|
|
minute:{writable:true},
|
|||
|
|
month:{writable:true},
|
|||
|
|
numberingSystem:{writable:true},
|
|||
|
|
[v]:{writable:true},
|
|||
|
|
requestedLocale:{value:by,writable:true},
|
|||
|
|
second:{writable:true},
|
|||
|
|
timeZone:{writable:true},
|
|||
|
|
timeZoneName:{writable:true},
|
|||
|
|
tz:{value:cd,writable:true},
|
|||
|
|
weekday:{writable:true},
|
|||
|
|
year:{writable:true}
|
|||
|
|
});
|
|||
|
|
var bS=%CreateDateTimeFormat(
|
|||
|
|
by,{skeleton:bV,timeZone:cd},ar);
|
|||
|
|
if(ar.timeZone==="Etc/Unknown"){
|
|||
|
|
throw r(182,cd);
|
|||
|
|
}
|
|||
|
|
%MarkAsInitializedIntlObjectOfType(cc,'dateformat',bS);
|
|||
|
|
cc[w]=ar;
|
|||
|
|
if(f){
|
|||
|
|
%object_define_property(ar,'pattern',bH);
|
|||
|
|
%object_define_property(cc,'resolved',br);
|
|||
|
|
}
|
|||
|
|
return cc;
|
|||
|
|
}
|
|||
|
|
InstallConstructor(P,'DateTimeFormat',function(){
|
|||
|
|
var ac=arguments[0];
|
|||
|
|
var ad=arguments[1];
|
|||
|
|
if(!this||this===P){
|
|||
|
|
return new P.DateTimeFormat(ac,ad);
|
|||
|
|
}
|
|||
|
|
return initializeDateTimeFormat((%_ToObject(this)),ac,ad);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
InstallFunction(P.DateTimeFormat.prototype,'resolvedOptions',function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if(!%IsInitializedIntlObjectOfType(this,'dateformat')){
|
|||
|
|
throw s(125,"DateTimeFormat");
|
|||
|
|
}
|
|||
|
|
var cf={
|
|||
|
|
'gregorian':'gregory',
|
|||
|
|
'japanese':'japanese',
|
|||
|
|
'buddhist':'buddhist',
|
|||
|
|
'roc':'roc',
|
|||
|
|
'persian':'persian',
|
|||
|
|
'islamic-civil':'islamicc',
|
|||
|
|
'islamic':'islamic',
|
|||
|
|
'hebrew':'hebrew',
|
|||
|
|
'chinese':'chinese',
|
|||
|
|
'indian':'indian',
|
|||
|
|
'coptic':'coptic',
|
|||
|
|
'ethiopic':'ethiopic',
|
|||
|
|
'ethiopic-amete-alem':'ethioaa'
|
|||
|
|
};
|
|||
|
|
var bT=this;
|
|||
|
|
var cg=fromLDMLString(bT[w][v]);
|
|||
|
|
var ch=cf[bT[w].calendar];
|
|||
|
|
if((ch===(void 0))){
|
|||
|
|
ch=bT[w].calendar;
|
|||
|
|
}
|
|||
|
|
var aj=getOptimalLanguageTag(bT[w].requestedLocale,
|
|||
|
|
bT[w].locale);
|
|||
|
|
var aP={
|
|||
|
|
locale:aj,
|
|||
|
|
numberingSystem:bT[w].numberingSystem,
|
|||
|
|
calendar:ch,
|
|||
|
|
timeZone:bT[w].timeZone
|
|||
|
|
};
|
|||
|
|
addWECPropertyIfDefined(aP,'timeZoneName',cg.timeZoneName);
|
|||
|
|
addWECPropertyIfDefined(aP,'era',cg.era);
|
|||
|
|
addWECPropertyIfDefined(aP,'year',cg.year);
|
|||
|
|
addWECPropertyIfDefined(aP,'month',cg.month);
|
|||
|
|
addWECPropertyIfDefined(aP,'day',cg.day);
|
|||
|
|
addWECPropertyIfDefined(aP,'weekday',cg.weekday);
|
|||
|
|
addWECPropertyIfDefined(aP,'hour12',cg.hour12);
|
|||
|
|
addWECPropertyIfDefined(aP,'hour',cg.hour);
|
|||
|
|
addWECPropertyIfDefined(aP,'minute',cg.minute);
|
|||
|
|
addWECPropertyIfDefined(aP,'second',cg.second);
|
|||
|
|
return aP;
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
InstallFunction(P.DateTimeFormat,'supportedLocalesOf',function(ac){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
return supportedLocalesOf('dateformat',ac,arguments[1]);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
function formatDate(bS,ci){
|
|||
|
|
var cj;
|
|||
|
|
if((ci===(void 0))){
|
|||
|
|
cj=%DateCurrentTime();
|
|||
|
|
}else{
|
|||
|
|
cj=(%_ToNumber(ci));
|
|||
|
|
}
|
|||
|
|
if(!(%_IsSmi(%IS_VAR(cj))||((cj==cj)&&(cj!=1/0)&&(cj!=-1/0))))throw r(148);
|
|||
|
|
return %InternalDateFormat(%GetImplFromInitializedIntlObject(bS),
|
|||
|
|
new g(cj));
|
|||
|
|
}
|
|||
|
|
function IntlParseDate(bS,aq){
|
|||
|
|
return %InternalDateParse(%GetImplFromInitializedIntlObject(bS),
|
|||
|
|
(%_ToString(aq)));
|
|||
|
|
}
|
|||
|
|
AddBoundMethod(P.DateTimeFormat,'format',formatDate,0,'dateformat');
|
|||
|
|
function canonicalizeTimeZoneID(ck){
|
|||
|
|
if((ck===(void 0))){
|
|||
|
|
return ck;
|
|||
|
|
}
|
|||
|
|
var cl=%StringToUpperCase(ck);
|
|||
|
|
if(cl==='UTC'||cl==='GMT'||
|
|||
|
|
cl==='ETC/UTC'||cl==='ETC/GMT'){
|
|||
|
|
return'UTC';
|
|||
|
|
}
|
|||
|
|
var aO=n(GetTimezoneNameCheckRE(),ck);
|
|||
|
|
if((aO===null))throw r(149,ck);
|
|||
|
|
var aP=toTitleCaseTimezoneLocation(aO[1])+'/'+
|
|||
|
|
toTitleCaseTimezoneLocation(aO[2]);
|
|||
|
|
if(!(aO[3]===(void 0))&&3<aO.length){
|
|||
|
|
var cm=%_Call(A,aO[3],'/');
|
|||
|
|
for(var ai=1;ai<cm.length;ai++){
|
|||
|
|
aP=aP+'/'+toTitleCaseTimezoneLocation(cm[ai]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return aP;
|
|||
|
|
}
|
|||
|
|
function initializeBreakIterator(cn,ac,ad){
|
|||
|
|
if(%IsInitializedIntlObject(cn)){
|
|||
|
|
throw s(124,"v8BreakIterator");
|
|||
|
|
}
|
|||
|
|
if((ad===(void 0))){
|
|||
|
|
ad={};
|
|||
|
|
}
|
|||
|
|
var am=getGetOption(ad,'breakiterator');
|
|||
|
|
var bt={};
|
|||
|
|
defineWEProperty(bt,'type',am(
|
|||
|
|
'type','string',['character','word','sentence','line'],'word'));
|
|||
|
|
var aj=resolveLocale('breakiterator',ac,ad);
|
|||
|
|
var ar=%object_define_properties({},{
|
|||
|
|
requestedLocale:{value:aj.locale,writable:true},
|
|||
|
|
type:{value:bt.type,writable:true},
|
|||
|
|
locale:{writable:true}
|
|||
|
|
});
|
|||
|
|
var co=%CreateBreakIterator(aj.locale,
|
|||
|
|
bt,
|
|||
|
|
ar);
|
|||
|
|
%MarkAsInitializedIntlObjectOfType(cn,'breakiterator',
|
|||
|
|
co);
|
|||
|
|
cn[w]=ar;
|
|||
|
|
if(f){
|
|||
|
|
%object_define_property(cn,'resolved',br);
|
|||
|
|
}
|
|||
|
|
return cn;
|
|||
|
|
}
|
|||
|
|
InstallConstructor(P,'v8BreakIterator',function(){
|
|||
|
|
var ac=arguments[0];
|
|||
|
|
var ad=arguments[1];
|
|||
|
|
if(!this||this===P){
|
|||
|
|
return new P.v8BreakIterator(ac,ad);
|
|||
|
|
}
|
|||
|
|
return initializeBreakIterator((%_ToObject(this)),ac,ad);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
InstallFunction(P.v8BreakIterator.prototype,'resolvedOptions',
|
|||
|
|
function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if(!%IsInitializedIntlObjectOfType(this,'breakiterator')){
|
|||
|
|
throw s(125,"v8BreakIterator");
|
|||
|
|
}
|
|||
|
|
var cp=this;
|
|||
|
|
var aj=
|
|||
|
|
getOptimalLanguageTag(cp[w].requestedLocale,
|
|||
|
|
cp[w].locale);
|
|||
|
|
return{
|
|||
|
|
locale:aj,
|
|||
|
|
type:cp[w].type
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
InstallFunction(P.v8BreakIterator,'supportedLocalesOf',
|
|||
|
|
function(ac){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
return supportedLocalesOf('breakiterator',ac,arguments[1]);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
function adoptText(cn,cq){
|
|||
|
|
%BreakIteratorAdoptText(%GetImplFromInitializedIntlObject(cn),
|
|||
|
|
(%_ToString(cq)));
|
|||
|
|
}
|
|||
|
|
function first(cn){
|
|||
|
|
return %BreakIteratorFirst(%GetImplFromInitializedIntlObject(cn));
|
|||
|
|
}
|
|||
|
|
function next(cn){
|
|||
|
|
return %BreakIteratorNext(%GetImplFromInitializedIntlObject(cn));
|
|||
|
|
}
|
|||
|
|
function current(cn){
|
|||
|
|
return %BreakIteratorCurrent(%GetImplFromInitializedIntlObject(cn));
|
|||
|
|
}
|
|||
|
|
function breakType(cn){
|
|||
|
|
return %BreakIteratorBreakType(%GetImplFromInitializedIntlObject(cn));
|
|||
|
|
}
|
|||
|
|
AddBoundMethod(P.v8BreakIterator,'adoptText',adoptText,1,
|
|||
|
|
'breakiterator');
|
|||
|
|
AddBoundMethod(P.v8BreakIterator,'first',first,0,'breakiterator');
|
|||
|
|
AddBoundMethod(P.v8BreakIterator,'next',next,0,'breakiterator');
|
|||
|
|
AddBoundMethod(P.v8BreakIterator,'current',current,0,'breakiterator');
|
|||
|
|
AddBoundMethod(P.v8BreakIterator,'breakType',breakType,0,
|
|||
|
|
'breakiterator');
|
|||
|
|
var cr={
|
|||
|
|
'collator':P.Collator,
|
|||
|
|
'numberformat':P.NumberFormat,
|
|||
|
|
'dateformatall':P.DateTimeFormat,
|
|||
|
|
'dateformatdate':P.DateTimeFormat,
|
|||
|
|
'dateformattime':P.DateTimeFormat
|
|||
|
|
};
|
|||
|
|
var cs={
|
|||
|
|
'collator':(void 0),
|
|||
|
|
'numberformat':(void 0),
|
|||
|
|
'dateformatall':(void 0),
|
|||
|
|
'dateformatdate':(void 0),
|
|||
|
|
'dateformattime':(void 0),
|
|||
|
|
};
|
|||
|
|
function clearDefaultObjects(){
|
|||
|
|
cs['dateformatall']=(void 0);
|
|||
|
|
cs['dateformatdate']=(void 0);
|
|||
|
|
cs['dateformattime']=(void 0);
|
|||
|
|
}
|
|||
|
|
var ct=0;
|
|||
|
|
function checkDateCacheCurrent(){
|
|||
|
|
var cu=%DateCacheVersion();
|
|||
|
|
if(cu==ct){
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
ct=cu;
|
|||
|
|
clearDefaultObjects();
|
|||
|
|
}
|
|||
|
|
function cachedOrNewService(ab,ac,ad,ca){
|
|||
|
|
var cv=((ca===(void 0)))?ad:ca;
|
|||
|
|
if((ac===(void 0))&&(ad===(void 0))){
|
|||
|
|
checkDateCacheCurrent();
|
|||
|
|
if((cs[ab]===(void 0))){
|
|||
|
|
cs[ab]=new cr[ab](ac,cv);
|
|||
|
|
}
|
|||
|
|
return cs[ab];
|
|||
|
|
}
|
|||
|
|
return new cr[ab](ac,cv);
|
|||
|
|
}
|
|||
|
|
function LocaleConvertCase(cw,ac,cx){
|
|||
|
|
var bo;
|
|||
|
|
if((ac===(void 0))){
|
|||
|
|
bo=GetDefaultICULocaleJS();
|
|||
|
|
}else if((typeof(ac)==='string')){
|
|||
|
|
bo=canonicalizeLanguageTag(ac);
|
|||
|
|
}else{
|
|||
|
|
var ac=initializeLocaleList(ac);
|
|||
|
|
bo=ac.length>0?ac[0]:GetDefaultICULocaleJS();
|
|||
|
|
}
|
|||
|
|
var ak=%_Call(y,bo,'-');
|
|||
|
|
if(ak!=-1){
|
|||
|
|
bo=%_Call(C,bo,0,ak);
|
|||
|
|
}
|
|||
|
|
var cy=['az','el','lt','tr'];
|
|||
|
|
var cz=%_Call(c,cy,bo);
|
|||
|
|
if(cz==-1){
|
|||
|
|
return cx?%StringToUpperCaseI18N(cw):%StringToLowerCaseI18N(cw);
|
|||
|
|
}
|
|||
|
|
return %StringLocaleConvertCase(cw,cx,
|
|||
|
|
cy[cz]);
|
|||
|
|
}
|
|||
|
|
u(j.prototype,'localeCompare',function(cA){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if((this==null)){
|
|||
|
|
throw s(53);
|
|||
|
|
}
|
|||
|
|
var ac=arguments[1];
|
|||
|
|
var ad=arguments[2];
|
|||
|
|
var bs=cachedOrNewService('collator',ac,ad);
|
|||
|
|
return compare(bs,this,cA);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
u(j.prototype,'normalize',function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw s(17,"String.prototype.normalize");
|
|||
|
|
var cw=(%_ToString(this));
|
|||
|
|
var cB=arguments[0];
|
|||
|
|
var cC=(cB===(void 0))?'NFC':(%_ToString(cB));
|
|||
|
|
var cD=['NFC','NFD','NFKC','NFKD'];
|
|||
|
|
var cE=%_Call(c,cD,cC);
|
|||
|
|
if(cE===-1){
|
|||
|
|
throw r(174,
|
|||
|
|
%_Call(d,cD,', '));
|
|||
|
|
}
|
|||
|
|
return %StringNormalize(cw,cE);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
function ToLowerCaseI18N(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw s(17,"String.prototype.toLowerCase");
|
|||
|
|
var cw=(%_ToString(this));
|
|||
|
|
return %StringToLowerCaseI18N(cw);
|
|||
|
|
}
|
|||
|
|
function ToUpperCaseI18N(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw s(17,"String.prototype.toUpperCase");
|
|||
|
|
var cw=(%_ToString(this));
|
|||
|
|
return %StringToUpperCaseI18N(cw);
|
|||
|
|
}
|
|||
|
|
function ToLocaleLowerCaseI18N(ac){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw s(17,"String.prototype.toLocaleLowerCase");
|
|||
|
|
return LocaleConvertCase((%_ToString(this)),ac,false);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(ToLocaleLowerCaseI18N,0);
|
|||
|
|
function ToLocaleUpperCaseI18N(ac){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if((%IS_VAR(this)===null)||(this===(void 0)))throw s(17,"String.prototype.toLocaleUpperCase");
|
|||
|
|
return LocaleConvertCase((%_ToString(this)),ac,true);
|
|||
|
|
}
|
|||
|
|
%FunctionSetLength(ToLocaleUpperCaseI18N,0);
|
|||
|
|
%FunctionRemovePrototype(ToLowerCaseI18N);
|
|||
|
|
%FunctionRemovePrototype(ToUpperCaseI18N);
|
|||
|
|
%FunctionRemovePrototype(ToLocaleLowerCaseI18N);
|
|||
|
|
%FunctionRemovePrototype(ToLocaleUpperCaseI18N);
|
|||
|
|
b.Export(function(cF){
|
|||
|
|
cF.ToLowerCaseI18N=ToLowerCaseI18N;
|
|||
|
|
cF.ToUpperCaseI18N=ToUpperCaseI18N;
|
|||
|
|
cF.ToLocaleLowerCaseI18N=ToLocaleLowerCaseI18N;
|
|||
|
|
cF.ToLocaleUpperCaseI18N=ToLocaleUpperCaseI18N;
|
|||
|
|
});
|
|||
|
|
u(h.prototype,'toLocaleString',function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
if(!(this instanceof h)&&typeof(this)!=='number'){
|
|||
|
|
throw s(54,"Number");
|
|||
|
|
}
|
|||
|
|
var ac=arguments[0];
|
|||
|
|
var ad=arguments[1];
|
|||
|
|
var bI=cachedOrNewService('numberformat',ac,ad);
|
|||
|
|
return formatNumber(bI,this);
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
function toLocaleDateTime(cG,ac,ad,bZ,ca,ab){
|
|||
|
|
if(!(cG instanceof g)){
|
|||
|
|
throw s(54,"Date");
|
|||
|
|
}
|
|||
|
|
if(p(cG))return'Invalid Date';
|
|||
|
|
var bt=toDateTimeOptions(ad,bZ,ca);
|
|||
|
|
var cc=
|
|||
|
|
cachedOrNewService(ab,ac,ad,bt);
|
|||
|
|
return formatDate(cc,cG);
|
|||
|
|
}
|
|||
|
|
u(g.prototype,'toLocaleString',function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
var ac=arguments[0];
|
|||
|
|
var ad=arguments[1];
|
|||
|
|
return toLocaleDateTime(
|
|||
|
|
this,ac,ad,'any','all','dateformatall');
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
u(g.prototype,'toLocaleDateString',function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
var ac=arguments[0];
|
|||
|
|
var ad=arguments[1];
|
|||
|
|
return toLocaleDateTime(
|
|||
|
|
this,ac,ad,'date','date','dateformatdate');
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
u(g.prototype,'toLocaleTimeString',function(){
|
|||
|
|
if(!(new.target===(void 0))){
|
|||
|
|
throw s(80);
|
|||
|
|
}
|
|||
|
|
var ac=arguments[0];
|
|||
|
|
var ad=arguments[1];
|
|||
|
|
return toLocaleDateTime(
|
|||
|
|
this,ac,ad,'time','time','dateformattime');
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
b.Export(function(cF){
|
|||
|
|
cF.AddBoundMethod=AddBoundMethod;
|
|||
|
|
cF.IntlParseDate=IntlParseDate;
|
|||
|
|
cF.IntlParseNumber=IntlParseNumber;
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
|