home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- class NewArrayItem extends Item {
- int dim;
-
- void stash(Typ var1, int var2) {
- throw new CompilerError("stash");
- }
-
- void drop(Typ var1) {
- this.load(var1);
- Item.stackItem.drop(var1);
- }
-
- void duplicate(Typ var1) {
- this.load(var1);
- Item.stackItem.duplicate(var1);
- }
-
- void load(Typ var1) {
- Typ var2 = ((ArrayTyp)var1).elemtyp;
- int var3 = this.tcode(var2.tag);
- if (var3 != 0 && (var3 != 1 || this.dim != 1)) {
- if (var3 == 1) {
- Gen.emitop(197, 1 - this.dim);
- Gen.emit2(Gen.mkref(var1));
- Gen.emit1(this.dim);
- } else {
- Gen.emitop1(188, var3);
- }
- } else {
- Gen.emitop2(189, Gen.mkref(var2));
- }
-
- }
-
- private int tcode(int var1) {
- switch (var1) {
- case 2:
- return 8;
- case 3:
- case 12:
- default:
- throw new CompilerError("tcode");
- case 4:
- return 5;
- case 5:
- return 9;
- case 6:
- return 10;
- case 7:
- return 11;
- case 8:
- return 6;
- case 9:
- return 7;
- case 10:
- return 4;
- case 11:
- return 0;
- case 13:
- return 1;
- }
- }
-
- NewArrayItem(int var1) {
- super(10);
- this.dim = var1;
- }
- }
-