[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