aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/compiler/qv4bytecodehandler.cpp6
-rw-r--r--src/qml/compiler/qv4codegen.cpp35
-rw-r--r--src/qml/compiler/qv4codegen_p.h9
-rw-r--r--src/qml/compiler/qv4instr_moth.cpp8
-rw-r--r--src/qml/compiler/qv4instr_moth_p.h6
-rw-r--r--src/qml/jit/qv4baselinejit.cpp24
-rw-r--r--src/qml/jit/qv4baselinejit_p.h2
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp36
-rw-r--r--src/qml/jsruntime/qv4runtimeapi_p.h2
-rw-r--r--src/qml/jsruntime/qv4vme_moth.cpp17
-rw-r--r--tests/auto/qml/ecmascripttests/TestExpectations38
11 files changed, 148 insertions, 35 deletions
diff --git a/src/qml/compiler/qv4bytecodehandler.cpp b/src/qml/compiler/qv4bytecodehandler.cpp
index 45968570d0..23f7051718 100644
--- a/src/qml/compiler/qv4bytecodehandler.cpp
+++ b/src/qml/compiler/qv4bytecodehandler.cpp
@@ -212,6 +212,12 @@ std::vector<int> ByteCodeHandler::collectLabelsInBytecode(const char *code, uint
COLLECTOR_BEGIN_INSTR(SetLookup)
COLLECTOR_END_INSTR(SetLookup)
+ COLLECTOR_BEGIN_INSTR(LoadSuperProperty)
+ COLLECTOR_END_INSTR(LoadSuperProperty)
+
+ COLLECTOR_BEGIN_INSTR(StoreSuperProperty)
+ COLLECTOR_END_INSTR(StoreSuperProperty)
+
COLLECTOR_BEGIN_INSTR(StoreScopeObjectProperty)
COLLECTOR_END_INSTR(StoreScopeObjectProperty)
diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp
index 7e22966302..2f28320697 100644
--- a/src/qml/compiler/qv4codegen.cpp
+++ b/src/qml/compiler/qv4codegen.cpp
@@ -1109,6 +1109,11 @@ bool Codegen::visit(ArrayMemberExpression *ast)
Reference base = expression(ast->base);
if (hasError)
return false;
+ if (base.isSuper()) {
+ Reference index = expression(ast->expression).storeOnStack();
+ _expr.setResult(Reference::fromSuperProperty(index));
+ return false;
+ }
base = base.storeOnStack();
if (hasError)
return false;
@@ -1957,6 +1962,9 @@ bool Codegen::visit(DeleteExpression *ast)
return false;
switch (expr.type) {
+ case Reference::SuperProperty:
+ // ### this should throw a reference error at runtime.
+ return false;
case Reference::StackSlot:
if (!expr.stackSlotIsLocalOrArgument)
break;
@@ -2052,6 +2060,14 @@ bool Codegen::visit(FieldMemberExpression *ast)
Reference base = expression(ast->base);
if (hasError)
return false;
+ if (base.isSuper()) {
+ Instruction::LoadRuntimeString load;
+ load.stringId = registerString(ast->name.toString());
+ bytecodeGenerator->addInstruction(load);
+ Reference property = Reference::fromAccumulator(this).storeOnStack();
+ _expr.setResult(Reference::fromSuperProperty(property));
+ return false;
+ }
_expr.setResult(Reference::fromMember(base, ast->name.toString()));
return false;
}
@@ -3710,6 +3726,9 @@ Codegen::Reference &Codegen::Reference::operator =(const Reference &other)
break;
case Super:
break;
+ case SuperProperty:
+ property = other.property;
+ break;
case StackSlot:
theStackSlot = other.theStackSlot;
break;
@@ -3761,6 +3780,8 @@ bool Codegen::Reference::operator==(const Codegen::Reference &other) const
break;
case Super:
return true;
+ case SuperProperty:
+ return property == other.property;
case StackSlot:
return theStackSlot == other.theStackSlot;
case ScopedLocal:
@@ -3941,7 +3962,12 @@ void Codegen::Reference::storeAccumulator() const
}
switch (type) {
case Super:
- codegen->throwSyntaxError(SourceLocation(), QStringLiteral("storing super properties not implemented."));
+ Q_UNREACHABLE();
+ return;
+ case SuperProperty:
+ Instruction::StoreSuperProperty store;
+ store.property = property.stackSlot();
+ codegen->bytecodeGenerator->addInstruction(store);
return;
case StackSlot: {
Instruction::StoreReg store;
@@ -4021,7 +4047,12 @@ void Codegen::Reference::loadInAccumulator() const
case Accumulator:
return;
case Super:
- codegen->throwSyntaxError(AST::SourceLocation(), QStringLiteral("Super property access not implemented."));
+ Q_UNREACHABLE();
+ return;
+ case SuperProperty:
+ Instruction::LoadSuperProperty load;
+ load.property = property.stackSlot();
+ codegen->bytecodeGenerator->addInstruction(load);
return;
case Const: {
QT_WARNING_PUSH
diff --git a/src/qml/compiler/qv4codegen_p.h b/src/qml/compiler/qv4codegen_p.h
index 814754aea2..337c4dbfe3 100644
--- a/src/qml/compiler/qv4codegen_p.h
+++ b/src/qml/compiler/qv4codegen_p.h
@@ -180,6 +180,7 @@ public:
Invalid,
Accumulator,
Super,
+ SuperProperty,
StackSlot,
ScopedLocal,
Name,
@@ -217,6 +218,7 @@ public:
bool isConstant() const { return type == Const; }
bool isAccumulator() const { return type == Accumulator; }
bool isSuper() const { return type == Super; }
+ bool isSuperProperty() const { return type == SuperProperty; }
bool isStackSlot() const { return type == StackSlot; }
bool isRegister() const {
return isStackSlot();
@@ -282,6 +284,12 @@ public:
r.propertyNameIndex = r.codegen->registerString(name);
return r;
}
+ static Reference fromSuperProperty(const Reference &property) {
+ Q_ASSERT(property.isStackSlot());
+ Reference r(property.codegen, SuperProperty);
+ r.property = property.stackSlot();
+ return r;
+ }
static Reference fromSubscript(const Reference &baseRef, const Reference &subscript) {
Q_ASSERT(baseRef.isStackSlot());
Reference r(baseRef.codegen, Subscript);
@@ -368,6 +376,7 @@ public:
qint16 qmlNotifyIndex;
PropertyCapturePolicy capturePolicy;
};
+ Moth::StackSlot property; // super property
};
QString name;
mutable bool isArgOrEval = false;
diff --git a/src/qml/compiler/qv4instr_moth.cpp b/src/qml/compiler/qv4instr_moth.cpp
index 56da14b098..5621b456d5 100644
--- a/src/qml/compiler/qv4instr_moth.cpp
+++ b/src/qml/compiler/qv4instr_moth.cpp
@@ -312,6 +312,14 @@ void dumpBytecode(const char *code, int len, int nLocals, int nFormals, int /*st
d << dumpRegister(base, nFormals) << "(" << index << ")";
MOTH_END_INSTR(SetLookup)
+ MOTH_BEGIN_INSTR(LoadSuperProperty)
+ d << dumpRegister(property, nFormals);
+ MOTH_END_INSTR(LoadSuperProperty)
+
+ MOTH_BEGIN_INSTR(StoreSuperProperty)
+ d << dumpRegister(property, nFormals);
+ MOTH_END_INSTR(StoreSuperProperty)
+
MOTH_BEGIN_INSTR(StoreScopeObjectProperty)
d << dumpRegister(base, nFormals) << "[" << propertyIndex << "]";
MOTH_END_INSTR(StoreScopeObjectProperty)
diff --git a/src/qml/compiler/qv4instr_moth_p.h b/src/qml/compiler/qv4instr_moth_p.h
index f0a3332ee1..7c1d4db4ca 100644
--- a/src/qml/compiler/qv4instr_moth_p.h
+++ b/src/qml/compiler/qv4instr_moth_p.h
@@ -95,6 +95,8 @@ QT_BEGIN_NAMESPACE
#define INSTR_Resume(op) INSTRUCTION(op, Resume, 1, offset)
#define INSTR_StoreProperty(op) INSTRUCTION(op, StoreProperty, 2, name, base)
#define INSTR_SetLookup(op) INSTRUCTION(op, SetLookup, 2, index, base)
+#define INSTR_LoadSuperProperty(op) INSTRUCTION(op, LoadSuperProperty, 1, property)
+#define INSTR_StoreSuperProperty(op) INSTRUCTION(op, StoreSuperProperty, 1, property)
#define INSTR_StoreScopeObjectProperty(op) INSTRUCTION(op, StoreScopeObjectProperty, 2, base, propertyIndex)
#define INSTR_StoreContextObjectProperty(op) INSTRUCTION(op, StoreContextObjectProperty, 2, base, propertyIndex)
#define INSTR_LoadElement(op) INSTRUCTION(op, LoadElement, 1, base)
@@ -221,6 +223,8 @@ QT_BEGIN_NAMESPACE
F(GetLookup) \
F(StoreProperty) \
F(SetLookup) \
+ F(LoadSuperProperty) \
+ F(StoreSuperProperty) \
F(StoreScopeObjectProperty) \
F(StoreContextObjectProperty) \
F(LoadScopeObjectProperty) \
@@ -516,7 +520,7 @@ struct InstrInfo
static int size(Instr::Type type);
};
-Q_STATIC_ASSERT(MOTH_NUM_INSTRUCTIONS() < 128);
+Q_STATIC_ASSERT(MOTH_NUM_INSTRUCTIONS() <= 128);
template<int N>
struct InstrMeta {
diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp
index 1df7223936..9132b194a5 100644
--- a/src/qml/jit/qv4baselinejit.cpp
+++ b/src/qml/jit/qv4baselinejit.cpp
@@ -304,6 +304,30 @@ void BaselineJIT::generate_SetLookup(int index, int base)
as->checkException();
}
+void BaselineJIT::generate_LoadSuperProperty(int property)
+{
+ STORE_IP();
+ STORE_ACC();
+ as->prepareCallWithArgCount(2);
+ as->passRegAsArg(property, 1);
+ as->passEngineAsArg(0);
+ JIT_GENERATE_RUNTIME_CALL(Runtime::method_loadSuperProperty, Assembler::ResultInAccumulator);
+ as->checkException();
+}
+
+void BaselineJIT::generate_StoreSuperProperty(int property)
+{
+ STORE_IP();
+ STORE_ACC();
+ as->prepareCallWithArgCount(3);
+ as->passAccumulatorAsArg(2);
+ as->passRegAsArg(property, 1);
+ as->passFunctionAsArg(0);
+ JIT_GENERATE_RUNTIME_CALL(Runtime::method_storeSuperProperty, Assembler::IgnoreResult);
+ as->checkException();
+}
+
+
void BaselineJIT::generate_StoreScopeObjectProperty(int base, int propertyIndex)
{
STORE_ACC();
diff --git a/src/qml/jit/qv4baselinejit_p.h b/src/qml/jit/qv4baselinejit_p.h
index d953d86a06..d96fd6ea6a 100644
--- a/src/qml/jit/qv4baselinejit_p.h
+++ b/src/qml/jit/qv4baselinejit_p.h
@@ -104,6 +104,8 @@ public:
void generate_GetLookup(int index) override;
void generate_StoreProperty(int name, int base) override;
void generate_SetLookup(int index, int base) override;
+ void generate_LoadSuperProperty(int property) override;
+ void generate_StoreSuperProperty(int property) override;
void generate_StoreScopeObjectProperty(int base,
int propertyIndex) override;
void generate_StoreContextObjectProperty(int base,
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp
index eeb66509e3..7b2fd07f0b 100644
--- a/src/qml/jsruntime/qv4runtime.cpp
+++ b/src/qml/jsruntime/qv4runtime.cpp
@@ -856,6 +856,42 @@ ReturnedValue Runtime::method_loadName(ExecutionEngine *engine, int nameIndex)
return static_cast<ExecutionContext &>(engine->currentStackFrame->jsFrame->context).getProperty(name);
}
+ReturnedValue Runtime::method_loadSuperProperty(ExecutionEngine *engine, const Value &property)
+{
+ Scope scope(engine);
+ ScopedObject base(scope, engine->currentStackFrame->thisObject());
+ if (!base)
+ return engine->throwTypeError();
+ ScopedObject proto(scope, base->getPrototypeOf());
+ if (!proto)
+ return engine->throwTypeError();
+ ScopedPropertyKey key(scope, property.toPropertyKey(engine));
+ if (engine->hasException)
+ return Encode::undefined();
+ return proto->get(key, base);
+}
+
+void Runtime::method_storeSuperProperty(ExecutionEngine *engine, const Value &property, const Value &value)
+{
+ Scope scope(engine);
+ ScopedObject base(scope, engine->currentStackFrame->thisObject());
+ if (!base) {
+ engine->throwTypeError();
+ return;
+ }
+ ScopedObject proto(scope, base->getPrototypeOf());
+ if (!proto) {
+ engine->throwTypeError();
+ return;
+ }
+ ScopedPropertyKey key(scope, property.toPropertyKey(engine));
+ if (engine->hasException)
+ return;
+ bool result = proto->put(key, value, base);
+ if (!result && engine->currentStackFrame->v4Function->isStrict())
+ engine->throwTypeError();
+}
+
#endif // V4_BOOTSTRAP
uint RuntimeHelpers::equalHelper(const Value &x, const Value &y)
diff --git a/src/qml/jsruntime/qv4runtimeapi_p.h b/src/qml/jsruntime/qv4runtimeapi_p.h
index b4d9d329c4..3f65e6c6d6 100644
--- a/src/qml/jsruntime/qv4runtimeapi_p.h
+++ b/src/qml/jsruntime/qv4runtimeapi_p.h
@@ -113,6 +113,8 @@ struct ExceptionCheck<void (*)(QV4::NoThrowEngine *, A, B, C)> {
F(ReturnedValue, loadProperty, (ExecutionEngine *engine, const Value &object, int nameIndex)) \
F(ReturnedValue, loadName, (ExecutionEngine *engine, int nameIndex)) \
F(ReturnedValue, loadElement, (ExecutionEngine *engine, const Value &object, const Value &index)) \
+ F(ReturnedValue, loadSuperProperty, (ExecutionEngine *engine, const Value &property)) \
+ F(void, storeSuperProperty, (ExecutionEngine *engine, const Value &property, const Value &value)) \
\
/* typeof */ \
F(ReturnedValue, typeofValue, (ExecutionEngine *engine, const Value &val)) \
diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp
index 83d1aa3250..6c667110a9 100644
--- a/src/qml/jsruntime/qv4vme_moth.cpp
+++ b/src/qml/jsruntime/qv4vme_moth.cpp
@@ -610,6 +610,20 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine,
CHECK_EXCEPTION;
MOTH_END_INSTR(SetLookup)
+ MOTH_BEGIN_INSTR(LoadSuperProperty)
+ STORE_IP();
+ STORE_ACC();
+ acc = Runtime::method_loadSuperProperty(engine, STACK_VALUE(property));
+ CHECK_EXCEPTION;
+ MOTH_END_INSTR(LoadSuperProperty)
+
+ MOTH_BEGIN_INSTR(StoreSuperProperty)
+ STORE_IP();
+ STORE_ACC();
+ Runtime::method_storeSuperProperty(engine, STACK_VALUE(property), accumulator);
+ CHECK_EXCEPTION;
+ MOTH_END_INSTR(StoreSuperProperty)
+
MOTH_BEGIN_INSTR(StoreScopeObjectProperty)
STORE_ACC();
Runtime::method_storeQmlScopeObjectProperty(engine, STACK_VALUE(base), propertyIndex, accumulator);
@@ -666,7 +680,8 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine,
acc = engine->throwTypeError(QStringLiteral("%1 is not a function").arg(func.toQStringNoThrow()));
goto handleUnwind;
}
- acc = static_cast<const FunctionObject &>(func).call(nullptr, stack + argv, argc);
+ Value undef = Primitive::undefinedValue();
+ acc = static_cast<const FunctionObject &>(func).call(&undef, stack + argv, argc);
CHECK_EXCEPTION;
MOTH_END_INSTR(CallValue)
diff --git a/tests/auto/qml/ecmascripttests/TestExpectations b/tests/auto/qml/ecmascripttests/TestExpectations
index f7b78374f8..b791596d92 100644
--- a/tests/auto/qml/ecmascripttests/TestExpectations
+++ b/tests/auto/qml/ecmascripttests/TestExpectations
@@ -1938,9 +1938,6 @@ language/computed-property-names/class/static/method-number.js fails
language/computed-property-names/class/static/method-string.js fails
language/computed-property-names/class/static/method-symbol.js fails
language/computed-property-names/class/static/setter-prototype.js fails
-language/computed-property-names/object/accessor/getter-super.js fails
-language/computed-property-names/object/accessor/setter-super.js fails
-language/computed-property-names/object/method/super.js fails
language/eval-code/direct/lex-env-no-init-cls.js fails
language/eval-code/direct/lex-env-no-init-const.js fails
language/eval-code/direct/lex-env-no-init-let.js fails
@@ -1955,7 +1952,11 @@ language/eval-code/direct/super-call-arrow.js fails
language/eval-code/direct/super-call-fn.js fails
language/eval-code/direct/super-call-method.js fails
language/eval-code/direct/super-call.js fails
-language/eval-code/direct/super-prop-method.js fails
+language/eval-code/direct/super-prop-arrow.js fails
+language/eval-code/direct/super-prop-dot-no-home.js fails
+language/eval-code/direct/super-prop-expr-no-home-no-eval.js fails
+language/eval-code/direct/super-prop-expr-no-home.js fails
+language/eval-code/direct/super-prop.js fails
language/eval-code/direct/this-value-func-strict-source.js sloppyFails
language/eval-code/direct/var-env-func-init-global-update-configurable.js sloppyFails
language/eval-code/direct/var-env-global-lex-non-strict.js sloppyFails
@@ -1972,6 +1973,7 @@ language/eval-code/indirect/non-definable-global-function.js fails
language/eval-code/indirect/non-definable-global-generator.js fails
language/eval-code/indirect/realm.js fails
language/eval-code/indirect/super-call.js fails
+language/eval-code/indirect/super-prop.js fails
language/eval-code/indirect/this-value-func.js strictFails
language/eval-code/indirect/var-env-func-init-global-new.js strictFails
language/eval-code/indirect/var-env-func-init-global-update-configurable.js fails
@@ -2422,9 +2424,9 @@ language/expressions/compound-assignment/S11.13.2_A7.6_T4.js fails
language/expressions/compound-assignment/S11.13.2_A7.7_T4.js fails
language/expressions/compound-assignment/S11.13.2_A7.8_T4.js fails
language/expressions/compound-assignment/S11.13.2_A7.9_T4.js fails
+language/expressions/delete/super-property.js fails
language/expressions/conditional/tco-cond.js strictFails
language/expressions/conditional/tco-pos.js strictFails
-language/expressions/delete/super-property.js fails
language/expressions/function/arguments-with-arguments-fn.js sloppyFails
language/expressions/function/arguments-with-arguments-lex.js sloppyFails
language/expressions/function/dflt-params-ref-later.js fails
@@ -2477,7 +2479,6 @@ language/expressions/new.target/value-via-reflect-construct.js fails
language/expressions/new.target/value-via-super-call.js fails
language/expressions/new.target/value-via-super-property.js fails
language/expressions/new/non-ctor-err-realm.js fails
-language/expressions/object/concise-generator.js fails
language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js fails
language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js fails
language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js fails
@@ -2493,7 +2494,6 @@ language/expressions/object/fn-name-class.js fails
language/expressions/object/fn-name-cover.js fails
language/expressions/object/fn-name-fn.js fails
language/expressions/object/fn-name-gen.js fails
-language/expressions/object/getter-super-prop.js fails
language/expressions/object/let-non-strict-access.js sloppyFails
language/expressions/object/let-non-strict-syntax.js sloppyFails
language/expressions/object/method-definition/fn-name-fn.js fails
@@ -2502,22 +2502,17 @@ language/expressions/object/method-definition/gen-meth-dflt-params-ref-later.js
language/expressions/object/method-definition/gen-meth-dflt-params-ref-self.js fails
language/expressions/object/method-definition/gen-yield-identifier-non-strict.js sloppyFails
language/expressions/object/method-definition/generator-name-prop-symbol.js fails
-language/expressions/object/method-definition/generator-super-prop-body.js fails
-language/expressions/object/method-definition/generator-super-prop-param.js fails
language/expressions/object/method-definition/meth-dflt-params-ref-later.js fails
language/expressions/object/method-definition/meth-dflt-params-ref-self.js fails
language/expressions/object/method-definition/name-invoke-ctor.js fails
language/expressions/object/method-definition/name-name-prop-symbol.js fails
language/expressions/object/method-definition/name-prototype-prop.js fails
-language/expressions/object/method-definition/name-super-prop-body.js fails
-language/expressions/object/method-definition/name-super-prop-param.js fails
language/expressions/object/method-definition/object-method-returns-promise.js fails
language/expressions/object/method-definition/yield-as-function-expression-binding-identifier.js sloppyFails
language/expressions/object/method-definition/yield-as-identifier-in-nested-function.js sloppyFails
language/expressions/object/method-definition/yield-as-literal-property-name.js fails
language/expressions/object/method-definition/yield-as-property-name.js fails
language/expressions/object/method-definition/yield-star-before-newline.js fails
-language/expressions/object/method.js fails
language/expressions/object/prop-def-id-eval-error-2.js sloppyFails
language/expressions/object/properties-names-eval-arguments.js strictFails
language/expressions/object/scope-gen-meth-body-lex-distinct.js sloppyFails
@@ -2535,7 +2530,6 @@ language/expressions/object/scope-meth-param-rest-elem-var-open.js sloppyFails
language/expressions/object/scope-meth-paramsbody-var-open.js fails
language/expressions/object/scope-setter-body-lex-distinc.js sloppyFails
language/expressions/object/scope-setter-paramsbody-var-open.js fails
-language/expressions/object/setter-super-prop.js fails
language/expressions/postfix-decrement/S11.3.2_A5_T1.js sloppyFails
language/expressions/postfix-decrement/S11.3.2_A5_T2.js sloppyFails
language/expressions/postfix-decrement/S11.3.2_A5_T3.js sloppyFails
@@ -2569,35 +2563,23 @@ language/expressions/super/prop-dot-cls-ref-strict.js fails
language/expressions/super/prop-dot-cls-ref-this.js fails
language/expressions/super/prop-dot-cls-this-uninit.js fails
language/expressions/super/prop-dot-cls-val-from-arrow.js fails
-language/expressions/super/prop-dot-cls-val-from-eval.js fails
-language/expressions/super/prop-dot-cls-val.js fails
language/expressions/super/prop-dot-obj-null-proto.js fails
language/expressions/super/prop-dot-obj-ref-non-strict.js sloppyFails
language/expressions/super/prop-dot-obj-ref-strict.js strictFails
language/expressions/super/prop-dot-obj-ref-this.js fails
language/expressions/super/prop-dot-obj-val-from-arrow.js fails
-language/expressions/super/prop-dot-obj-val-from-eval.js fails
-language/expressions/super/prop-dot-obj-val.js fails
-language/expressions/super/prop-expr-cls-err.js fails
language/expressions/super/prop-expr-cls-key-err.js fails
language/expressions/super/prop-expr-cls-null-proto.js fails
language/expressions/super/prop-expr-cls-ref-strict.js fails
language/expressions/super/prop-expr-cls-ref-this.js fails
language/expressions/super/prop-expr-cls-this-uninit.js fails
-language/expressions/super/prop-expr-cls-unresolvable.js fails
language/expressions/super/prop-expr-cls-val-from-arrow.js fails
-language/expressions/super/prop-expr-cls-val-from-eval.js fails
-language/expressions/super/prop-expr-cls-val.js fails
-language/expressions/super/prop-expr-obj-err.js fails
language/expressions/super/prop-expr-obj-key-err.js fails
language/expressions/super/prop-expr-obj-null-proto.js fails
language/expressions/super/prop-expr-obj-ref-non-strict.js sloppyFails
language/expressions/super/prop-expr-obj-ref-strict.js strictFails
language/expressions/super/prop-expr-obj-ref-this.js fails
-language/expressions/super/prop-expr-obj-unresolvable.js fails
language/expressions/super/prop-expr-obj-val-from-arrow.js fails
-language/expressions/super/prop-expr-obj-val-from-eval.js fails
-language/expressions/super/prop-expr-obj-val.js fails
language/expressions/super/realm.js fails
language/expressions/tagged-template/cache-different-functions-same-site.js fails
language/expressions/tagged-template/cache-eval-inner-function.js fails
@@ -3123,13 +3105,7 @@ language/statements/class/subclass/derived-class-return-override-with-empty.js f
language/statements/class/subclass/derived-class-return-override-with-this.js fails
language/statements/class/subclass/derived-class-return-override-with-undefined.js fails
language/statements/class/super/in-constructor.js fails
-language/statements/class/super/in-getter.js fails
language/statements/class/super/in-methods.js fails
-language/statements/class/super/in-setter.js fails
-language/statements/class/super/in-static-getter.js fails
-language/statements/class/super/in-static-methods.js fails
-language/statements/class/super/in-static-setter.js fails
-language/statements/class/syntax/class-body-method-definition-super-property.js fails
language/statements/const/block-local-closure-get-before-initialization.js fails
language/statements/const/block-local-use-before-initialization-in-declaration-statement.js fails
language/statements/const/block-local-use-before-initialization-in-prior-statement.js fails