version apha 9

AS3: Included new undocumented instructions, new Multiname kind - Typename
AS3: Export PCode
AS3: Implemented code for executing some instructions
Many bugfixes
This commit is contained in:
Jindra Petk
2011-07-02 18:29:59 +02:00
parent eaeaa19923
commit 34c819002c
39 changed files with 230 additions and 53 deletions

167
trunk/doc/avm2opcodes.htm Normal file
View File

@@ -0,0 +1,167 @@
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>Paste number 70938: complete AVM2 opcodes, from Tamarin sources.</title><link type="text/css" rel="stylesheet" href="avm2opcodes_soubory/lisppaste.css"><link rel="alternate" type="application/rss+xml" title="Lisppaste RSS" href="http://paste.lisp.org/list.rss"></head><body><div class="top-header">Paste number 70938: complete AVM2 opcodes, from Tamarin sources.</div><p></p><div><form accept-charset="utf-8" action="http://paste.lisp.org/new" method="post"></form><p></p><div><table class="paste-header"><tbody><tr><td align="left" nowrap="nowrap" width="0%">Paste number 70938: </td><td align="left" width="100%"><b>complete AVM2 opcodes, from Tamarin sources.</b></td></tr><tr><td align="left" nowrap="nowrap">Pasted by: </td><td align="left" width="100%">fusss</td></tr><tr><td>When:</td><td align="left" width="100%">2 years, 7 months ago</td></tr><tr><td>Share:</td><td align="left" width="100%"><a href="http://twitter.com/home?status=http%3A%2F%2Fpaste.lisp.org%2F%2B1IQI%20complete%20AVM2%20opcodes%2C%20from%20Tamarin%20sources.">Tweet this!</a> | <a href="http://paste.lisp.org/+1IQI">http://paste.lisp.org/+1IQI</a></td></tr><tr><td>Channel:</td><td align="left" width="100%"><a href="http://paste.lisp.org/list/lisp">#lisp</a></td></tr><tr><td align="left" nowrap="nowrap" valign="top">Paste contents:</td><td width="100%"><form accept-charset="utf-8" action="http://paste.lisp.org/display/70938/raw" method="post"><a href="http://paste.lisp.org/display/70938/raw">Raw Source</a> | <a href="http://paste.lisp.org/display/70938/xml">XML</a> | Display As <select name="type"><option selected="selected" value="text/plain">text/plain</option><option value="image/svg+xml">image/svg+xml</option><option value="text/html">text/html</option><option value="application/xhtml+xml">application/xhtml+xml</option></select><input value="OK" type="submit"></form></td></tr></tbody></table><pre class="paste-area"><span class="paste"><span class="comment">;; 160 opcodes. only 136 are in the avm2 docs.
</span>add:int = 0xA0
add_d:int = 0x9B
add_i:int = 0xC5
applytype:int = 0x53
astype:int = 0x86
astypelate:int = 0x87
bitand:int = 0xA8
bitnot:int = 0x97
bitor:int = 0xA9
bitxor:int = 0xAA
bkpt:int = 0x01
bkptline:int = 0xF2
call:int = 0x41
callinterface:int = 0x4D
callmethod:int = 0x43
callproperty:int = 0x46
callproplex:int = 0x4C
callpropvoid:int = 0x4F
callstatic:int = 0x44
callsuper:int = 0x45
callsuperid:int = 0x4B
callsupervoid:int = 0x4E
coerce:int = 0x80
coerce_a:int = 0x82
coerce_b:int = 0x81
coerce_d:int = 0x84
coerce_i:int = 0x83
coerce_o:int = 0x89
coerce_s:int = 0x85
coerce_u:int = 0x88
concat:int = 0x9A
construct:int = 0x42
constructprop:int = 0x4A
constructsuper:int = 0x49
convert_b:int = 0x76
convert_d:int = 0x75
convert_i:int = 0x73
convert_o:int = 0x77
convert_s:int = 0x70
convert_u:int = 0x74
debug:int = 0xEF
debugfile:int = 0xF1
debugline:int = 0xF0
declocal:int = 0x94
declocal_i:int = 0xC3
decrement:int = 0x93
decrement_i:int = 0xC1
deleteproperty:int = 0x6A
deletepropertylate:int = 0x6B
divide:int = 0xA3
dup:int = 0x2A
dxns:int = 0x06
dxnslate:int = 0x07
equals:int = 0xAB
esc_xattr:int = 0x72
esc_xelem:int = 0x71
finddef:int = 0x5F
findproperty:int = 0x5E
findpropstrict:int = 0x5D
getdescendants:int = 0x59
getglobalscope:int = 0x64
getglobalslot:int = 0x6E
getlex:int = 0x60
getlocal0:int = 0xD0
getlocal1:int = 0xD1
getlocal2:int = 0xD2
getlocal3:int = 0xD3
getlocal:int = 0x62
getouterscope:int = 0x67
getproperty:int = 0x66
getscopeobject:int = 0x65
getslot:int = 0x6C
getsuper:int = 0x04
greaterequals:int = 0xB0
greaterthan:int = 0xAF
hasnext2:int = 0x32
hasnext:int = 0x1F
ifeq:int = 0x13
iffalse:int = 0x12
ifge:int = 0x18
ifgt:int = 0x17
ifle:int = 0x16
iflt:int = 0x15
ifne:int = 0x14
ifnge:int = 0x0F
ifngt:int = 0x0E
ifnle:int = 0x0D
ifnlt:int = 0x0C
ifstricteq:int = 0x19
ifstrictne:int = 0x1A
iftrue:int = 0x11
in:int = 0xB4
inclocal:int = 0x92
inclocal_i:int = 0xC2
increment:int = 0x91
increment_i:int = 0xC0
initproperty:int = 0x68
instanceof:int = 0xB1
istype:int = 0xB2
istypelate:int = 0xB3
jump:int = 0x10
kill:int = 0x08
label:int = 0x09
lessequals:int = 0xAE
lessthan:int = 0xAD
lookupswitch:int = 0x1B
lshift:int = 0xA5
modulo:int = 0xA4
multiply:int = 0xA2
multiply_i:int = 0xC7
negate:int = 0x90
negate_i:int = 0xC4
newactivation:int = 0x57
newarray:int = 0x56
newcatch:int = 0x5A
newclass:int = 0x58
newfunction:int = 0x40
newobject:int = 0x55
nextname:int = 0x1E
nextvalue:int = 0x23
nop:int = 0x02
not:int = 0x96
pop:int = 0x29
popscope:int = 0x1D
pushbyte:int = 0x24
pushconstant:int = 0x22
pushdouble:int = 0x2F
pushfalse:int = 0x27
pushint:int = 0x2D
pushnamespace:int = 0x31
pushnan:int = 0x28
pushnull:int = 0x20
pushscope:int = 0x30
pushshort:int = 0x25
pushstring:int = 0x2C
pushtrue:int = 0x26
pushuint:int = 0x2E
pushundefined:int = 0x21
pushwith:int = 0x1C
returnvalue:int = 0x48
returnvoid:int = 0x47
rshift:int = 0xA6
setglobalslot:int = 0x6F
setlocal0:int = 0xD4
setlocal1:int = 0xD5
setlocal2:int = 0xD6
setlocal3:int = 0xD7
setlocal:int = 0x63
setproperty:int = 0x61
setpropertylate:int = 0x69
setslot:int = 0x6D
setsuper:int = 0x05
strictequals:int = 0xAC
subtract:int = 0xA1
subtract_i:int = 0xC6
swap:int = 0x2B
throw:int = 0x03
typeof:int = 0x95
urshift:int = 0xA7
</span></pre></div><p><span class="small-header">This paste has no annotations.</span></p><p><table width="100%"><tbody><tr><td align="left"><form accept-charset="utf-8" action="http://paste.lisp.org/display/70938" method="post"><table class="controls"><tbody><tr><td>Colorize as: <select name="colorize"><option value="None">None</option><option value="Basic Lisp">Basic Lisp</option><option value="Scheme">Scheme</option><option value="Emacs Lisp">Emacs Lisp</option><option value="Common Lisp" selected="selected">Common Lisp</option><option value="C">C</option><option value="C++">C++</option><option value="Java">Java</option><option value="Objective C">Objective C</option><option value="Erlang">Erlang</option><option value="Python">Python</option><option value="Haskell">Haskell</option><option value="Unified Context Diff">Unified Context Diff</option><option value="WebKit (text or diff)">WebKit (text or diff)</option></select><br><input name="linenumbers" value="true" type="checkbox"> Show Line Numbers<br><center><input value="Format" type="submit"></center></td></tr></tbody></table></form></td><td align="right"><form accept-charset="utf-8" name="MARK_AS_SPAM" action="http://paste.lisp.org/mark-as-spam" method="GET"><input name="PASTE" value="70938" type="hidden"><input name="submit" value="Mark as Spam" type="submit"> <script language="JavaScript"></script></form><form accept-charset="utf-8" name="REQUEST_DELETION" action="http://paste.lisp.org/request-deletion" method="GET"><input name="PASTE" value="70938" type="hidden"><input name="submit" value="Request Deletion" type="submit"> <script language="JavaScript"></script></form><form accept-charset="utf-8" name="MARK_AS_WRONG_CHANNEL" action="http://paste.lisp.org/mark-as-wrong-channel" method="GET"><input name="PASTE" value="70938" type="hidden"><input name="submit" value="Wrong Channel" type="submit"> <script language="JavaScript"></script></form></td></tr></tbody></table></p><p></p><center><div class="ohloh"><script type="text/javascript" src="avm2opcodes_soubory/project_users"></script><a href="http://www.ohloh.net/stack_entries/new?project_id=lisppaste&amp;ref=WidgetProjectUsers" onmouseout="this.style.background = 'url(http://www.ohloh.net/images/stack/badges.png) -66px 0 no-repeat'" onmouseover="this.style.background = 'url(http://www.ohloh.net/images/stack/badges.png) 0 0 no-repeat'" style="display: block; border-bottom: medium none; background: url(&quot;http://www.ohloh.net/images/stack/badges.png&quot;) no-repeat scroll -66px 0pt transparent; text-decoration: none; width: 66px; height: 66px;" target="_top"><div style="width: 66px; line-height: 1.2em; height: 66px">
<p style="font-weight:bold; font-size:16pt; text-align:center; padding:2px 0px 0px 6px; color:#000; font-family:arial; letter-spacing:-0.05em; line-height: 1.2em; margin:0px;">98</p>
</div>
</a></div><div class="ads-text"><div><ul><li>Follow lisppaste's author: <a href="http://twitter.com/bmastenbrook">Twitter</a> | <a href="http://www.ohloh.net/accounts/bmastenbrook">Ohloh</a></li><li><a href="http://planet.lisp.org/">Planet Lisp</a></li><li><a href="http://www.gigamonkeys.com/book/">Practical Common Lisp - learn Lisp!</a></li></ul></div></div></center></div><p></p><div class="bottom-links"><table width="100%"><tbody><tr><td id="main-link"><a href="http://paste.lisp.org/">Main page</a></td><td id="other-links"><a href="http://paste.lisp.org/new">New paste</a> | <a href="http://paste.lisp.org/list">List all pastes</a> | <a href="http://paste.lisp.org/syndication">Syndication</a> | <a href="http://common-lisp.net/project/lisppaste/xml-rpc.html">XML-RPC</a> | <a href="http://paste.lisp.org/email">Requests Email</a> | <a href="http://paste.lisp.org/administration">Administrate</a> | <a href="http://www.common-lisp.net/project/lisppaste">Project home</a></td></tr></tbody></table></div><i>Lisppaste
pastes can be made by anyone at any time. Imagine a fearsomely
comprehensive disclaimer of liability. Now fear, comprehensively.</i></body></html>

BIN
trunk/doc/avm2overview.doc Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -1,12 +0,0 @@
http://archiv.nova.cz/static/cz/shared/app/MediaCenter.swf
.\config\saved\asdec_85f11ffb.tmp
http://admin.brightcove.com/viewer/us1.24.00.00/federatedVideo/BrightcovePlayer.swf
.\config\saved\asdec_d5ca3577.tmp
http://archiv.nova.cz/static/cz/shared/app/MediaCenter_Catchup.swf
.\config\saved\asdec_d08cceb2.tmp
http://abc.go.com/vp2/ws/utils/2000/geo/video/geolocation
.\config\saved\asdec_70eaddc7.tmp
http://ll.static.abc.com/m/vp2/prod/flash/VP2.swf?ver=*
.\config\saved\asdec_a3d1aa1c.tmp
http://archiv.nova.cz/static/shared/app/flowplayer/OpenAdStreamer-*.swf
.\config\saved\asdec_65483348.tmp

View File

@@ -1 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><geolocation brand="001" device="001" ver="2000" xmlns="http://abc.go.com/vp2/ws/xmlns"><user allowed="true"/></geolocation>

Binary file not shown.

View File

@@ -1,4 +1,4 @@
/* The following code was generated by JFlex 1.4.3 on 28.7.10 15:00 */
/* The following code was generated by JFlex 1.4.3 on 18.8.10 12:21 */
/* Flash assembler language lexer specification */
@@ -12,7 +12,7 @@ import jsyntaxpane.TokenType;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 28.7.10 15:00 from the specification file
* on 18.8.10 12:21 from the specification file
* <tt>D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex</tt>
*/
public final class Flasm3Lexer extends DefaultJFlexLexer {
@@ -43,9 +43,9 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
*/
private static final String ZZ_CMAP_PACKED =
"\11\11\1\3\1\2\1\0\1\3\1\1\16\11\4\0\1\3\1\0"+
"\1\25\1\0\1\10\6\0\1\21\1\0\1\21\1\16\1\0\1\15"+
"\3\15\4\22\2\6\1\14\1\23\5\0\4\10\1\17\25\10\1\5"+
"\1\24\1\7\1\0\1\13\1\0\4\12\1\20\7\12\1\4\15\12"+
"\1\26\1\0\1\10\6\0\1\22\1\0\1\16\1\17\1\0\1\15"+
"\3\15\4\23\2\6\1\14\1\24\5\0\4\10\1\20\25\10\1\5"+
"\1\25\1\7\1\0\1\13\1\0\4\12\1\21\7\12\1\4\15\12"+
"\4\0\41\11\2\0\4\10\4\0\1\10\2\0\1\11\7\0\1\10"+
"\4\0\1\10\5\0\27\10\1\0\37\10\1\0\u013f\10\31\0\162\10"+
"\4\0\14\10\16\0\5\10\11\0\1\10\21\0\130\11\5\0\23\11"+
@@ -141,12 +141,12 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
private static final String ZZ_ACTION_PACKED_0 =
"\3\0\2\1\1\2\1\1\1\3\2\4\1\1\1\5"+
"\2\6\1\7\1\10\1\7\1\1\1\11\1\12\1\0"+
"\1\13\1\14\2\3\1\0\1\10\1\0\2\11\1\3"+
"\2\6\1\7\1\10\1\7\2\1\1\11\1\12\1\0"+
"\1\13\1\14\2\3\1\0\1\10\2\0\2\11\1\3"+
"\1\0\1\10\2\0\1\15";
private static int [] zzUnpackAction() {
int [] result = new int[36];
int [] result = new int[38];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -171,14 +171,14 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\26\0\54\0\102\0\130\0\156\0\204\0\232"+
"\0\260\0\102\0\306\0\102\0\334\0\102\0\362\0\u0108"+
"\0\u011e\0\u0134\0\u014a\0\102\0\204\0\102\0\102\0\u0160"+
"\0\u0176\0\u018c\0\u01a2\0\u01b8\0\u01ce\0\102\0\102\0\u01e4"+
"\0\u01fa\0\u01fa\0\u0210\0\102";
"\0\0\0\27\0\56\0\105\0\134\0\163\0\212\0\241"+
"\0\270\0\105\0\317\0\105\0\346\0\105\0\375\0\u0114"+
"\0\u012b\0\u0142\0\u0159\0\u0170\0\105\0\212\0\105\0\105"+
"\0\u0187\0\u019e\0\u01b5\0\u01cc\0\u01e3\0\u0159\0\u01fa\0\105"+
"\0\105\0\u0211\0\u0228\0\u0228\0\u023f\0\105";
private static int [] zzUnpackRowMap() {
int [] result = new int[36];
int [] result = new int[38];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -202,30 +202,31 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
private static final String ZZ_TRANS_PACKED_0 =
"\3\4\1\5\1\6\3\4\1\7\1\4\1\6\1\7"+
"\3\4\1\7\1\6\5\4\1\10\1\11\1\12\21\10"+
"\4\4\1\7\1\6\5\4\1\10\1\11\1\12\22\10"+
"\1\13\1\14\1\4\1\15\1\16\1\4\1\17\1\4"+
"\1\20\1\4\1\21\1\4\2\21\1\4\1\20\1\22"+
"\2\21\1\4\1\20\1\23\1\4\1\24\31\0\1\5"+
"\26\0\1\6\1\0\1\6\1\0\2\25\2\6\1\26"+
"\1\6\1\0\1\25\1\6\1\0\1\6\7\0\1\25"+
"\1\0\1\25\1\0\4\25\1\26\1\25\1\0\2\25"+
"\1\0\1\25\3\0\1\10\2\0\21\10\4\0\1\12"+
"\23\0\2\27\1\0\12\27\1\30\4\27\1\31\3\27"+
"\2\0\1\16\27\0\1\21\1\32\1\21\1\0\4\21"+
"\1\0\1\21\1\0\2\21\1\0\1\21\11\0\1\20"+
"\6\0\1\20\1\33\2\34\1\0\1\20\7\0\1\21"+
"\1\0\1\21\1\0\4\21\1\0\1\21\1\0\2\21"+
"\1\0\1\21\11\0\1\33\6\0\1\33\4\0\1\33"+
"\3\0\1\23\1\35\1\36\23\23\15\0\1\31\4\0"+
"\1\31\20\0\1\37\4\0\1\37\11\0\1\40\6\0"+
"\1\40\4\0\1\40\11\0\1\33\6\0\1\33\1\0"+
"\2\34\1\0\1\33\11\0\1\41\6\0\1\41\3\0"+
"\1\42\1\41\5\0\1\36\31\0\1\40\1\43\5\0"+
"\1\40\4\0\1\40\11\0\1\41\6\0\1\41\4\0"+
"\1\41\30\0\1\44";
"\1\23\2\21\1\4\1\20\1\24\1\4\1\25\32\0"+
"\1\5\27\0\1\6\1\0\1\6\1\0\2\26\2\6"+
"\1\27\1\6\2\0\1\26\1\6\1\0\1\6\7\0"+
"\1\26\1\0\1\26\1\0\4\26\1\27\1\26\2\0"+
"\2\26\1\0\1\26\3\0\1\10\2\0\22\10\4\0"+
"\1\12\24\0\2\30\1\0\12\30\1\31\5\30\1\32"+
"\3\30\2\0\1\16\30\0\1\21\1\33\1\21\1\0"+
"\4\21\1\0\1\21\2\0\2\21\1\0\1\21\11\0"+
"\1\20\6\0\1\20\1\0\1\34\2\35\1\0\1\20"+
"\7\0\1\21\1\0\1\21\1\0\4\21\1\0\1\21"+
"\2\0\2\21\1\0\1\21\11\0\1\20\6\0\1\20"+
"\1\0\1\36\3\0\1\20\11\0\1\34\6\0\1\34"+
"\5\0\1\34\3\0\1\24\1\37\1\40\24\24\15\0"+
"\1\32\5\0\1\32\20\0\1\41\5\0\1\41\11\0"+
"\1\42\6\0\1\42\5\0\1\42\11\0\1\34\6\0"+
"\1\34\2\0\2\35\1\0\1\34\11\0\1\43\6\0"+
"\1\43\1\44\3\0\1\44\1\43\5\0\1\40\32\0"+
"\1\42\1\45\5\0\1\42\5\0\1\42\11\0\1\43"+
"\6\0\1\43\5\0\1\43\31\0\1\46";
private static int [] zzUnpackTrans() {
int [] result = new int[550];
int [] result = new int[598];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -264,11 +265,11 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\3\0\1\11\5\1\1\11\1\1\1\11\1\1\1\11"+
"\5\1\1\11\1\0\2\11\2\1\1\0\1\1\1\0"+
"\6\1\1\11\1\0\2\11\2\1\1\0\1\1\2\0"+
"\1\1\2\11\1\0\1\1\2\0\1\11";
private static int [] zzUnpackAttribute() {
int [] result = new int[36];
int [] result = new int[38];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;

View File

@@ -291,15 +291,18 @@ is divided into following sections:
<attribute default="${build.classes.dir}" name="destdir"/>
<sequential>
<fail unless="javac.includes">Must set javac.includes</fail>
<pathconvert pathsep="," property="javac.includes.binary">
<pathconvert pathsep="${line.separator}" property="javac.includes.binary">
<path>
<filelist dir="@{destdir}" files="${javac.includes}"/>
</path>
<globmapper from="*.java" to="*.class"/>
</pathconvert>
<tempfile deleteonexit="true" property="javac.includesfile.binary"/>
<echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
<delete>
<files includes="${javac.includes.binary}"/>
<files includesfile="${javac.includesfile.binary}"/>
</delete>
<delete file="${javac.includesfile.binary}"/>
</sequential>
</macrodef>
</target>

View File

@@ -4,5 +4,5 @@ nbbuild.xml.stylesheet.CRC32=28e38971@1.38.2.45
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=6767af7d
nbproject/build-impl.xml.script.CRC32=94147f4c
nbproject/build-impl.xml.stylesheet.CRC32=f33e10ff@1.38.2.45
nbproject/build-impl.xml.script.CRC32=ad555744
nbproject/build-impl.xml.stylesheet.CRC32=229523de@1.38.3.45

BIN
trunk/testdata/as3.swf vendored

Binary file not shown.

View File

@@ -309,5 +309,24 @@ public class Test {
var e=(a==b)?((c==d)?1:7):3;
trace("e="+e);
}
public function testInnerIf(){
var a=5;
var b=4;
if(a==5){
if(b==6){
trace("b==6");
}else{
trace("b!=6");
}
}else{
if(b==7){
trace("b==7");
}else{
trace("b!=7");
}
}
trace("end");
}
}
}