diff --git a/compiler/core/pandagen.cpp b/compiler/core/pandagen.cpp index d4ff04eef6ad84d07c63c3b264d6773894c70c77..f509896db58c4142a46710a97473a0bf0cc44c7c 100644 --- a/compiler/core/pandagen.cpp +++ b/compiler/core/pandagen.cpp @@ -1102,14 +1102,14 @@ void PandaGen::CreateEmptyObject(const ir::AstNode *node) void PandaGen::CreateObjectWithBuffer(const ir::AstNode *node, uint32_t idx) { ASSERT(util::Helpers::IsInteger(idx)); - sa_.Emit(node, idx); + sa_.Emit(node, util::Helpers::ToStringView(allocator_, idx)); } void PandaGen::CreateObjectHavingMethod(const ir::AstNode *node, uint32_t idx) { ASSERT(util::Helpers::IsInteger(idx)); LoadAccumulator(node, LexEnv()); - sa_.Emit(node, idx); + sa_.Emit(node, util::Helpers::ToStringView(allocator_, idx)); } void PandaGen::SetObjectWithProto(const ir::AstNode *node, VReg proto, VReg obj) @@ -1137,7 +1137,7 @@ void PandaGen::CreateEmptyArray(const ir::AstNode *node) void PandaGen::CreateArrayWithBuffer(const ir::AstNode *node, uint32_t idx) { ASSERT(util::Helpers::IsInteger(idx)); - sa_.Emit(node, idx); + sa_.Emit(node, util::Helpers::ToStringView(allocator_, idx)); } void PandaGen::CreateArray(const ir::AstNode *node, const ArenaVector &elements, VReg obj) diff --git a/test/runner.py b/test/runner.py index 9a91161b8400bdef706b9f329f2335a6cc1bb44a..6cce7ea6ae85cf6e734f4096437406a1c8674b2b 100755 --- a/test/runner.py +++ b/test/runner.py @@ -125,6 +125,9 @@ def get_args(): parser.add_argument( '--verbose', '-v', action='store_true', dest='verbose', default=False, help='Enable verbose output') + parser.add_argument( + '--quick', '-q', action='store_true', dest='quick', default=False, + help='use bytecode quickener') return parser.parse_args() @@ -185,6 +188,8 @@ class Test262Test(Test): ES2PANDA_TIMEOUT = 4 RUNTIME_TIMEOUT = 5 AOT_TIMEOUT = 6 + QUICK_FAIL = 7 + QUICK_TIMEOUT = 8 def run(self, runner): with open(self.path, 'r') as fp: @@ -239,6 +244,39 @@ class Test262Test(Test): self.passed = True return self + if runner.args.quick: + cmd = runner.cmd_prefix + [runner.arkquick] + cmd.extend(runner.quick_args) + + src_abc = test_abc + dst_abc = '%s.quick%s' % os.path.splitext(src_abc) + cmd.extend([src_abc, dst_abc]) + + test_abc = dst_abc + + self.log_cmd(cmd) + + if runner.args.verbose: + print('Run arkquick: %s' % ' '.join(cmd), file=sys.stderr) + + process = subprocess.Popen( + cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=runner.cmd_env) + + try: + out, err = process.communicate(timeout=600) + except subprocess.TimeoutExpired: + process.kill() + self.passed = False + self.fail_kind = self.FailKind.QUICK_TIMEOUT + self.error = self.fail_kind.name + return self + + if process.returncode != 0: + self.passed = False + self.fail_kind = self.FailKind.QUICK_FAIL + self.error = err.decode("utf-8", errors="ignore") + return self + if runner.args.aot: cmd = runner.cmd_prefix + [runner.arkaot] + runner.aot_args cmd.extend(['--paoc-panda-files', test_abc, '--paoc-output', test_an]) @@ -473,9 +511,42 @@ class Test262Runner(Runner): if not path.isfile(self.runtime): raise Exception("Cannot find runtime binary: %s" % self.runtime) + ecmastdlib_abc = '%s/plugins/ecmascript/ecmastdlib/ecmastdlib.abc' % args.build_dir + + if args.quick: + self.arkquick = path.join(args.build_dir, 'bin', 'arkquick') + if not path.isfile(self.arkquick): + raise Exception("Cannot find arkquick binary: %s" % self.arkquick) + + self.quick_args = [] + + # quick ecmastdlib + cmd = self.cmd_prefix + [self.arkquick] + cmd.extend(self.quick_args) + src_abc = ecmastdlib_abc + dst_abc = '%s.quick%s' % os.path.splitext(src_abc) + cmd.extend([src_abc, dst_abc]) + + ecmastdlib_abc = dst_abc + + if args.verbose: + print('quick ecmastdlib: %s' % ' '.join(cmd), file=sys.stderr) + + process = subprocess.Popen( + cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=self.cmd_env) + + try: + out, err = process.communicate(timeout=600) + except subprocess.TimeoutExpired: + process.kill() + raise Exception("Cannot quick %s: timeout" % self.src_abc) + + if process.returncode != 0: + raise Exception("Cannot quick %s: %d" % (self.src_abc, process.returncode)) + self.runtime_args = [ - '--boot-panda-files=%s/pandastdlib/arkstdlib.abc' - % args.build_dir, + '--boot-panda-files=%s' + % ecmastdlib_abc, '--load-runtimes=ecmascript', '--gc-type=%s' % args.gc_type, '--heap-verifier=%s' % args.heap_verifier @@ -494,8 +565,8 @@ class Test262Runner(Runner): raise Exception("Cannot find aot binary: %s" % self.arkaot) self.aot_args = [ - '--boot-panda-files=%s/pandastdlib/arkstdlib.abc' - % args.build_dir, + '--boot-panda-files=%s' + % ecmastdlib_abc, '--load-runtimes=ecmascript', '--gc-type=%s' % args.gc_type, '--heap-verifier=%s' % args.heap_verifier diff --git a/test/test262skiplist.txt b/test/test262skiplist.txt index 2bd7e3716607c5e9ff2a15ededca3d6556c8f1e3..ac9c25ab0c671f5a10957d6e7be0c7ac646826c0 100644 --- a/test/test262skiplist.txt +++ b/test/test262skiplist.txt @@ -8914,3 +8914,30 @@ language/white-space/string-horizontal-tab.js language/white-space/string-nbsp.js language/white-space/string-space.js language/white-space/string-vertical-tab.js +#QUICKENER_FAIL panda #9296 +built-ins/Array/prototype/reduce/15.4.4.21-5-2.js +built-ins/Array/prototype/reduce/15.4.4.21-5-3.js +built-ins/Array/prototype/reduce/15.4.4.21-5-4.js +built-ins/Array/prototype/reduce/15.4.4.21-5-5.js +built-ins/Array/prototype/reduce/15.4.4.21-5-6.js +built-ins/Array/prototype/reduce/15.4.4.21-5-7.js +built-ins/Array/prototype/reduce/15.4.4.21-5-8.js +built-ins/Array/prototype/reduce/15.4.4.21-7-2.js +built-ins/Array/prototype/reduce/15.4.4.21-7-3.js +built-ins/Array/prototype/reduce/15.4.4.21-7-4.js +built-ins/Array/prototype/reduce/15.4.4.21-7-5.js +built-ins/Array/prototype/reduce/15.4.4.21-7-8.js +built-ins/Array/prototype/reduce/15.4.4.21-7-9.js +built-ins/Array/prototype/reduceRight/15.4.4.22-5-2.js +built-ins/Array/prototype/reduceRight/15.4.4.22-5-3.js +built-ins/Array/prototype/reduceRight/15.4.4.22-5-4.js +built-ins/Array/prototype/reduceRight/15.4.4.22-5-5.js +built-ins/Array/prototype/reduceRight/15.4.4.22-5-6.js +built-ins/Array/prototype/reduceRight/15.4.4.22-5-7.js +built-ins/Array/prototype/reduceRight/15.4.4.22-5-8.js +built-ins/Array/prototype/reduceRight/15.4.4.22-7-2.js +built-ins/Array/prototype/reduceRight/15.4.4.22-7-3.js +built-ins/Array/prototype/reduceRight/15.4.4.22-7-4.js +built-ins/Array/prototype/reduceRight/15.4.4.22-7-5.js +built-ins/Array/prototype/reduceRight/15.4.4.22-7-8.js +built-ins/Array/prototype/reduceRight/15.4.4.22-7-9.js