mirror of
https://github.com/i-net-software/JWebAssembly.git
synced 2025-03-25 07:27:52 +01:00
Switch to the latest GC coding of V8
This commit is contained in:
parent
856194dbce
commit
ad1ea166dd
@ -1385,6 +1385,8 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
|
|||||||
switch(op) {
|
switch(op) {
|
||||||
case NEW:
|
case NEW:
|
||||||
case NEW_DEFAULT:
|
case NEW_DEFAULT:
|
||||||
|
codeStream.writeOpCode( RTT_CANON );
|
||||||
|
codeStream.writeValueType( type );
|
||||||
opCode = STRUCT_NEW;
|
opCode = STRUCT_NEW;
|
||||||
break;
|
break;
|
||||||
case GET:
|
case GET:
|
||||||
|
@ -487,22 +487,22 @@ interface InstructionOpcodes {
|
|||||||
|
|
||||||
static final int TABLE_FILL = 0xFC11;
|
static final int TABLE_FILL = 0xFC11;
|
||||||
|
|
||||||
// === GC opcodes (unofficial, experimental) ===== https://github.com/lars-t-hansen/moz-gc-experiments/blob/master/version2.md
|
// === GC opcodes
|
||||||
|
|
||||||
static final int STRUCT_NEW = 0xFC50;
|
static final int STRUCT_NEW = 0xFB01;
|
||||||
|
|
||||||
static final int STRUCT_GET = 0xFC51;
|
static final int STRUCT_GET = 0xFB03;
|
||||||
|
|
||||||
static final int STRUCT_SET = 0xFC52;
|
static final int STRUCT_SET = 0xFB06;
|
||||||
|
|
||||||
static final int STRUCT_NARROW = 0xFC53;
|
|
||||||
|
|
||||||
|
|
||||||
static final int ARRAY_NEW = 0xFC60;
|
static final int ARRAY_NEW = 0xFB11;
|
||||||
|
|
||||||
static final int ARRAY_GET = 0xFC61;
|
static final int ARRAY_GET = 0xFB13;
|
||||||
|
|
||||||
static final int ARRAY_SET = 0xFC62;
|
static final int ARRAY_SET = 0xFB16;
|
||||||
|
|
||||||
static final int ARRAY_LEN = 0xFC63;
|
static final int ARRAY_LEN = 0xFB17;
|
||||||
|
|
||||||
|
static final int RTT_CANON = 0xFB30;
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ class WasmOutputStream extends LittleEndianOutputStream {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
writeOpCode( InstructionOpcodes.REF_NULL );
|
writeOpCode( InstructionOpcodes.REF_NULL );
|
||||||
writeValueType( ValueType.externref );
|
writeValueType( type );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -852,6 +852,8 @@ public class TextModuleWriter extends ModuleWriter {
|
|||||||
switch( op ) {
|
switch( op ) {
|
||||||
case NEW:
|
case NEW:
|
||||||
case NEW_DEFAULT:
|
case NEW_DEFAULT:
|
||||||
|
newline( methodOutput );
|
||||||
|
methodOutput.append( "rtt.canon" ).append( ' ' ).append( normalizeName( type.toString() ) );
|
||||||
operation = "struct.new";
|
operation = "struct.new";
|
||||||
break;
|
break;
|
||||||
case GET:
|
case GET:
|
||||||
|
@ -39,7 +39,7 @@ public class StructsGC extends AbstractBaseTest {
|
|||||||
@Parameters( name = "{0}-{1}" )
|
@Parameters( name = "{0}-{1}" )
|
||||||
public static Collection<Object[]> data() {
|
public static Collection<Object[]> data() {
|
||||||
ArrayList<Object[]> list = new ArrayList<>();
|
ArrayList<Object[]> list = new ArrayList<>();
|
||||||
ScriptEngine[] engines = { ScriptEngine.SpiderMonkeyGC, ScriptEngine.SpiderMonkeyWatGC, ScriptEngine.NodeJsGC, ScriptEngine.NodeWatGC };
|
ScriptEngine[] engines = { ScriptEngine.SpiderMonkeyGC, ScriptEngine.SpiderMonkeyWatGC, ScriptEngine.NodeJsGC/*, ScriptEngine.NodeWatGC*/ };
|
||||||
for( ScriptEngine script : engines ) {
|
for( ScriptEngine script : engines ) {
|
||||||
addParam( list, script, "isNull" );
|
addParam( list, script, "isNull" );
|
||||||
addParam( list, script, "isNotNull" );
|
addParam( list, script, "isNotNull" );
|
||||||
@ -57,7 +57,7 @@ public class StructsGC extends AbstractBaseTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void test() {
|
||||||
Assume.assumeFalse( true ); //TODO
|
Assume.assumeFalse( getScriptEngine().name().startsWith( "SpiderMonkey" ) ); //TODO
|
||||||
super.test();
|
super.test();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user