AS3 p-code editing - metadata read/write support

This commit is contained in:
Jindra Petřík
2016-08-28 17:01:50 +02:00
parent c2e850ad49
commit da859ddb41
16 changed files with 3745 additions and 3563 deletions
@@ -3504,7 +3504,7 @@ public class CommandLineArgumentParser {
mb.setCodeBytes(data);
} else {
try {
AVM2Code acode = ASM3Parser.parse(new StringReader(text), abc.constants, trait, new MissingSymbolHandler() {
AVM2Code acode = ASM3Parser.parse(abc, new StringReader(text), trait, new MissingSymbolHandler() {
//no longer ask for adding new constants
@Override
public boolean missingString(String value) {
@@ -115,6 +115,9 @@ public class ASMSourceEditorPane extends DebuggableEditorPane implements CaretLi
private HighlightedText getHighlightedText(ScriptExportMode exportMode) {
HighlightedTextWriter writer = new HighlightedTextWriter(Configuration.getCodeFormatting(), true);
if (trait != null && exportMode != ScriptExportMode.AS && exportMode != ScriptExportMode.AS_METHOD_STUBS) {
trait.convertTraitHeader(abc, writer);
}
abc.bodies.get(bodyIndex).getCode().toASMSource(abc.constants, trait, abc.method_info.get(abc.bodies.get(bodyIndex).method_info), abc.bodies.get(bodyIndex), exportMode, writer);
return new HighlightedText(writer);
}
@@ -257,7 +260,7 @@ public class ASMSourceEditorPane extends DebuggableEditorPane implements CaretLi
MethodBody mb = abc.bodies.get(bodyIndex);
mb.setCodeBytes(data);
} else {
AVM2Code acode = ASM3Parser.parse(new StringReader(text), abc.constants, trait, new MissingSymbolHandler() {
AVM2Code acode = ASM3Parser.parse(abc, new StringReader(text), trait, new MissingSymbolHandler() {
//no longer ask for adding new constants
@Override
public boolean missingString(String value) {
@@ -101,16 +101,7 @@ public class SlotConstTraitDetailPanel extends JPanel implements TraitDetail {
this.abc = abc;
this.trait = trait;
HighlightedTextWriter writer = new HighlightedTextWriter(Configuration.getCodeFormatting(), true);
writer.appendNoHilight("trait ");
writer.hilightSpecial(abc.constants.multinameToString(trait.name_index), HighlightSpecialType.TRAIT_NAME);
writer.appendNoHilight(" ");
writer.hilightSpecial(trait.isConst() ? "const" : "slot", HighlightSpecialType.TRAIT_TYPE);
writer.appendNoHilight(" slotid ");
writer.hilightSpecial(Integer.toString(trait.slot_id), HighlightSpecialType.SLOT_ID);
writer.appendNoHilight(" type ");
writer.hilightSpecial(abc.constants.multinameToString(trait.type_index), HighlightSpecialType.TRAIT_TYPE_NAME);
writer.appendNoHilight(" value ");
writer.hilightSpecial((new ValueKind(trait.value_index, trait.value_kind).toASMString(abc.constants)), HighlightSpecialType.TRAIT_VALUE);
trait.convertTraitHeader(abc, writer);
String s = writer.toString();
specialHilights = writer.specialHilights;
showWarning = trait.isConst() || isStatic;
@@ -120,7 +111,7 @@ public class SlotConstTraitDetailPanel extends JPanel implements TraitDetail {
@Override
public boolean save() {
try {//(slotConstEditor.getText(), trait, abc)
if (!ASM3Parser.parseSlotConst(new StringReader(slotConstEditor.getText()), abc.constants, trait)) {
if (!ASM3Parser.parseSlotConst(abc, new StringReader(slotConstEditor.getText()), abc.constants, trait)) {
return false;
}
} catch (AVM2ParseException ex) {