[pypy-svn] r68951 - in pypy/branch/avm/pypy/translator: avm1 avm2 avm2/tools avm2/tools/intrinsic avm2/tools/intrinsic/adobe/utils avm2/tools/intrinsic/authoring avm2/tools/intrinsic/flash/accessibility avm2/tools/intrinsic/flash/desktop avm2/tools/intrinsic/flash/display avm2/tools/intrinsic/flash/errors avm2/tools/intrinsic/flash/events avm2/tools/intrinsic/flash/external avm2/tools/intrinsic/flash/filters avm2/tools/intrinsic/flash/geom avm2/tools/intrinsic/flash/media avm2/tools/intrinsic/flash/net avm2/tools/intrinsic/flash/printing avm2/tools/intrinsic/flash/profiler avm2/tools/intrinsic/flash/sampler avm2/tools/intrinsic/flash/system avm2/tools/intrinsic/flash/text avm2/tools/intrinsic/flash/text/engine avm2/tools/intrinsic/flash/trace avm2/tools/intrinsic/flash/ui avm2/tools/intrinsic/flash/utils avm2/tools/intrinsic/flash/xml

magcius at codespeak.net magcius at codespeak.net
Wed Nov 4 00:49:13 CET 2009


Author: magcius
Date: Wed Nov  4 00:49:11 2009
New Revision: 68951

Removed:
   pypy/branch/avm/pypy/translator/avm2/tools/autopath.py
   pypy/branch/avm/pypy/translator/avm2/tools/intrgen.py
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/ArgumentError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Array.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Boolean.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Class.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Date.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/DefinitionError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Error.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/EvalError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Function.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Math.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Namespace.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Number.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Object.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/QName.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/RangeError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/ReferenceError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/RegExp.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/SecurityError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/String.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/SyntaxError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/TypeError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/URIError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/UninitializedError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/Vector.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/VerifyError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/XML.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/XMLList.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/adobe/utils/CustomActions.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/adobe/utils/ProductManager.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/adobe/utils/XMLUI.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/adobe/utils/package.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/arguments.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/authoring/authObject.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/accessibility/Accessibility.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/accessibility/AccessibilityImplementation.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/accessibility/AccessibilityProperties.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/desktop/Clipboard.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/desktop/ClipboardFormats.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/desktop/ClipboardTransferMode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/AVM1Movie.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ActionScriptVersion.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/Bitmap.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/BitmapData.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/BitmapDataChannel.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/BlendMode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/CapsStyle.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ColorCorrection.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ColorCorrectionSupport.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/DisplayObject.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/DisplayObjectContainer.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/FrameLabel.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GradientType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/Graphics.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsBitmapFill.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsEndFill.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsGradientFill.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsPath.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsPathCommand.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsPathWinding.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsShaderFill.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsSolidFill.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsStroke.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/GraphicsTrianglePath.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/IBitmapDrawable.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/IGraphicsData.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/IGraphicsFill.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/IGraphicsPath.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/IGraphicsStroke.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/InteractiveObject.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/InterpolationMethod.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/JointStyle.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/LineScaleMode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/Loader.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/LoaderInfo.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/MorphShape.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/MovieClip.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/PixelSnapping.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/SWFVersion.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/Scene.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/Shader.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ShaderData.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ShaderInput.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ShaderJob.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ShaderParameter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ShaderParameterType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/ShaderPrecision.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/Shape.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/SimpleButton.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/SpreadMethod.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/Sprite.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/Stage.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/StageAlign.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/StageDisplayState.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/StageQuality.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/StageScaleMode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/display/TriangleCulling.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/errors/EOFError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/errors/IOError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/errors/IllegalOperationError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/errors/InvalidSWFError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/errors/MemoryError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/errors/ScriptTimeoutError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/errors/StackOverflowError.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/ActivityEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/AsyncErrorEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/ContextMenuEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/DataEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/ErrorEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/Event.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/EventDispatcher.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/EventPhase.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/FocusEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/FullScreenEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/HTTPStatusEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/IEventDispatcher.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/IMEEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/IOErrorEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/KeyboardEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/MouseEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/NetFilterEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/NetStatusEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/ProgressEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/SampleDataEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/SecurityErrorEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/ShaderEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/StatusEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/SyncEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/TextEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/TimerEvent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/WeakFunctionClosure.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/events/WeakMethodClosure.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/external/ExternalInterface.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/BevelFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/BitmapFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/BitmapFilterQuality.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/BitmapFilterType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/BlurFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/ColorMatrixFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/ConvolutionFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/DisplacementMapFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/DisplacementMapFilterMode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/DropShadowFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/GlowFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/GradientBevelFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/GradientGlowFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/filters/ShaderFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/ColorTransform.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/Matrix.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/Matrix3D.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/Orientation3D.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/PerspectiveProjection.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/Point.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/Rectangle.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/Transform.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/Utils3D.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/geom/Vector3D.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/Camera.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/ID3Info.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/Microphone.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/Sound.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/SoundChannel.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/SoundCodec.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/SoundLoaderContext.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/SoundMixer.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/SoundTransform.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/Video.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/media/package.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/DynamicPropertyOutput.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/FileFilter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/FileReference.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/FileReferenceList.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/IDynamicPropertyOutput.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/IDynamicPropertyWriter.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/LocalConnection.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/NetConnection.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/NetStream.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/NetStreamInfo.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/NetStreamPlayOptions.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/NetStreamPlayTransitions.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/ObjectEncoding.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/Responder.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/SharedObject.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/SharedObjectFlushStatus.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/Socket.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/URLLoader.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/URLLoaderDataFormat.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/URLRequest.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/URLRequestHeader.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/URLRequestMethod.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/URLStream.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/URLVariables.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/XMLSocket.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/net/package.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/printing/PrintJob.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/printing/PrintJobOptions.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/printing/PrintJobOrientation.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/profiler/package.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/sampler/DeleteObjectSample.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/sampler/NewObjectSample.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/sampler/Sample.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/sampler/StackFrame.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/sampler/package.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/ApplicationDomain.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/Capabilities.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/FSCommand.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/IME.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/IMEConversionMode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/JPEGLoaderContext.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/LoaderContext.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/Security.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/SecurityDomain.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/SecurityPanel.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/System.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/system/package.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/AntiAliasType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/CSMSettings.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/Font.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/FontStyle.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/FontType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/GridFitType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/StaticText.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/StyleSheet.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextColorType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextDisplayMode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextExtent.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextField.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextFieldAutoSize.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextFieldType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextFormat.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextFormatAlign.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextFormatDisplay.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextLineMetrics.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextRenderer.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextRun.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/TextSnapshot.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/BreakOpportunity.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/CFFHinting.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/ContentElement.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/DigitCase.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/DigitWidth.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/EastAsianJustifier.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/ElementFormat.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/FontDescription.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/FontLookup.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/FontMetrics.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/FontPosture.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/FontWeight.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/GraphicElement.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/GroupElement.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/JustificationStyle.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/Kerning.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/LigatureLevel.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/LineJustification.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/RenderingMode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/SpaceJustifier.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TabAlignment.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TabStop.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextBaseline.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextBlock.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextElement.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextJustifier.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextLine.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextLineCreationResult.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextLineMirrorRegion.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextLineValidity.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TextRotation.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/text/engine/TypographicCase.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/trace/Trace.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/ui/ContextMenu.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/ui/ContextMenuBuiltInItems.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/ui/ContextMenuClipboardItems.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/ui/ContextMenuItem.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/ui/KeyLocation.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/ui/Keyboard.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/ui/Mouse.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/ui/MouseCursor.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/ByteArray.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/Dictionary.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/Endian.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/IDataInput.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/IDataOutput.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/IExternalizable.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/ObjectInput.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/ObjectOutput.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/Proxy.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/SetIntervalTimer.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/Timer.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/utils/package.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/xml/XMLDocument.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/xml/XMLNode.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/xml/XMLNodeType.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/xml/XMLParser.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/flash/xml/XMLTag.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/int.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/toplevel.as
   pypy/branch/avm/pypy/translator/avm2/tools/intrinsic/uint.as
Modified:
   pypy/branch/avm/pypy/translator/avm1/tags.py
   pypy/branch/avm/pypy/translator/avm2/abc.py
   pypy/branch/avm/pypy/translator/avm2/assembler.py
   pypy/branch/avm/pypy/translator/avm2/avm2gen.py
   pypy/branch/avm/pypy/translator/avm2/constants.py
   pypy/branch/avm/pypy/translator/avm2/database.py
   pypy/branch/avm/pypy/translator/avm2/instructions.py
   pypy/branch/avm/pypy/translator/avm2/query.py
   pypy/branch/avm/pypy/translator/avm2/runtime.py
   pypy/branch/avm/pypy/translator/avm2/traits.py
   pypy/branch/avm/pypy/translator/avm2/types.py
Log:
More AVM2 work.

Modified: pypy/branch/avm/pypy/translator/avm1/tags.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm1/tags.py	(original)
+++ pypy/branch/avm/pypy/translator/avm1/tags.py	Wed Nov  4 00:49:11 2009
@@ -4,6 +4,7 @@
 from pypy.translator.avm1.records import RecordHeader, ShapeWithStyle, Matrix, CXForm
 from pypy.translator.avm1.avm1 import Block
 from pypy.translator.avm1.util import BitStream
+from pypy.translator.avm2.abc import AbcFile
 
 next_character_id = 1
 
@@ -40,6 +41,19 @@
 
     def serialize_data(self):
         return Block.serialize(self)
+
+class DoABC(SwfTag, AbcFile):
+
+    TAG_TYPE = 82
+    TAG_MIN_VERSION = 9
+
+    def __init__(self, name="PyPy", flags=0):
+        AbcFile.__init__(self)
+        self.name  = name
+        self.flags = flags
+    
+    def serialize_data(self):
+        return struct.pack("<L", self.flags) + self.name + "\0" + AbcFile.serialize(self)
     
 class DefineShape(SwfTag):
 

Modified: pypy/branch/avm/pypy/translator/avm2/abc.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/abc.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/abc.py	Wed Nov  4 00:49:11 2009
@@ -51,7 +51,7 @@
 
 class AbcMethodInfo(object):
 
-    def __init__(self, name, param_types, return_type, flags, options=None, param_names=None):
+    def __init__(self, name, param_types, return_type, flags=0, options=None, param_names=None):
         self.name = name
         self._name_index = None
         
@@ -221,10 +221,10 @@
 
         return code
     
-    def write_to_file(self, abc):
+    def write_to_abc(self, abc):
         self._cinit_index = abc.methods.index_for(self.cinit)
         for trait in self.traits:
-            trait.write_to_file(abc)
+            trait.write_to_abc(abc)
 
     def write_to_pool(self, pool):
         for trait in self.traits:
@@ -248,10 +248,10 @@
 
         return code
     
-    def write_to_file(self, abc):
+    def write_to_abc(self, abc):
         self._init_index = abc.methods.index_for(self.init)
         for trait in self.traits:
-            trait.write_to_file(abc)
+            trait.write_to_abc(abc)
 
     def write_to_pool(self, pool):
         for trait in self.traits:
@@ -287,10 +287,10 @@
 
         return code
 
-    def write_to_file(self, abc):
+    def write_to_abc(self, abc):
         self._method_info_index = abc.methods.index_for(self.methodinfo)
         for trait in self.traits:
-            trait.write_to_file(abc)
+            trait.write_to_abc(abc)
 
     def write_to_pool(self, pool):
         for trait in self.traits:

Modified: pypy/branch/avm/pypy/translator/avm2/assembler.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/assembler.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/assembler.py	Wed Nov  4 00:49:11 2009
@@ -25,7 +25,7 @@
         instruction.set_assembler_props(self)
         self.code += instruction.serialize()
         
-    def add_instructions(self, *instructions):
+    def add_instructions(self, instructions):
         for i in instructions:
             self.add_instruction(i)
     

Modified: pypy/branch/avm/pypy/translator/avm2/avm2gen.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/avm2gen.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/avm2gen.py	Wed Nov  4 00:49:11 2009
@@ -4,44 +4,171 @@
 
 from pypy.objspace.flow import model as flowmodel
 from pypy.rpython.ootypesystem import ootype
-from pypy.translator.avm2 import constants, instructions, assembler
-from pypy.translator.oosupport.treebuilder import SubOperation
-from pypy.translator.oosupport.metavm import Generator as OOGenerator
+from pypy.translator.avm2 import assembler, constants, instructions, abc, types
+# from pypy.translator.oosupport.treebuilder import SubOperation
+from pypy.translator.oosupport.metavm import Generator
 from pypy.translator.oosupport.constant import push_constant
 from collections import namedtuple
 from itertools import chain
 
-Scope = namedtuple("Scope", "block parent registers namespaces")
+class GlobalContext(object):
+    CONTEXT_TYPE = "global"
+    parent = None
 
-_vec_qname = constants.QName("Vector", constants.Namespace(constants.PACKAGE_NAMESPACE, "__AS3__.vec"))
-_str_qname = constants.QName("String")
-_arr_qname = constants.QName("Array")
+    def __init__(self, gen):
+        self.gen = gen
+    
+    def new_script(self):
+        return ScriptContext(self)
+
+class ScriptContext(object):
+    CONTEXT_TYPE = "script"
+
+    def __init__(self, gen, parent):
+        self.gen, self.parent = gen, parent
+    
+    def init(self):
+        self.init = abc.AbcMethodInfo("$init", [], constants.QName("void"))
+        ctx = MethodContext(self.gen, self.init, self)
+        self.gen.enter_context(ctx)
+        
+    def exit(self):
+        assert self.parent.CONTEXT_TYPE == "global"
+        self.gen.abc.scripts.index_for(abc.AbcScriptInfo(self.init._info_index))
+        return self.parent
+
+class ClassContext(object):
+    CONTEXT_TYPE = "class"
+
+    def __init__(self, gen, name, super_name, parent):
+        self.gen, self.name, self.super_name, self.parent = gen, name, super_name, parent
+        self.methods = []
+        self.static  = []
+        self.instance_traits = []
+        self.static_traits   = []
+
+    def cinit(self):
+        self.cinit = abc.AbcMethodInfo("$cinit", [], constants.QName("*"))
+        ctx = MethodContext(self.gen, self.cinit, self)
+        self.gen.enter_context(ctx)
+        
+        self.gen.I(instructions.getlocal(0))
+        self.gen.I(instructions.pushscope())
+
+    def iinit(self, params):
+        self.iinit = abc.AbcMethodInfo("$construct", [p.multiname() for n, p in params], constants.QName("*"))
+        ctx = MethodContext(self.gen, self.iinit, self, len(params))
+
+        # constructor prologoue
+        self.gen.enter_context(ctx)
+        self.gen.I(instructions.getlocal(0))
+        self.gen.I(instructions.pushscope())
+
+    def new_method(self, name, params, rettype, static=None):
+        meth = abc.AbcMethodInfo(name, [p.multiname() for n, p in params], rettype.multiname())
+        self.methods.append(meth)
+        self.enter_context(MethodContext(self.gen, meth, self, len(params)))
+
+    def add_instance_trait(self, trait):
+        self.instance_traits.append(trait)
+
+    def add_static_trait(self, trait):
+        self.static_traits.append(trait)
+    
+    def exit(self):
+        assert self.parent.CONTEXT_TYPE == "script"
+        self.instance = abc.AbcInstanceInfo(self.name, self.iinit, traits=self.instance_traits, super_name=self.super_name)
+        self.classobj = abc.AbcClassInfo(self.cinit, traits=self.static_traits)
+        self.gen.abc.instances.index_for(self.instance)
+        self.gen.abc.classes.index_for(self.classobj)
+        return self.parent
+        
+class MethodContext(object):
+    CONTEXT_TYPE = "method"
+    
+    def __init__(self, gen, method, parent, num_params):
+        self.gen, self.method, self.parent = gen, method, parent
+        self.asm = assembler.Avm2CodeAssembler(gen.constants, 1+num_params)
+        self.acv_traits = []
+
+    def exit(self):
+        self.asm.add(instructions.returnvoid())
+        self._info_index = self.gen.abc.methods.index_for(self.method)
+        self.gen.abc.bodies.index_for(abc.AbcMethodBodyInfo(self.method, self.asm, self.acv_traits))
+        return self.parent
+
+    def add_activation_trait(self, trait):
+        self.acv_traits.append(trait)
+    
+    def add_instructions(self, *instructions):
+        self.asm.add(instructions)
+
+    def next_free_local(self):
+        return self.asm.next_free_local()
+
+    def set_local(self, index):
+        return self.asm.set_local(index)
 
-class Avm2ilasm(OOGenerator):
+    def kill_local(self, index):
+        return self.asm.kill_local(index)
+
+Context = namedtuple("Context", "asm body method parent registers")
+
+class Avm2ilasm(Generator):
     """ AVM2 'assembler' generator routines """
-    def __init__(self, asm):
-        self.scope = Scope(asm, None, constants.ValuePool("this"), [constants.PACKAGE_NAMESPACE, constants.PRIVATE_NAMESPACE])
+    def __init__(self, db):
+        # self.scope = Scope(asm, None, constants.ValuePool("this"), [constants.PACKAGE_NAMESPACE, constants.PRIVATE_NAMESPACE])
         self.constants = constants.AbcConstantPool()
+        self.abc = abc.AbcFile(self.constants)
+        self.context = GlobalContext(self)
+        #self.script0 = abc.AbcMethodInfo("$init", constants.QName("void"))
+        #self.context = Context(assembler.Avm2CodeAssembler(self.constants), None, constants.ValuePool())
         
     def I(self, *instructions):
-        self.scope.block.add(instructions)
-    
-    @property
-    def current_namespaces(self):
-        context = self.scope
-        namespaces = []
-        while context is not None:
-            namespaces += context.namespaces
-            context = context.parent
-        return namespaces
+        assert self.context.CONTEXT_TYPE == "method"
+        self.context.add_instructions(instructions)
+
+    def M(self, multiname):
+        return self.constants.multiname_pool.index_for(multiname)
+
+    def SL(self, index=None):
+        assert self.context.CONTEXT_TYPE == "method"
+        if index is None:
+            index = self.context.next_free_local()
+        self.context.set_local(index)
+        self.I(instructions.setlocal(index))
+        return index
+
+    def KL(self, index):
+        assert self.context.CONTEXT_TYPE == "method"
+        self.context.kill_local(index)
+
+    def begin_class(self, qname):
+        pass
+
+    # @property
+    # def current_namespaces(self):
+    #     context = self.scope
+    #     namespaces = []
+    #     while context is not None:
+    #         namespaces += context.namespaces
+    #         context = context.parent
+    #     return namespaces
         
-    def enter_scope(self, block, registers=['this']):
-        self.scope = Scope(block, self.scope, registers)
+    def enter_context(self, ctx):
+        self.context = ctx
 
-    def exit_scope(self):
-        s = self.scope
-        self.scope = self.scope.parent
-        return s.block
+    def exit_context(self):
+        ctx = self.context
+        self.context = self.context.exit()
+        return ctx.block
+
+    def current_class(self):
+        context = self.context
+        while context is not None:
+            if context.CONTEXT_TYPE == "class":
+                return context
+            context = context.parent
     
     @property
     def registers(self):
@@ -59,11 +186,8 @@
     def emit(self, instr, *args):
         self.I(instructions.INSTRUCTIONS[instr](*args))
 
-    def load(self, v):
-        if hasattr(v, "__iter__") and not isinstance(v, basestring):
-            for i in v:
-                self.load(i)
-        elif isinstance(v, flowmodel.Variable):
+    def load(self, v, *args):
+        if isinstance(v, flowmodel.Variable):
             if v.concretetype is ootype.Void:
                 return # ignore it
             else:
@@ -73,27 +197,41 @@
         else:
             self.push_const(v)
 
+        for i in args:
+            self.load(i)
+
     def store_var(self, v):
-        self.I(instrucitons.setlocal(self.registers.index_for(v)))
+        self.I(instructions.setlocal(self.registers.index_for(v)))
 
     def store_local(self, v):
         self.store_var(v.name)
 
     def call_oostring(self, OOTYPE):
-        self.I(instructions.findpropstrict(_str_qname))
+        self.I(instructions.findpropstrict(self.M(types._str_qname)))
         self.swap()
-        self.I(instructions.callproperty(_str_qname, 1))
+        self.I(instructions.callproperty(self.M(types._str_qname), 1))
         
     call_oounicode = call_oostring
 
+    def call_this_const(self, name):
+        self.I(instructions.getlocal0())
+        self.I(instructions)
+
+    def newarray(self, TYPE, length=1):
+        self.I(instructions.getlex(self.M(types._arr_qname)))
+        self.push_const(length)
+        self.I(instructions.construct(1))
+
     def oonewarray(self, TYPE, length=1):
-        self.I(instructions.findpropstrict(_arr_qname))
+        self.I(instructions.getlex(self.M(types._vec_qname)))
+        self.load(TYPE)
+        self.I(instructions.applytype(1))
         self.push_const(length)
-        self.I(instructions.callproperty(_arr_qname, 1))
+        self.I(instructions.coerce(self.M(constants.TypeName(
+                        types._vec_qname, self.cts.lltype_to_cts(TYPE).multiname()))))
+        self.I(instructions.construct(1))
 
-    def oonewvector(self, TYPE, length=1):
-        self.I(instructions.findpropstrict(_vec_qname))
-        self.push_const(
+    # def initvector(self, TYPE, 
     
     def push_this(self):
         self.I(instructions.getlocal(0))
@@ -142,9 +280,12 @@
             self.push_const(value)
 
     def init_array(self, members=[]):
-        self.load(members)
+        self.load(*members)
         self.I(instructions.newarray(len(members)))
 
     def init_object(self, members={}):
-        self.load(chain(*members.items()))
+        self.load(*chain(*members.items()))
         self.I(instructions.newobject(len(members)))
+
+    def init_vector(self, members=[]):
+        self.load()

Modified: pypy/branch/avm/pypy/translator/avm2/constants.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/constants.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/constants.py	Wed Nov  4 00:49:11 2009
@@ -185,8 +185,10 @@
 
 PACKAGE_NAMESPACE = Namespace(TYPE_NAMESPACE_PackageNamespace, "")
 PRIVATE_NAMESPACE = Namespace(TYPE_NAMESPACE_PrivateNamespace, "private")
+AS3_NAMESPACE     = Namespace(TYPE_NAMESPACE_Namespace, "http://adobe.com/AS3/2006/builtin")
 
 NO_NAMESPACE_SET = NamespaceSet()
+METHOD_NAMESPACE_SET = NamespaceSet(AS3_NAMESPACE, NO_NAMESPACE, PRIVATE_NAMESPACE)
 
 # ======================================
 # Multinames

Modified: pypy/branch/avm/pypy/translator/avm2/database.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/database.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/database.py	Wed Nov  4 00:49:11 2009
@@ -1,6 +1,7 @@
 #from pypy.translator.avm.class_ import Class
 from pypy.rpython.ootypesystem import ootype
 from pypy.translator.cli.support import Counter
+from pypy.translator.avm2 import runtime, types, class_ as c
 from pypy.translator.oosupport.database import Database as OODatabase
 
 try:
@@ -17,11 +18,23 @@
         self.methods = {} # graph --> method_name
         self.consts = {}  # value --> AbstractConst
         self.delegates = {} # StaticMethod --> type_name
+        self.recordnames = {} # RECORD --> name
         self.const_count = Counter() # store statistics about constants
 
     def next_count(self):
         return self.unique()
 
+    def _default_record_name(self, RECORD):
+        trans = string.maketrans('[]<>(), :', '_________')
+        name = ['Record']
+        # XXX: refactor this: we need a proper way to ensure unique names
+        for f_name, (FIELD_TYPE, f_default) in RECORD._fields.iteritems():
+            type_name = FIELD_TYPE._short_name().translate(trans)
+            name.append(f_name)
+            name.append(type_name)
+            
+        return '__'.join(name)
+
     def _default_class_name(self, INSTANCE):
         parts = INSTANCE._name.rsplit('.', 1)
         if len(parts) == 2:
@@ -37,26 +50,38 @@
         self.pending_node(function)
         return function.get_name()
 
-    # def pending_class(self, INSTANCE):
-    #     try:
-    #         return self.classes[INSTANCE]
-    #     except KeyError:
-    #         pass
+    def pending_record(self, RECORD):
+        try:
+            return self.recordnames[RECORD]
+        except KeyError:
+            pass
+        name = self._default_record_name(RECORD)
+        name = self.get_unique_class_name(None, name)
+        self.recordnames[RECORD] = name
+        r = Record(self, RECORD, name)
+        self.pending_node(r)
+        return name
+
+    def pending_class(self, INSTANCE):
+        try:
+            return self.classes[INSTANCE]
+        except KeyError:
+            pass
         
-    #     if isinstance(INSTANCE, dotnet.NativeInstance):
-    #         self.classes[INSTANCE] = INSTANCE._name
-    #         return INSTANCE._name
-    #     else:
-    #         namespace, name = self._default_class_name(INSTANCE)
-    #         name = self.get_unique_class_name(namespace, name)
-    #         if namespace is None:
-    #             full_name = name
-    #         else:
-    #             full_name = '%s.%s' % (namespace, name)
-    #         self.classes[INSTANCE] = full_name
-    #         cls = Class(self, INSTANCE, namespace, name)
-    #         self.pending_node(cls)
-    #         return full_name
+        if isinstance(INSTANCE, runtime.NativeInstance):
+            self.classes[INSTANCE] = INSTANCE._name
+            return INSTANCE._name
+        else:
+            namespace, name = self._default_class_name(INSTANCE)
+            name = self.get_unique_class_name(namespace, name)
+            if namespace is None:
+                full_name = name
+            else:
+                full_name = '%s::%s' % (namespace, name)
+            self.classes[INSTANCE] = full_name
+            cls = c.Class(self, INSTANCE, namespace, name)
+            self.pending_node(cls)
+            return full_name
 
     def record_function(self, graph, name):
         self.functions[graph] = name
@@ -70,13 +95,13 @@
         i = 0
         while (namespace, name) in self.classnames:
             name = '%s_%d' % (base_name, i)
-            i+= 1
+            i += 1
         self.classnames.add((namespace, name))            
         return name
 
     def class_name(self, INSTANCE):
-        #if INSTANCE is ootype.ROOT:
-        #    return types.object.classname()
+        if INSTANCE is ootype.ROOT:
+            return types.types.object.classname()
         try:
             NATIVE_INSTANCE = INSTANCE._hints['NATIVE_INSTANCE']
             return NATIVE_INSTANCE._name

Modified: pypy/branch/avm/pypy/translator/avm2/instructions.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/instructions.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/instructions.py	Wed Nov  4 00:49:11 2009
@@ -230,6 +230,11 @@
 class _Avm2CallMNVoid(_Avm2CallMN):
       is_void = True
 
+class _Avm2ApplyType(_Avm2U30Instruction):
+      @needs_specialized
+      def _set_assembler_props(self, asm):
+            asm.stack_depth += 1 - self.argument
+
 class _Avm2NewArray(_Avm2U30Instruction):
       @needs_specialized
       def _set_assembler_props(self, asm):
@@ -383,6 +388,7 @@
 #{ Instructions that push/pop values to the stack (depends on arg) and take one U30 argument.
 newarray = _Avm2NewArray(0x56, 'newarray')
 newobject = _Avm2NewObject(0x55, 'newobject')
+applytype = _Avm2ApplyType(0x53, 'applytype')
 #}
 
 #{ Instructions that take one U8 argument.

Modified: pypy/branch/avm/pypy/translator/avm2/query.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/query.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/query.py	Wed Nov  4 00:49:11 2009
@@ -171,8 +171,8 @@
     def group_methods(self, methods, overload, meth, Meth):
         from pypy.translator.avm2.runtime import OverloadingResolver
         groups = {}
-        for name, args, result in methods:
-            groups.setdefault(name, []).append((args, result))
+        for name, args, result, AS3 in methods:
+            groups[name] = args, result, AS3
 
         res = {}
         attrs = dict(resolver=OverloadingResolver)

Modified: pypy/branch/avm/pypy/translator/avm2/runtime.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/runtime.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/runtime.py	Wed Nov  4 00:49:11 2009
@@ -6,7 +6,7 @@
 # from pypy.annotation.unaryop import immutablevalue
 # from pypy.annotation.binaryop import _make_none_union
 from pypy.annotation import model as annmodel
-from pypy.rlib.rarithmetic import r_uint, r_longlong, r_ulonglong
+# from pypy.rlib.rarithmetic import r_uint, r_longlong, r_ulonglong
 from pypy.rpython.error import TyperError
 from pypy.rpython.extregistry import ExtRegistryEntry
 from pypy.rpython.rmodel import Repr
@@ -14,7 +14,7 @@
 from pypy.rpython.ootypesystem.rootype import OOInstanceRepr
 from pypy.rpython.ootypesystem import ootype
 from pypy.rpython.ootypesystem.ootype import Meth, StaticMethod
-from pypy.translator.avm2 import constants
+# from pypy.translator.avm2 import constants
 
 ## Annotation model
 
@@ -234,23 +234,6 @@
         #assert ARGS == self._TYPE.ARGS
         return self
 
-
-class _overloaded_static_meth(object):
-    def __init__(self, *overloadings, **attrs):
-        resolver = attrs.pop('resolver', OverloadingResolver)
-        assert not attrs
-        self._resolver = resolver(overloadings)
-
-    def _set_attrs(self, cls, name):
-        for meth in self._resolver.overloadings:
-            meth._set_attrs(cls, name)
-
-    def _get_desc(self, ARGS):
-        meth = self._resolver.resolve(ARGS)
-        assert isinstance(meth, _static_meth)
-        return meth._get_desc(ARGS)
-
-
 class NativeInstance(ootype.Instance):
     def __init__(self, namespace, name, superclass,
                  fields={}, methods={}, _is_root=False, _hints = {}):
@@ -529,7 +512,7 @@
     def specialize_call(self, hop):
         c_type, v_length = hop.inputargs(*hop.args_r)
         hop.exception_cannot_occur()
-        return hop.genop('newvector', [c_type, v_length], hop.r_result.lowleveltype)
+        return hop.genop('avm2_newvector', [c_type, v_length], hop.r_result.lowleveltype)
 
 
 class Entry(ExtRegistryEntry):
@@ -552,10 +535,7 @@
         c_type, v_elems = vlist[0], vlist[1:]
         c_length = hop.inputconst(ootype.Signed, len(v_elems))
         hop.exception_cannot_occur()
-        v_array = hop.genop('newvector', [c_type, c_length], hop.r_result.lowleveltype)
-        #for i, v_elem in enumerate(v_elems):
-        #    c_index = hop.inputconst(ootype.Signed, i)
-        #    hop.genop('cli_setelem', [v_array, c_index, v_elem], ootype.Void)
+        v_array = hop.genop('avm2_initvector', [c_type, v_elems], hop.r_result.lowleveltype)
         return v_array
 
 # def typeof(Class_or_type):

Modified: pypy/branch/avm/pypy/translator/avm2/traits.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/traits.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/traits.py	Wed Nov  4 00:49:11 2009
@@ -127,8 +127,8 @@
         self.function = function
         self._function_index = None
 
-    def write_to_file(self, abc):
-        super(AbcFunctionTrait, self).write_to_file(abc)
+    def write_to_abc(self, abc):
+        super(AbcFunctionTrait, self).write_to_abc(abc)
         self._function_index = abc.methods.index_for(func)
 
     @property
@@ -144,8 +144,8 @@
         self.method = method
         self._method_index = None
 
-    def write_to_file(self, abc):
-        super(AbcMethodTrait, self).write_to_file(abc)
+    def write_to_abc(self, abc):
+        super(AbcMethodTrait, self).write_to_abc(abc)
         self._method_index = abc.methods.index_for(self.method)
 
     @property

Modified: pypy/branch/avm/pypy/translator/avm2/types.py
==============================================================================
--- pypy/branch/avm/pypy/translator/avm2/types.py	(original)
+++ pypy/branch/avm/pypy/translator/avm2/types.py	Wed Nov  4 00:49:11 2009
@@ -12,7 +12,11 @@
 
 from pypy.tool.ansi_print import ansi_log
 
-class NativeType(object):
+_vec_qname = constants.QName("Vector", constants.Namespace(constants.PACKAGE_NAMESPACE, "__AS3__.vec"))
+_str_qname = constants.QName("String")
+_arr_qname = constants.QName("Array")
+
+class Avm2Type(object):
     def typename(self):
         raise NotImplementedError
 
@@ -29,125 +33,85 @@
         return self.typename() != other.typename()
 
 
-class NativePrimitiveType(NativeType):
+class Avm2PrimitiveType(Avm2Type):
     def __init__(self, name):
         self.name = name
 
     def typename(self):
         return self.name
 
-
-# class NativeReferenceType(NativeType):
-#     prefix = 'class '
+    def multiname(self):
+        return constants.QName(self.typename())
     
-#     def typename(self):
-#         return self.prefix + self.classname()
 
-#     def classname(self):
-#         raise NotImplementedError
-
-class NativeClassType(NativeReferenceType):
-    def __init__(self, assembly, name):
-        self.name = name
+class Avm2NamespacedType(Avm2Type):
+    nstype = constants.TYPE_NAMESPACE_Namespace
+    
+    def __init__(self, name, namespace=''):
+        if '::' in name and namespace == '':
+            self.ns, self.name = name.rsplit('::', 1)
+        else:
+            self.name = name
+            self.ns = namespace
+    
+    def typename(self):
+        return "%s::%s" % (self.ns, self.name)
+    
+    def classname(self):
+        raise NotImplementedError
 
-    def avm2constant(self):
-        constants.
+    def mutliname(self):
+        return constants.QName(self.name, constants.Namespace(self.nstype, self.ns))
 
-class CliValueType(NativeClassType):
-    prefix = 'valuetype '
+class Avm2PackagedType(Avm2NamespacedType):
+    nstype = constants.TYPE_NAMESPACE_PackageNamespace
 
-class NativeGenericType(NativeReferenceType):
-    def __init__(self, assembly, name, numparam):
-        self.assembly = assembly
-        self.name = name
-        self.numparam = numparam
-
-    def classname(self):
-        paramtypes = [self.paramtype(i) for i in range(self.numparam)]
-        thistype = self.specialize(*paramtypes)
-        return thistype.classname()
-
-    def specialize(self, *types):
-        assert len(types) == self.numparam
-        return NativeSpecializedType(self, types)
-
-    def paramtype(self, num):
-        assert 0 <= num < self.numparam
-        return NativePrimitiveType('!%d' % num)
-
-class NativeSpecializedType(NativeReferenceType):
-    def __init__(self, generic_type, arg_types):
-        self.generic_type = generic_type
-        self.arg_types = arg_types
-
-    def avm2constant(self):
-        name = self.generic_type.name
-        numparam = self.generic_type.numparam
-        arglist = ', '.join([arg.typename() for arg in self.arg_types])
-
-class CliArrayType(CliType):
+class Avm2ArrayType(Avm2Type):
 
     def __init__(self, itemtype):
         self.itemtype = itemtype
 
-    def typename(self):
-        return '%s[]' % self.itemtype.typename()
-
+    def multiname(self):
+        return constants.TypeName(_vec_qname, itemtype)
 
-T = CliPrimitiveType
+T = Avm2PrimitiveType
+N = Avm2PackagedType
 class types:
-    void =    T('void')
-    int32 =   T('int32')
-    uint32 =  T('unsigned int32')
-    int64 =   T('int64')
-    uint64 =  T('unsigned int64')
-    bool =    T('bool')
-    float64 = T('float64')
-    char =    T('char')
-    string =  T('string')
-
-    weakref = CliClassType('pypylib', 'pypy.runtime.WeakReference')
-    type = CliClassType('mscorlib', 'System.Type')
-    object = CliClassType('mscorlib', 'System.Object')
-    list = CliGenericType('pypylib', 'pypy.runtime.List', 1)
-    list_of_void = CliClassType('pypylib', 'pypy.runtime.ListOfVoid')
-    dict = CliGenericType('pypylib', 'pypy.runtime.Dict', 2)
-    dict_void_void = CliClassType('pypylib', 'pypy.runtime.DictVoidVoid')
-    dict_items_iterator = CliGenericType('pypylib', 'pypy.runtime.DictItemsIterator', 2)
-    string_builder = CliClassType('pypylib', 'pypy.runtime.StringBuilder')
+    void   =  T('void')
+    int    =  T('int')
+    uint   =  T('uint')
+    bool   =  T('Boolean')
+    float  =  T('Number')
+    string =  T('String')
+
+    # weakref = CliClassType('pypylib', 'pypy.runtime.WeakReference')
+    type   =  T('Class')
+    object =  T('Object')
+    list   =  N('List', 'pypy.lib')
+    dict   =  N('Dict', 'pypy.lib')
+    sb     =  N('StringBuilder', 'pypy.lib')
 del T
 
-WEAKREF = types.weakref.classname()
-PYPY_DICT_OF_VOID = '[pypylib]pypy.runtime.DictOfVoid`2<%s, int32>'
-
-
 _lltype_to_cts = {
     ootype.Void: types.void,
-    ootype.Signed: types.int32,    
-    ootype.Unsigned: types.uint32,
-    ootype.SignedLongLong: types.int64,
-    ootype.UnsignedLongLong: types.uint64,
+    ootype.Signed: types.int,
+    ootype.Unsigned: types.uint,
+    ootype.SignedLongLong: types.int,
+    ootype.UnsignedLongLong: types.uint,
     ootype.Bool: types.bool,
-    ootype.Float: types.float64,
-    ootype.Char: types.char,
-    ootype.UniChar: types.char,
+    ootype.Float: types.float,
+    ootype.Char: types.string,
+    ootype.UniChar: types.string,
     ootype.Class: types.type,
     ootype.String: types.string,
-    ootype.StringBuilder: types.string_builder,
+    ootype.StringBuilder: types.sb,
     ootype.Unicode: types.string,
-    ootype.UnicodeBuilder: types.string_builder,
-    ootype.WeakReference: types.weakref,
+    ootype.UnicodeBuilder: types.sb,
 
     # maps generic types to their ordinal
     ootype.List.SELFTYPE_T: types.list,
-    ootype.List.ITEMTYPE_T: types.list.paramtype(0),
     ootype.Dict.SELFTYPE_T: types.dict,
-    ootype.Dict.KEYTYPE_T: types.dict.paramtype(0),
-    ootype.Dict.VALUETYPE_T: types.dict.paramtype(1),
-    ootype.DictItemsIterator.SELFTYPE_T: types.dict_items_iterator,
-    ootype.DictItemsIterator.KEYTYPE_T: types.dict_items_iterator.paramtype(0),
-    ootype.DictItemsIterator.VALUETYPE_T: types.dict_items_iterator.paramtype(1),
-    }
+}
 
 
 def _get_from_dict(d, key, error):
@@ -160,7 +124,7 @@
         else:
             assert False, error
 
-class CTS(object):
+class Avm2TypeSystem(object):
 
     def __init__(self, db):
         self.db = db
@@ -171,41 +135,24 @@
         elif isinstance(t, lltype.Ptr) and isinstance(t.TO, lltype.OpaqueType):
             return types.object
         elif isinstance(t, ootype.Instance):
-            if getattr(t, '_is_value_type', False):
-                cls = CliValueType
-            else:
-                cls = CliClassType
             NATIVE_INSTANCE = t._hints.get('NATIVE_INSTANCE', None)
             if NATIVE_INSTANCE:
-                return cls(None, NATIVE_INSTANCE._name)
+                return Avm2NamespacedClass(NATIVE_INSTANCE._name)
             else:
                 name = self.db.pending_class(t)
-                return cls(None, name)
+                return Avm2NamespacedClass(name)
         elif isinstance(t, ootype.Record):
             name = self.db.pending_record(t)
-            return CliClassType(None, name)
+            return Avm2NamespacedClass(name)
         elif isinstance(t, ootype.StaticMethod):
             delegate = self.db.record_delegate(t)
-            return CliClassType(None, delegate)
-        elif isinstance(t, ootype.Array):
-            item_type = self.lltype_to_cts(t.ITEM)
-            if item_type == types.void: # special case: Array of Void
-                return types.list_of_void
-            return CliArrayType(item_type)
-        elif isinstance(t, ootype.List):
+            return Avm2NamespacedClass(delegate)
+        elif isinstance(t, (ootype.Array, ootype.List)):
             item_type = self.lltype_to_cts(t.ITEM)
-            if item_type == types.void: # special case: List of Void
-                return types.list_of_void
             return types.list.specialize(item_type)
         elif isinstance(t, ootype.Dict):
             key_type = self.lltype_to_cts(t._KEYTYPE)
             value_type = self.lltype_to_cts(t._VALUETYPE)
-            if value_type == types.void: # special cases: Dict with voids
-                if key_type == types.void:
-                    return types.dict_void_void
-                else:
-                    # XXX
-                    return CliClassType(None, PYPY_DICT_OF_VOID % key_type)
             return types.dict.specialize(key_type, value_type)
         elif isinstance(t, ootype.DictItemsIterator):
             key_type = self.lltype_to_cts(t._KEYTYPE)
@@ -224,89 +171,89 @@
     def llconst_to_cts(self, const):
         return self.lltype_to_cts(const.concretetype), const.value
 
-    def ctor_name(self, t):
-        return 'instance void %s::.ctor()' % self.lltype_to_cts(t)
+    # def ctor_name(self, t):
+    #     return 'instance void %s::.ctor()' % self.lltype_to_cts(t)
 
-    def graph_to_signature(self, graph, is_method = False, func_name = None):
-        ret_type, ret_var = self.llvar_to_cts(graph.getreturnvar())
-        func_name = func_name or graph.name
-        func_name = self.escape_name(func_name)
-        namespace = getattr(graph.func, '_namespace_', None)
-        if namespace:
-            func_name = '%s::%s' % (namespace, func_name)
-
-        args = [arg for arg in graph.getargs() if arg.concretetype is not ootype.Void]
-        if is_method:
-            args = args[1:]
-
-        arg_types = [self.lltype_to_cts(arg.concretetype).typename() for arg in args]
-        arg_list = ', '.join(arg_types)
-
-        return '%s %s(%s)' % (ret_type, func_name, arg_list)
-
-    def op_to_signature(self, op, func_name):
-        ret_type, ret_var = self.llvar_to_cts(op.result)
-        func_name = self.escape_name(func_name)
-
-        args = [arg for arg in op.args[1:]
-                    if arg.concretetype is not ootype.Void]
-
-        arg_types = [self.lltype_to_cts(arg.concretetype).typename() for arg in args]
-        arg_list = ', '.join(arg_types)
-
-        return '%s %s(%s)' % (ret_type, func_name, arg_list)
-
-
-    def method_signature(self, TYPE, name_or_desc):
-        # TODO: use callvirt only when strictly necessary
-        if isinstance(TYPE, ootype.Instance):
-            if isinstance(name_or_desc, ootype._overloaded_meth_desc):
-                name = name_or_desc.name
-                METH = name_or_desc.TYPE
-                virtual = True
-            else:
-                name = name_or_desc
-                owner, meth = TYPE._lookup(name)
-                METH = meth._TYPE
-                virtual = getattr(meth, '_virtual', True)
-            class_name = self.db.class_name(TYPE)
-            full_name = 'class %s::%s' % (class_name, self.escape_name(name))
-            returntype = self.lltype_to_cts(METH.RESULT)
-            arg_types = [self.lltype_to_cts(ARG).typename() for ARG in METH.ARGS if ARG is not ootype.Void]
-            arg_list = ', '.join(arg_types)
-            return '%s %s(%s)' % (returntype, full_name, arg_list), virtual
-
-        elif isinstance(TYPE, (ootype.BuiltinType, ootype.StaticMethod)):
-            assert isinstance(name_or_desc, str)
-            name = name_or_desc
-            if isinstance(TYPE, ootype.StaticMethod):
-                METH = TYPE
-            else:
-                METH = oopspec.get_method(TYPE, name)
-            class_name = self.lltype_to_cts(TYPE)
-            if isinstance(TYPE, ootype.Dict):
-                KEY = TYPE._KEYTYPE
-                VALUE = TYPE._VALUETYPE
-                name = name_or_desc
-                if KEY is ootype.Void and VALUE is ootype.Void and name == 'll_get_items_iterator':
-                    # ugly, ugly special case
-                    ret_type = types.dict_items_iterator.specialize(types.int32, types.int32)
-                elif VALUE is ootype.Void and METH.RESULT is ootype.Dict.VALUETYPE_T:
-                    ret_type = types.void
-                else:
-                    ret_type = self.lltype_to_cts(METH.RESULT)
-                    ret_type = dict_of_void_ll_copy_hack(TYPE, ret_type)
-            else:
-                ret_type = self.lltype_to_cts(METH.RESULT)
-            generic_types = getattr(TYPE, '_generic_types', {})
-            arg_types = [self.lltype_to_cts(arg).typename() for arg in METH.ARGS if
-                         arg is not ootype.Void and \
-                         generic_types.get(arg, arg) is not ootype.Void]
-            arg_list = ', '.join(arg_types)
-            return '%s %s::%s(%s)' % (ret_type, class_name, name, arg_list), False
+    # def graph_to_signature(self, graph, is_method = False, func_name = None):
+    #     ret_type, ret_var = self.llvar_to_cts(graph.getreturnvar())
+    #     func_name = func_name or graph.name
+    #     func_name = self.escape_name(func_name)
+    #     namespace = getattr(graph.func, '_namespace_', None)
+    #     if namespace:
+    #         func_name = '%s::%s' % (namespace, func_name)
+
+    #     args = [arg for arg in graph.getargs() if arg.concretetype is not ootype.Void]
+    #     if is_method:
+    #         args = args[1:]
+
+    #     arg_types = [self.lltype_to_cts(arg.concretetype).typename() for arg in args]
+    #     arg_list = ', '.join(arg_types)
+
+    #     return '%s %s(%s)' % (ret_type, func_name, arg_list)
+
+    # def op_to_signature(self, op, func_name):
+    #     ret_type, ret_var = self.llvar_to_cts(op.result)
+    #     func_name = self.escape_name(func_name)
+
+    #     args = [arg for arg in op.args[1:]
+    #                 if arg.concretetype is not ootype.Void]
+
+    #     arg_types = [self.lltype_to_cts(arg.concretetype).typename() for arg in args]
+    #     arg_list = ', '.join(arg_types)
+
+    #     return '%s %s(%s)' % (ret_type, func_name, arg_list)
+
+
+    # def method_signature(self, TYPE, name_or_desc):
+    #     # TODO: use callvirt only when strictly necessary
+    #     if isinstance(TYPE, ootype.Instance):
+    #         if isinstance(name_or_desc, ootype._overloaded_meth_desc):
+    #             name = name_or_desc.name
+    #             METH = name_or_desc.TYPE
+    #             virtual = True
+    #         else:
+    #             name = name_or_desc
+    #             owner, meth = TYPE._lookup(name)
+    #             METH = meth._TYPE
+    #             virtual = getattr(meth, '_virtual', True)
+    #         class_name = self.db.class_name(TYPE)
+    #         full_name = 'class %s::%s' % (class_name, self.escape_name(name))
+    #         returntype = self.lltype_to_cts(METH.RESULT)
+    #         arg_types = [self.lltype_to_cts(ARG).typename() for ARG in METH.ARGS if ARG is not ootype.Void]
+    #         arg_list = ', '.join(arg_types)
+    #         return '%s %s(%s)' % (returntype, full_name, arg_list), virtual
+
+    #     elif isinstance(TYPE, (ootype.BuiltinType, ootype.StaticMethod)):
+    #         assert isinstance(name_or_desc, str)
+    #         name = name_or_desc
+    #         if isinstance(TYPE, ootype.StaticMethod):
+    #             METH = TYPE
+    #         else:
+    #             METH = oopspec.get_method(TYPE, name)
+    #         class_name = self.lltype_to_cts(TYPE)
+    #         if isinstance(TYPE, ootype.Dict):
+    #             KEY = TYPE._KEYTYPE
+    #             VALUE = TYPE._VALUETYPE
+    #             name = name_or_desc
+    #             if KEY is ootype.Void and VALUE is ootype.Void and name == 'll_get_items_iterator':
+    #                 # ugly, ugly special case
+    #                 ret_type = types.dict_items_iterator.specialize(types.int32, types.int32)
+    #             elif VALUE is ootype.Void and METH.RESULT is ootype.Dict.VALUETYPE_T:
+    #                 ret_type = types.void
+    #             else:
+    #                 ret_type = self.lltype_to_cts(METH.RESULT)
+    #                 ret_type = dict_of_void_ll_copy_hack(TYPE, ret_type)
+    #         else:
+    #             ret_type = self.lltype_to_cts(METH.RESULT)
+    #         generic_types = getattr(TYPE, '_generic_types', {})
+    #         arg_types = [self.lltype_to_cts(arg).typename() for arg in METH.ARGS if
+    #                      arg is not ootype.Void and \
+    #                      generic_types.get(arg, arg) is not ootype.Void]
+    #         arg_list = ', '.join(arg_types)
+    #         return '%s %s::%s(%s)' % (ret_type, class_name, name, arg_list), False
 
-        else:
-            assert False
+    #     else:
+    #         assert False
 
 def dict_of_void_ll_copy_hack(TYPE, ret_type):
     # XXX: ugly hack to make the ll_copy signature correct when



More information about the Pypy-commit mailing list