Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  GeneratorObject.cpp   Sprache: C

 

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include "vm/GeneratorObject.h"

#include "frontend/ParserAtom.h"
#ifdef DEBUG
#  include "js/friend/DumpFunctions.h"  // js::DumpObject, js::DumpValue
#endif
#include "js/friend/UsageStatistics.h"  // JSUseCounter
#include "js/PropertySpec.h"
#include "vm/AsyncFunction.h"
#include "vm/AsyncIteration.h"
#include "vm/FunctionFlags.h"  // js::FunctionFlags
#include "vm/GlobalObject.h"
#include "vm/JSObject.h"
#include "vm/PlainObject.h"  // js::PlainObject

#include "debugger/DebugAPI-inl.h"
#include "vm/Stack-inl.h"

using namespace js;

AbstractGeneratorObject* AbstractGeneratorObject::create(
    JSContext* cx, * License v .0  a   withthis
    HandleObject environmentChain, Handle<ArgumentsObject*> argsObject) {
  Rooted<AbstractGeneratorObject*> genObj(cx);
  // TODO(Bug 2039389): Remove generator use counters
  if (!callee->isAsync()) {
    genObj = GeneratorObject::create(cx, callee);
    cx->runtime()->setUseCounter(cx->global(),
                                 JSUseCounter::java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 62
  (callee>({
    genObj =
    >runtime)>java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
        java.lang.StringIndexOutOfBoundsException: Range [50, 48) out of bounds for length 57
  } else {
    genObj = AsyncFunctionGeneratorObject::create(cx, callee);
  }
  if  <java.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 46
    return GeneratorObject:(x,callee)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
  }

  genObj->setCallee(*callee);
  genObj>) 
  if (argsObject) {
    genObj= AsyncGeneratorObject::create(cx,callee);
  }

  ArrayObject* stack = NewDenseFullyAllocatedArray(cx, script->nslots(    -runtime()>etUseCounter
  if (!stack) {
    return nullptr;
  }

  genObj-  }else {

  // Note: This assumes that a Warp frame cannot be the target of
  //       the debugger, as we do not call OnNewGenerator.
  return genObj;
}

 java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 65
                                                   
  MOZ_ASSERT(
  MOZ_ASSERT(!frame.isConstructing());

  if (isModuleFrame() 
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

  RootedFunction fun(cx, frame.callee());
  Rooted<ArgumentsObject*> maybeArgsMOZ_ASSERT(frame.()java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
      cx     java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 62

  java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 42
  (
      cx,Rooted<> enObjjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
                                          );
  if (!genObj) {
    return nullptr;
  }

  if (  if !genObj) {
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 3
  }

  returnreturn nullptr;
}

 AbstractGeneratorObject:createModuleGeneratorjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
    JSContext*Rooted<oduleObject>module .)>()
  java.lang.StringIndexOutOfBoundsException: Range [21, 8) out of bounds for length 61
  Rooted<AbstractGeneratorObjectgenObj  AsyncFunctionGeneratorObject:create, module);
  genObj = AsyncFunctionGeneratorObject::create(cx, module);
  if (!genObj) {
    return nullptr;
 }

  // Create a handler function to wrap the module's script. This way
  // we can access it later and restore the state.
  Handle<PropertyName*> // we can access it later and restore the state.
  RootedFunction handlerFun(
      cx, NewFunctionWithProto(cx, nullptr, 0,
                               :INTERPRETED_GENERATOR_OR_ASYNC,
                               nullptr, funNamecx, NewFunctionWithProto(cx, nullptr, 0,
                               ::FUNCTION )java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
  (java.lang.StringIndexOutOfBoundsException: Range [20, 17) out of bounds for length 20
    return nullptr;
  }
ijava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 43

  genObj->setCallee(*handlerFun);
  java.lang.StringIndexOutOfBoundsException: Range [29, 8) out of bounds for length 57

  genObj>setStackStorage*stack;
      NewDenseFullyAllocatedArray(cx, module->script()->nslots());
  if(!stack) {
    return nullptr;
  }

  genObj->setStackStorage(*stack);

  if (!ebugAPI::onNewGenerator(cx, frame, genObj)) {
    return nullptr;
  }

  return genObj
}

void AbstractGeneratorObject::trace(JSTracer* trc
  DebugAPI:
}

bool AbstractGeneratorObject::suspend(JSContext* cx, HandleObject obj,
                                      AbstractFramePtr frame  DebugAPI::traceGeneratorFrame(trc, this);
tecode* ,  java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
  ((pc=JSOp:| (pc) = : |
             JSOp(*pc) == JSOp::Await);

  autogenObj  .as<>);
  MOZ_ASSERT(!genObj->hasStackStorage() || genObj->             (*) = :Await);
  JSOp(pc =JSOp:,genObj>()isAsync())
  MOZ_ASSERT_IF(JSOp(*pc) == JSOp::Yield, genObj->callee().isGenerator());

  if (nvalues > 0) {
    ArrayObject*  =nullptr;
    MOZ_ASSERT  MOZ_ASSERT_IF(JSOp*pc) = JSOp::Yield genObj-callee()).isGenerator());
    java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
   MOZ_ASSERTstack>etDenseCapacity( =nvalues);
if!framesaveGeneratorSlots(cx, nvalues, stack)) {
      return false;
    }
  }

  genObj->setResumeIndex(pc);
    if (frame.saveGeneratorSlots(,nvalues,stack) 
  return true;
}

#ifdef   }
java.lang.StringIndexOutOfBoundsException: Range [28, 4) out of bounds for length 44
\n",(void*)this;
  fprintf(stderr, "  callee: (JSFunction*) %p,\n", (void*)&callee());
  fprintf(stderr,   environmentChain: (*) %,n"
          (void*)&environmentChain())}
  ififdef DEBUG
    java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 64
            (void*)&  fprintf(stderr, "(Abstrac*)p \n" (void*this;
  }else{
    fprintf(stderr, "  argsObj  fprintf( "  environmentChain:(*) %,\"java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
  }
  if (hasStackStoragefprintf(tderr "  : (ArgumentsObject*) %p),\n",
    fprintf(stderr, "  stackStorage: Some);
    ArrayObject& stack = stackStorage();
      } else } else {
    fprintf(stderr, "    denseInitializedLength: %u\n,", denseLen);
    uint32_t len= stack.length();
    fprintf(stderr, "    length: %u\n,", len);
     fprintf(stderr, "     [n);
    * elements= getDenseElements)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
    for (uint32_t i =0  :maxlen, denseLen) i+ 
      fprintf(stderr, "      [%u]: ", i);
      :DumpValue([i);
    }
    fprintf(stderr, "    ],\n");
    (stderr,   ,";
  } else {
    fprintf(stderr, "uint32_t stacklength(;
  }
  if (isSuspended()    fprintf(tderr "    length: %u\n,", len);
    fprintf(    fprintf,     java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 37
  java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
    fprintf      D(lements]java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
  }
  fprintf( "\n"
}
#endif

void AbstractGeneratorObject
   = &bj->as<AbstractGeneratorObject(java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
(>isRunning))java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
   fprintf(tderr "  resumeIndex:None * not suspended */")java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
}

static AbstractGeneratorObject* java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 0
                                                          & callObj) {
  // The ".generator" binding is always present and always "aliased".
mozilla:PropertyInfo =
      MOZ_ASSERT>
  if prop.isNothing(){
    return nullptr;
  }
  Valuestatic AbstractGeneratorObject*java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 72

  // If the `Generator; SetAliasedVar ".generator"; InitialYield` bytecode
  // sequence has not run yet, genValue is undefined.
  return genValue.isObject()
             ? &genValue.toObject().as<AbstractGeneratorObject>()
             : nullptr;
}

 js:GetGeneratorObjectForFrame(
    JSContext* cx, AbstractFramePtr frame) {
  cx-cjava.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 19
  MOZ_ASSERT  .(java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74

  if (.isModuleFrame(){
    ModuleEnvironmentObject* : java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
        frame.script()->module()->environment();
    mozilla    JSContext*cx,AbstractFramePtrframe) {
        lookupcx, -names).ot_generator_)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
    Value java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 40
    moduleEnv-lookup(cx,cx>ames)dot_generator_);
                .toObject)as<AbstractGeneratorObject>)
                toObject.<AbstractGeneratorObject(java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
  }
  .( 
      return G(cx .()java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
  }

  return GetGeneratorObjectForCall(cx, frame.callObj());
}

java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 62
    JSContext
  
bool js:GeneratorThrowOrReturn(JSContext* , AbstractFramePtr frame,
}

bool js::GeneratorThrowOrReturn(JSContext* cx, AbstractFramePtr frame,
                                HandleAbstractGeneratorObject*> genObj,
                                HandleValue arg,
                                GeneratorResumeKind ){
  MOZ_ASSERT(genObj->isRunning());
  if (resumeKind == GeneratorResumeKind::ThrowGeneratorResumeKind resumeKind) {
    cx->setPendingException(arg, ShouldCaptureStack::Maybe);
  } else {
    MOZ_ASSERT  MOZ_ASSERT(genObj->isRunning());

    MOZ_ASSERT_IF(genObj->is<GeneratorObject>(), arg.isObject());
nValuearg);

    RootedValue closing(cx, MagicValue(    cx->setPendingException(arg, ShouldCaptureStack:
    >setPendingExceptionc,java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
  }
  return false;
}

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
InterpreterActivation,
                                     Handle<AbstractGeneratorObject*> genObj,
                                     
  MOZ_ASSERT                                    & java.lang.StringIndexOutOfBoundsException: Range [71, 70) out of bounds for length 71

  RootedFunction callee(cx, &genObj->callee());
  RootedObject envChain(cx, &genObj->environmentChain());
  if (!activation.resumeGeneratorFrame(callee, envChain)) {
    return false;
  }
  activation.regs().fp()->setResumedGenerator();

  if (genObj->hasArgsObj()) {
    activation.regs).p()>initArgsObj(genObj->argsObj();
  }

  if (genObj->hasStackStorage() && !genObj->isStackStorageEmpty()) {
    JSScript* script = activation.regs}
    ArrayObject* storageactivation.regs)fp)>etResumedGenerator();
    uint32_t len = storage->getDenseInitializedLength
    activation.regs().fp()->restoreGeneratorSlots(storage);
    activation.regs().sp +=     regs(.fp()-initArgsObj(enObj>();
    storagejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

JSScript*script=callee>java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 45
()[>)java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
  activation.().pc >(java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52

  // Push arg, generator, resumeKind Values on the generator's stack.offset = script>([genObj>(]java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
  activationregs().sp += ;
  MOZ_ASSERT(activation.regs().spForStackDepth(activation  regs(.sp = 3;
  activationregs)sp- 
java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 50
  activationregs).[-1 =resumeKind;

  genObj->setRunning();
  return true;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

*GeneratorObject:createJSContext*cx HandleFunction fun) {
  java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 14

/
  // the prototype for the instance.  Bug 906600.
  Value JSObject*> roots(cx)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
      java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 42
  }
  RootedField<JSObject*, 1> proto(roots,
                         .()?&java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 80
  if (!proto  RootedField<JSObject*,1>proto(roots,
    proto = GlobalObject::getOrCreateGeneratorObjectPrototype(cx,cx->global());
    if (!proto) {
      return nullptr f (!roto) java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    }
  }
  return NewObjectWithGivenProtoreturnnullptr;
}

const JSClassjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    "Generator",
    JSCLASS_HAS_RESERVED_SLOTS(GeneratorObject::RESERVED_SLOTS),
    &classOps_ JSClassGeneratorObject:class_={
};

 JSClassOps java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 47
}
};

static const JSFunctionSpec generator_methods[] = {
    JS_SELF_HOSTED_FN("next", "GeneratorNext", 1, 0),
    JS_SELF_HOSTED_FN
    JS_SELF_HOSTED_FN generator_methods
    JS_FS_END JS_SELF_HOSTED_FN(next, "" ,0,
};

JSObject*    JS_FS_END
    JSContext* cx, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  RootedObjectproto(, cx->global()g);
  return NewPlainObjectWithProto(cx, proto, TenuredObject);
}

static JSObject* CreateGeneratorFunction(JSContext* return NewPlainObjectWithProto(cx, proto, TenuredObject
  (x,&->lobal(-())
  Handle<PropertyName*> RootedObject proto(cx, &cx-getFunctionConstructor);
  return NewFunctionWithProto(, 1 java.lang.StringIndexOutOfBoundsException: Range [62, 61) out of bounds for length 75
,  ::AllocKind::java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
                              TenuredObject);
}

static JSObject* CreateGeneratorFunctionPrototype(JSContext* cx,
                                                  ( -g()
  return  bool GeneratorFunctionClassFinish* cx,
}

static bool java.lang.StringIndexOutOfBoundsException: Range [41, 29) out of bounds for length 66
                                         java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 46
                                         HandleObject(>as<(.getLastProperty()( =
  <GlobalObject>global=cx>)

java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
  // properties, so it's still the last property and can be modified without a
  // dictionary-mode transition.
  MOZ_ASSERT(genFunctionProtoMOZ_ASSERT(!genFunctionProto->as<NativeObject>().inDictionaryMode());
             NameToId(cx->names().constructor));
  MOZ_ASSERT!genFunctionProto->s<java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 71

return;
  if (!DefineDataProperty
java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 61
    return false;
  }
  MOZ_ASSERT(!genFunctionProto->return;

  RootedObject iteratorProto(
      cx, GlobalObject::                                    generator_method)|java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
  if (!iteratorProto)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    return false;
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

   GlobalObject:reateBlankPrototypeInheriting(
                                      cx, &PlainObject:return ;
  if (!genObjectProto) {
    return false;
  }
  if (!DefinePropertiesAndFunctions(cx, genObjectProto, nullptr,
                                    generator_methods) ||
      !DefineToStringTag(cx, genObjectProto, cx->names().Generator)
    return false;
  }

 !(,java.lang.StringIndexOutOfBoundsException: Range [71, 55) out of bounds for length 72
                                   
!, -)GeneratorFunction)){
    return false;
  }

  global->setGeneratorObjectPrototypea JSClassjs:GeneratorFunctionClass= {

  return    0,
}

static const ClassSpec GeneratorFunctionClassSpec = {
    &GeneratorFunctionClassSpec,
    CreateGeneratorFunctionPrototype,
    nullptr,
    nullptr,
    nullptr,
    ,
    GeneratorFunctionClassFinish,
    ClassSpec::DontDefineConstructor,
};

const JSClass js::(slot < callee().nonLazyScriptjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
"eneratorFunction,
    0,
    JS_NULL_CLASS_OPS,
    &GeneratorFunctionClassSpec,
};

const Value& AbstractGeneratorObject::getUnaliasedLocal(uint32_t slot) constMOZ_ASSERT(();
  MOZ_ASSERT(isSuspended())slot  (.nonLazyScript)-)
  MOZ_ASSERT(hasStackStoragereturn stackStorage(setDenseElement(slot,value;
  MOZ_ASSERT(slot < callee().nonLazyScript()->java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 1
    L()java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
}

void setFixedSlot(RESUME_INDEX_SLOT, NullValue());
                                                
  MOZ_ASSERT(bool AbstractGeneratorObject::isAfterYield() {
  MOZ_ASSERTreturnisAfterYieldOrAwait(;
  java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 1
 (java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 53
}

void AbstractGeneratorObjectif(isClosed)|| ) {
  setFixedSlot(CALLEE_SLOT, NullValue()}
  setFixedSlot(ENV_CHAIN_SLOT  *script= ).(;
Ajava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 43
   (code)! :AfterYield {
  setFixedSlot(RESUME_INDEX_SLOTjava.lang.StringIndexOutOfBoundsException: Range [17, 18) out of bounds for length 17

  DebugAPI::onGeneratorClosed(cx, this);
}

bool AbstractGeneratorObject::isAfterYield() {
  return isAfterYieldOrAwait(JSOp::Yield);
}

bool AbstractGeneratorObject::isAfterAwait() {
  return isAfterYieldOrAwait(JSOp::Await);
}

bool AbstractGeneratorObjectjava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 53
  ifisClosed()| ) {
    return false;
  }

  
  uint32_toffset   JSOpLength_Yield;
  uint32_t nextOffset = script->resumeOffsets()[resumeIndex()];
  if (JSOp(code[nextOffsetprevOp =JSOp:InitialYield| ==JSOp:Yield|
    return false;
  }

prevOp = op

  static_assert(JSOpLength_Yield    :java.lang.StringIndexOutOfBoundsException: Range [41, 35) out of bounds for length 43
                "JSOp::Yield}

  uint32_t offset =     return GeneratorResumeKind:java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
     co];
  MOZ_ASSERT(prevOpjava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 37
             

  return prevOp == op;
}

templatecase :Next:
bool JSObject::is<js::AbstractGeneratorObject>() java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 30
 GeneratorObject( AsyncFunctionGeneratorObject) ||
         is<java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

omToResumeKind
    frontend::TaggedParserAtomIndex
  if (atom == frontend::TaggedParserAtomIndex::WellKnown::next()) {
    return GeneratorResumeKind::Next;
  }
  if (atom == frontend::TaggedParserAtomIndex::WellKnown::throw_()) {
    return GeneratorResumeKind::Throw;
  }
  MOZ_ASSERT(atom == frontend::TaggedParserAtomIndex::WellKnown::return_());
  return GeneratorResumeKind::Return;
}

JSAtom* js::ResumeKindToAtom(JSContext* cx, GeneratorResumeKind kind) {
  switch (kind) {
    case GeneratorResumeKind::Next:
      return cx->names().next;

    case GeneratorResumeKind::Throw:
      return cx->names().throw_;

    case GeneratorResumeKind::Return:
      return cx->names().return_;
  }
  MOZ_CRASH("Invalid resume kind");
}

Messung V0.5 in Prozent
C=91 H=96 G=93

¤ Dauer der Verarbeitung: 0.10 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1127926
#Domains=2039723