905d7aaf91
Special cases addition expressions where one of the sides is known to be a string to enable chains of string additions to be transformed into a series of ToPrimitiveToString operations followed by a single string concatenation at the end of the chain of additions. This should avoid creating temporary strings for each of the string additions (in essence this is an automated string builder). BUG=v8:6243 Change-Id: I44977d6dad00ee906f251c4bd9cab27e160c09d1 Reviewed-on: https://chromium-review.googlesource.com/493966 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#45453}
201 lines
4.5 KiB
Plaintext
201 lines
4.5 KiB
Plaintext
#
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
#
|
|
|
|
---
|
|
wrap: yes
|
|
|
|
---
|
|
snippet: "
|
|
var a = 1;
|
|
var b = 2;
|
|
return a + b + 'string';
|
|
"
|
|
frame size: 3
|
|
parameter count: 1
|
|
bytecode array length: 22
|
|
bytecodes: [
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 42 S> */ B(LdaSmi), I8(1),
|
|
B(Star), R(0),
|
|
/* 53 S> */ B(LdaSmi), I8(2),
|
|
B(Star), R(1),
|
|
/* 56 S> */ B(Ldar), R(1),
|
|
/* 65 E> */ B(Add), R(0), U8(3),
|
|
B(Star), R(2),
|
|
B(LdaConstant), U8(0),
|
|
/* 69 E> */ B(Add), R(2), U8(4),
|
|
/* 81 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["string"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var a = 1;
|
|
var b = 2;
|
|
return 'string' + a + b;
|
|
"
|
|
frame size: 3
|
|
parameter count: 1
|
|
bytecode array length: 26
|
|
bytecodes: [
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 42 S> */ B(LdaSmi), I8(1),
|
|
B(Star), R(0),
|
|
/* 53 S> */ B(LdaSmi), I8(2),
|
|
B(Star), R(1),
|
|
/* 56 S> */ B(LdaConstant), U8(0),
|
|
B(Star), R(2),
|
|
B(Ldar), R(0),
|
|
/* 72 E> */ B(Add), R(2), U8(3),
|
|
B(Star), R(2),
|
|
B(Ldar), R(1),
|
|
/* 76 E> */ B(Add), R(2), U8(4),
|
|
/* 81 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["string"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var a = 1;
|
|
var b = 2;
|
|
return a + 'string' + b;
|
|
"
|
|
frame size: 3
|
|
parameter count: 1
|
|
bytecode array length: 22
|
|
bytecodes: [
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 42 S> */ B(LdaSmi), I8(1),
|
|
B(Star), R(0),
|
|
/* 53 S> */ B(LdaSmi), I8(2),
|
|
B(Star), R(1),
|
|
/* 56 S> */ B(LdaConstant), U8(0),
|
|
/* 65 E> */ B(Add), R(0), U8(3),
|
|
B(Star), R(2),
|
|
B(Ldar), R(1),
|
|
/* 76 E> */ B(Add), R(2), U8(4),
|
|
/* 81 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["string"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var a = 1;
|
|
var b = 2;
|
|
return 'foo' + a + 'bar' + b + 'baz' + 1;
|
|
"
|
|
frame size: 3
|
|
parameter count: 1
|
|
bytecode array length: 43
|
|
bytecodes: [
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 42 S> */ B(LdaSmi), I8(1),
|
|
B(Star), R(0),
|
|
/* 53 S> */ B(LdaSmi), I8(2),
|
|
B(Star), R(1),
|
|
/* 56 S> */ B(LdaConstant), U8(0),
|
|
B(Star), R(2),
|
|
B(Ldar), R(0),
|
|
/* 69 E> */ B(Add), R(2), U8(3),
|
|
B(Star), R(2),
|
|
B(LdaConstant), U8(1),
|
|
/* 73 E> */ B(Add), R(2), U8(4),
|
|
B(Star), R(2),
|
|
B(Ldar), R(1),
|
|
/* 81 E> */ B(Add), R(2), U8(5),
|
|
B(Star), R(2),
|
|
B(LdaConstant), U8(2),
|
|
/* 85 E> */ B(Add), R(2), U8(6),
|
|
/* 93 E> */ B(AddSmi), I8(1), U8(7),
|
|
/* 98 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["foo"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["bar"],
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["baz"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var a = 1;
|
|
var b = 2;
|
|
return (a + 'string') + ('string' + b);
|
|
"
|
|
frame size: 4
|
|
parameter count: 1
|
|
bytecode array length: 29
|
|
bytecodes: [
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 42 S> */ B(LdaSmi), I8(1),
|
|
B(Star), R(0),
|
|
/* 53 S> */ B(LdaSmi), I8(2),
|
|
B(Star), R(1),
|
|
/* 56 S> */ B(LdaConstant), U8(0),
|
|
/* 66 E> */ B(Add), R(0), U8(3),
|
|
B(Star), R(2),
|
|
B(LdaConstant), U8(0),
|
|
B(Star), R(3),
|
|
B(Ldar), R(1),
|
|
/* 90 E> */ B(Add), R(3), U8(4),
|
|
/* 78 E> */ B(Add), R(2), U8(5),
|
|
/* 96 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["string"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|
|
---
|
|
snippet: "
|
|
var a = 1;
|
|
var b = 2;
|
|
function foo(a, b) { };
|
|
return 'string' + foo(a, b) + a + b;
|
|
"
|
|
frame size: 4
|
|
parameter count: 1
|
|
bytecode array length: 42
|
|
bytecodes: [
|
|
B(CreateClosure), U8(0), U8(3), U8(2),
|
|
B(Star), R(2),
|
|
/* 30 E> */ B(StackCheck),
|
|
/* 42 S> */ B(LdaSmi), I8(1),
|
|
B(Star), R(0),
|
|
/* 53 S> */ B(LdaSmi), I8(2),
|
|
B(Star), R(1),
|
|
/* 80 S> */ B(LdaConstant), U8(1),
|
|
B(Star), R(3),
|
|
/* 98 E> */ B(CallUndefinedReceiver2), R(2), R(0), R(1), U8(4),
|
|
/* 96 E> */ B(Add), R(3), U8(6),
|
|
B(Star), R(3),
|
|
B(Ldar), R(0),
|
|
/* 108 E> */ B(Add), R(3), U8(7),
|
|
B(Star), R(3),
|
|
B(Ldar), R(1),
|
|
/* 112 E> */ B(Add), R(3), U8(8),
|
|
/* 117 S> */ B(Return),
|
|
]
|
|
constant pool: [
|
|
SHARED_FUNCTION_INFO_TYPE,
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["string"],
|
|
]
|
|
handlers: [
|
|
]
|
|
|