Remove the catch variable name from the extension field of catch contexts

Instead rely on the scope info containing the name as well.

Change-Id: Ie1f96ea023a793b11209510566f6831b1dfd40ab
Reviewed-on: https://chromium-review.googlesource.com/1042567
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52983}
This commit is contained in:
Toon Verwaest 2018-05-04 11:29:20 +02:00 committed by Commit Bot
parent a1892ff9c4
commit 0f7721719d
28 changed files with 296 additions and 452 deletions

View File

@ -2234,6 +2234,8 @@ void Scope::AllocateNonParameterLocal(Variable* var) {
if (var->IsUnallocated() && MustAllocate(var)) {
if (MustAllocateInContext(var)) {
AllocateHeapSlot(var);
DCHECK_IMPLIES(is_catch_scope(),
var->index() == Context::THROWN_OBJECT_INDEX);
} else {
AllocateStackSlot(var);
}

View File

@ -1510,12 +1510,10 @@ void BytecodeGraphBuilder::VisitCreateEvalContext() {
void BytecodeGraphBuilder::VisitCreateCatchContext() {
interpreter::Register reg = bytecode_iterator().GetRegisterOperand(0);
Node* exception = environment()->LookupRegister(reg);
Handle<String> name =
Handle<String>::cast(bytecode_iterator().GetConstantForIndexOperand(1));
Handle<ScopeInfo> scope_info = Handle<ScopeInfo>::cast(
bytecode_iterator().GetConstantForIndexOperand(2));
bytecode_iterator().GetConstantForIndexOperand(1));
const Operator* op = javascript()->CreateCatchContext(name, scope_info);
const Operator* op = javascript()->CreateCatchContext(scope_info);
Node* context = NewNode(op, exception);
environment()->BindAccumulator(context);
}

View File

@ -1350,14 +1350,12 @@ Reduction JSCreateLowering::ReduceJSCreateWithContext(Node* node) {
Reduction JSCreateLowering::ReduceJSCreateCatchContext(Node* node) {
DCHECK_EQ(IrOpcode::kJSCreateCatchContext, node->opcode());
const CreateCatchContextParameters& parameters =
CreateCatchContextParametersOf(node->op());
Handle<ScopeInfo> scope_info = parameters.scope_info();
Handle<String> catch_name = parameters.catch_name();
Handle<ScopeInfo> scope_info = ScopeInfoOf(node->op());
Node* exception = NodeProperties::GetValueInput(node, 0);
Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node);
Node* context = NodeProperties::GetContextInput(node);
Node* extension = jsgraph()->TheHoleConstant();
AllocationBuilder a(jsgraph(), effect, control);
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); // Ensure fully covered.
@ -1365,7 +1363,7 @@ Reduction JSCreateLowering::ReduceJSCreateCatchContext(Node* node) {
factory()->catch_context_map());
a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info);
a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context);
a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), catch_name);
a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension);
a.Store(AccessBuilder::ForContextSlot(Context::NATIVE_CONTEXT_INDEX),
jsgraph()->HeapConstant(native_context()));
a.Store(AccessBuilder::ForContextSlot(Context::THROWN_OBJECT_INDEX),

View File

@ -152,38 +152,6 @@ ContextAccess const& ContextAccessOf(Operator const* op) {
return OpParameter<ContextAccess>(op);
}
CreateCatchContextParameters::CreateCatchContextParameters(
Handle<String> catch_name, Handle<ScopeInfo> scope_info)
: catch_name_(catch_name), scope_info_(scope_info) {}
bool operator==(CreateCatchContextParameters const& lhs,
CreateCatchContextParameters const& rhs) {
return lhs.catch_name().location() == rhs.catch_name().location() &&
lhs.scope_info().location() == rhs.scope_info().location();
}
bool operator!=(CreateCatchContextParameters const& lhs,
CreateCatchContextParameters const& rhs) {
return !(lhs == rhs);
}
size_t hash_value(CreateCatchContextParameters const& parameters) {
return base::hash_combine(parameters.catch_name().location(),
parameters.scope_info().location());
}
std::ostream& operator<<(std::ostream& os,
CreateCatchContextParameters const& parameters) {
return os << Brief(*parameters.catch_name()) << ", "
<< Brief(*parameters.scope_info());
}
CreateCatchContextParameters const& CreateCatchContextParametersOf(
Operator const* op) {
DCHECK_EQ(IrOpcode::kJSCreateCatchContext, op->opcode());
return OpParameter<CreateCatchContextParameters>(op);
}
CreateFunctionContextParameters::CreateFunctionContextParameters(
Handle<ScopeInfo> scope_info, int slot_count, ScopeType scope_type)
: scope_info_(scope_info),
@ -1243,13 +1211,12 @@ const Operator* JSOperatorBuilder::CreateFunctionContext(
}
const Operator* JSOperatorBuilder::CreateCatchContext(
const Handle<String>& name, const Handle<ScopeInfo>& scope_info) {
CreateCatchContextParameters parameters(name, scope_info);
return new (zone()) Operator1<CreateCatchContextParameters>(
const Handle<ScopeInfo>& scope_info) {
return new (zone()) Operator1<Handle<ScopeInfo>>(
IrOpcode::kJSCreateCatchContext, Operator::kNoProperties, // opcode
"JSCreateCatchContext", // name
1, 1, 1, 1, 1, 2, // counts
parameters); // parameter
scope_info); // parameter
}
const Operator* JSOperatorBuilder::CreateWithContext(
@ -1272,7 +1239,8 @@ const Operator* JSOperatorBuilder::CreateBlockContext(
Handle<ScopeInfo> ScopeInfoOf(const Operator* op) {
DCHECK(IrOpcode::kJSCreateBlockContext == op->opcode() ||
IrOpcode::kJSCreateWithContext == op->opcode());
IrOpcode::kJSCreateWithContext == op->opcode() ||
IrOpcode::kJSCreateCatchContext == op->opcode());
return OpParameter<Handle<ScopeInfo>>(op);
}

View File

@ -262,34 +262,6 @@ V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, ContextAccess const&);
V8_EXPORT_PRIVATE ContextAccess const& ContextAccessOf(Operator const*);
// Defines the name and ScopeInfo for a new catch context. This is used as a
// parameter by the JSCreateCatchContext operator.
class CreateCatchContextParameters final {
public:
CreateCatchContextParameters(Handle<String> catch_name,
Handle<ScopeInfo> scope_info);
Handle<String> catch_name() const { return catch_name_; }
Handle<ScopeInfo> scope_info() const { return scope_info_; }
private:
Handle<String> const catch_name_;
Handle<ScopeInfo> const scope_info_;
};
bool operator==(CreateCatchContextParameters const& lhs,
CreateCatchContextParameters const& rhs);
bool operator!=(CreateCatchContextParameters const& lhs,
CreateCatchContextParameters const& rhs);
size_t hash_value(CreateCatchContextParameters const& parameters);
std::ostream& operator<<(std::ostream& os,
CreateCatchContextParameters const& parameters);
CreateCatchContextParameters const& CreateCatchContextParametersOf(
Operator const*);
// Defines the slot count and ScopeType for a new function or eval context. This
// is used as a parameter by the JSCreateFunctionContext operator.
class CreateFunctionContextParameters final {
@ -838,8 +810,7 @@ class V8_EXPORT_PRIVATE JSOperatorBuilder final
const Operator* CreateFunctionContext(Handle<ScopeInfo> scope_info,
int slot_count, ScopeType scope_type);
const Operator* CreateCatchContext(const Handle<String>& name,
const Handle<ScopeInfo>& scope_info);
const Operator* CreateCatchContext(const Handle<ScopeInfo>& scope_info);
const Operator* CreateWithContext(const Handle<ScopeInfo>& scope_info);
const Operator* CreateBlockContext(const Handle<ScopeInfo>& scpope_info);

View File

@ -90,7 +90,7 @@ Context* Context::closure_context() {
JSObject* Context::extension_object() {
DCHECK(IsNativeContext() || IsFunctionContext() || IsBlockContext() ||
IsEvalContext());
IsEvalContext() || IsCatchContext());
HeapObject* object = extension();
if (object->IsTheHole(GetIsolate())) return nullptr;
DCHECK(object->IsJSContextExtensionObject() ||
@ -116,12 +116,6 @@ Module* Context::module() {
return Module::cast(current->extension());
}
String* Context::catch_name() {
DCHECK(IsCatchContext());
return String::cast(extension());
}
JSGlobalObject* Context::global_object() {
return JSGlobalObject::cast(native_context()->extension());
}
@ -291,7 +285,7 @@ Handle<Object> Context::Lookup(Handle<String> name, ContextLookupFlags flags,
// 2. Check the context proper if it has slots.
if (context->IsFunctionContext() || context->IsBlockContext() ||
context->IsScriptContext() || context->IsEvalContext() ||
context->IsModuleContext()) {
context->IsModuleContext() || context->IsCatchContext()) {
// Use serialized scope information of functions and blocks to search
// for the context index.
Handle<ScopeInfo> scope_info(context->scope_info());
@ -357,18 +351,6 @@ Handle<Object> Context::Lookup(Handle<String> name, ContextLookupFlags flags,
return handle(context->module(), isolate);
}
}
} else if (context->IsCatchContext()) {
// Catch contexts have the variable name in the extension slot.
if (String::Equals(name, handle(context->catch_name()))) {
if (FLAG_trace_contexts) {
PrintF("=> found in catch context\n");
}
*index = Context::THROWN_OBJECT_INDEX;
*attributes = NONE;
*init_flag = kCreatedInitialized;
*variable_mode = VAR;
return context;
}
} else if (context->IsDebugEvaluateContext()) {
// Check materialized locals.
Object* ext = context->get(EXTENSION_INDEX);

View File

@ -382,9 +382,6 @@ class ScriptContextTable : public FixedArray {
//
// [ extension ] Additional data.
//
// For catch contexts, it contains the name of the catch
// variable.
//
// For module contexts, it contains the module object.
//
// For block contexts, it may contain an "extension object"
@ -480,7 +477,6 @@ class Context: public FixedArray {
JSObject* extension_object();
JSReceiver* extension_receiver();
ScopeInfo* scope_info();
String* catch_name();
// Find the module context (assuming there is one) and return the associated
// module object.

View File

@ -339,11 +339,10 @@ MaybeHandle<JSObject> ScopeIterator::ScopeObject() {
return MaterializeLocalScope();
case ScopeIterator::ScopeTypeWith:
return WithContextExtension();
case ScopeIterator::ScopeTypeCatch:
return MaterializeCatchScope();
case ScopeIterator::ScopeTypeClosure:
// Materialize the content of the closure scope into a JSObject.
return MaterializeClosure();
case ScopeIterator::ScopeTypeCatch:
case ScopeIterator::ScopeTypeBlock:
case ScopeIterator::ScopeTypeEval:
return MaterializeInnerScope();
@ -376,12 +375,11 @@ bool ScopeIterator::SetVariableValue(Handle<String> variable_name,
return SetLocalVariableValue(variable_name, new_value);
case ScopeIterator::ScopeTypeWith:
break;
case ScopeIterator::ScopeTypeCatch:
return SetCatchVariableValue(variable_name, new_value);
case ScopeIterator::ScopeTypeClosure:
return SetClosureVariableValue(variable_name, new_value);
case ScopeIterator::ScopeTypeScript:
return SetScriptVariableValue(variable_name, new_value);
case ScopeIterator::ScopeTypeCatch:
case ScopeIterator::ScopeTypeBlock:
case ScopeIterator::ScopeTypeEval:
return SetInnerScopeVariableValue(variable_name, new_value);
@ -398,7 +396,7 @@ Handle<ScopeInfo> ScopeIterator::CurrentScopeInfo() {
if (HasNestedScopeChain()) {
return LastNestedScopeChain().scope_info;
} else if (context_->IsBlockContext() || context_->IsFunctionContext() ||
context_->IsEvalContext()) {
context_->IsEvalContext() || context_->IsCatchContext()) {
return Handle<ScopeInfo>(context_->scope_info());
}
return Handle<ScopeInfo>::null();
@ -598,22 +596,6 @@ Handle<JSObject> ScopeIterator::MaterializeClosure() {
}
// Create a plain JSObject which materializes the scope for the specified
// catch context.
Handle<JSObject> ScopeIterator::MaterializeCatchScope() {
Handle<Context> context = CurrentContext();
DCHECK(context->IsCatchContext());
Handle<String> name(context->catch_name());
Handle<Object> thrown_object(context->get(Context::THROWN_OBJECT_INDEX),
isolate_);
Handle<JSObject> catch_scope =
isolate_->factory()->NewJSObjectWithNullProto();
JSObject::SetOwnPropertyIgnoreAttributes(catch_scope, name, thrown_object,
NONE)
.Check();
return catch_scope;
}
// Retrieve the with-context extension object. If the extension object is
// a proxy, return an empty object.
Handle<JSObject> ScopeIterator::WithContextExtension() {
@ -812,7 +794,8 @@ bool ScopeIterator::SetInnerScopeVariableValue(Handle<String> variable_name,
Handle<Object> new_value) {
Handle<ScopeInfo> scope_info = CurrentScopeInfo();
DCHECK(scope_info->scope_type() == BLOCK_SCOPE ||
scope_info->scope_type() == EVAL_SCOPE);
scope_info->scope_type() == EVAL_SCOPE ||
scope_info->scope_type() == CATCH_SCOPE);
// Setting stack locals of optimized frames is not supported.
if (SetStackVariableValue(scope_info, variable_name, new_value)) {
@ -855,19 +838,6 @@ bool ScopeIterator::SetScriptVariableValue(Handle<String> variable_name,
return false;
}
bool ScopeIterator::SetCatchVariableValue(Handle<String> variable_name,
Handle<Object> new_value) {
Handle<Context> context = CurrentContext();
DCHECK(context->IsCatchContext());
Handle<String> name(context->catch_name());
if (!String::Equals(name, variable_name)) {
return false;
}
context->set(Context::THROWN_OBJECT_INDEX, *new_value);
return true;
}
void ScopeIterator::CopyContextLocalsToScopeObject(
Handle<ScopeInfo> scope_info, Handle<Context> context,
Handle<JSObject> scope_object) {

View File

@ -139,7 +139,6 @@ class ScopeIterator {
V8_WARN_UNUSED_RESULT MaybeHandle<JSObject> MaterializeLocalScope();
V8_WARN_UNUSED_RESULT MaybeHandle<JSObject> MaterializeModuleScope();
Handle<JSObject> MaterializeClosure();
Handle<JSObject> MaterializeCatchScope();
Handle<JSObject> MaterializeInnerScope();
Handle<JSObject> WithContextExtension();
@ -151,8 +150,6 @@ class ScopeIterator {
Handle<Object> new_value);
bool SetScriptVariableValue(Handle<String> variable_name,
Handle<Object> new_value);
bool SetCatchVariableValue(Handle<String> variable_name,
Handle<Object> new_value);
bool SetModuleVariableValue(Handle<String> variable_name,
Handle<Object> new_value);

View File

@ -1331,14 +1331,13 @@ Handle<Context> Factory::NewFunctionContext(Handle<Context> outer,
Handle<Context> Factory::NewCatchContext(Handle<Context> previous,
Handle<ScopeInfo> scope_info,
Handle<String> name,
Handle<Object> thrown_object) {
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == Context::THROWN_OBJECT_INDEX);
Handle<Context> context = NewFixedArrayWithMap<Context>(
Heap::kCatchContextMapRootIndex, Context::MIN_CONTEXT_SLOTS + 1);
context->set_scope_info(*scope_info);
context->set_previous(*previous);
context->set_extension(*name);
context->set_extension(*the_hole_value());
context->set_native_context(previous->native_context());
context->set(Context::THROWN_OBJECT_INDEX, *thrown_object);
return context;

View File

@ -370,7 +370,6 @@ class V8_EXPORT_PRIVATE Factory {
// Create a catch context.
Handle<Context> NewCatchContext(Handle<Context> previous,
Handle<ScopeInfo> scope_info,
Handle<String> name,
Handle<Object> thrown_object);
// Create a 'with' context.

View File

@ -906,10 +906,9 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::CreateBlockContext(
}
BytecodeArrayBuilder& BytecodeArrayBuilder::CreateCatchContext(
Register exception, const AstRawString* name, const Scope* scope) {
size_t name_index = GetConstantPoolEntry(name);
Register exception, const Scope* scope) {
size_t scope_index = GetConstantPoolEntry(scope);
OutputCreateCatchContext(exception, name_index, scope_index);
OutputCreateCatchContext(exception, scope_index);
return *this;
}

View File

@ -208,14 +208,11 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final {
BytecodeArrayBuilder& CreateClosure(size_t shared_function_info_entry,
int slot, int flags);
// Create a new local context for a |scope| and a closure which should be
// in the accumulator.
// Create a new local context for a |scope|.
BytecodeArrayBuilder& CreateBlockContext(const Scope* scope);
// Create a new context for a catch block with |exception|, |name|,
// |scope|, and the closure in the accumulator.
// Create a new context for a catch block with |exception| and |scope|.
BytecodeArrayBuilder& CreateCatchContext(Register exception,
const AstRawString* name,
const Scope* scope);
// Create a new context with the given |scope| and size |slots|.
@ -225,7 +222,7 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final {
BytecodeArrayBuilder& CreateEvalContext(const Scope* scope, int slots);
// Creates a new context with the given |scope| for a with-statement
// with the |object| in a register and the closure in the accumulator.
// with the |object| in a register.
BytecodeArrayBuilder& CreateWithContext(Register object, const Scope* scope);
// Create a new arguments object in the accumulator.

View File

@ -4680,8 +4680,7 @@ void BytecodeGenerator::BuildNewLocalCatchContext(Scope* scope) {
Register exception = register_allocator()->NewRegister();
builder()->StoreAccumulatorInRegister(exception);
builder()->CreateCatchContext(exception, scope->catch_variable()->raw_name(),
scope);
builder()->CreateCatchContext(exception, scope);
}
void BytecodeGenerator::VisitObjectLiteralAccessor(

View File

@ -263,7 +263,7 @@ namespace interpreter {
/* Context allocation */ \
V(CreateBlockContext, AccumulatorUse::kWrite, OperandType::kIdx) \
V(CreateCatchContext, AccumulatorUse::kWrite, OperandType::kReg, \
OperandType::kIdx, OperandType::kIdx) \
OperandType::kIdx) \
V(CreateFunctionContext, AccumulatorUse::kWrite, OperandType::kIdx, \
OperandType::kUImm) \
V(CreateEvalContext, AccumulatorUse::kWrite, OperandType::kIdx, \

View File

@ -2527,17 +2527,16 @@ IGNITION_HANDLER(CreateBlockContext, InterpreterAssembler) {
Dispatch();
}
// CreateCatchContext <exception> <name_idx> <scope_info_idx>
// CreateCatchContext <exception> <scope_info_idx>
//
// Creates a new context for a catch block with the |exception| in a register,
// the variable name at |name_idx|, the ScopeInfo at |scope_info_idx|.
// Creates a new context for a catch block with the |exception| in a register
// and the ScopeInfo at |scope_info_idx|.
IGNITION_HANDLER(CreateCatchContext, InterpreterAssembler) {
Node* exception = LoadRegisterAtOperandIndex(0);
Node* name = LoadConstantPoolEntryAtOperandIndex(1);
Node* scope_info = LoadConstantPoolEntryAtOperandIndex(2);
Node* scope_info = LoadConstantPoolEntryAtOperandIndex(1);
Node* context = GetContext();
SetAccumulator(CallRuntime(Runtime::kPushCatchContext, context, name,
exception, scope_info));
SetAccumulator(
CallRuntime(Runtime::kPushCatchContext, context, exception, scope_info));
Dispatch();
}

View File

@ -747,13 +747,12 @@ RUNTIME_FUNCTION(Runtime_PushModuleContext) {
RUNTIME_FUNCTION(Runtime_PushCatchContext) {
HandleScope scope(isolate);
DCHECK_EQ(3, args.length());
CONVERT_ARG_HANDLE_CHECKED(String, name, 0);
CONVERT_ARG_HANDLE_CHECKED(Object, thrown_object, 1);
CONVERT_ARG_HANDLE_CHECKED(ScopeInfo, scope_info, 2);
DCHECK_EQ(2, args.length());
CONVERT_ARG_HANDLE_CHECKED(Object, thrown_object, 0);
CONVERT_ARG_HANDLE_CHECKED(ScopeInfo, scope_info, 1);
Handle<Context> current(isolate->context(), isolate);
Handle<Context> context = isolate->factory()->NewCatchContext(
current, scope_info, name, thrown_object);
Handle<Context> context =
isolate->factory()->NewCatchContext(current, scope_info, thrown_object);
isolate->set_context(*context);
return *context;
}

View File

@ -477,7 +477,7 @@ namespace internal {
F(NewSloppyArguments_Generic, 1, 1) \
F(NewStrictArguments, 1, 1) \
F(PushBlockContext, 1, 1) \
F(PushCatchContext, 3, 1) \
F(PushCatchContext, 2, 1) \
F(PushModuleContext, 2, 1) \
F(PushWithContext, 2, 1) \
F(StoreLookupSlot_Sloppy, 2, 1) \

View File

@ -14,7 +14,7 @@ snippet: "
"
frame size: 8
parameter count: 1
bytecode array length: 190
bytecode array length: 189
bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(2),
B(Mov), R(closure), R(1),
@ -35,7 +35,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(5), R(2),
B(Jump), U8(96),
B(Jump), U8(95),
B(LdaUndefined),
B(Star), R(6),
B(Mov), R(0), R(5),
@ -53,10 +53,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(5), R(2),
B(Jump), U8(53),
B(Jump), U8(37),
B(Jump), U8(52),
B(Jump), U8(36),
B(Star), R(5),
B(CreateCatchContext), R(5), U8(4), U8(5),
B(CreateCatchContext), R(5), U8(4),
B(Star), R(4),
B(LdaTheHole),
B(SetPendingMessage),
@ -85,7 +85,7 @@ bytecodes: [
B(Ldar), R(3),
B(SetPendingMessage),
B(Ldar), R(1),
B(SwitchOnSmiNoFeedback), U8(6), U8(3), I8(0),
B(SwitchOnSmiNoFeedback), U8(5), U8(3), I8(0),
B(Jump), U8(22),
B(LdaTrue),
B(Star), R(6),
@ -105,14 +105,13 @@ constant pool: [
Smi [70],
Smi [15],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
Smi [6],
Smi [20],
Smi [23],
]
handlers: [
[20, 135, 143],
[20, 134, 142],
[23, 98, 100],
]
@ -123,7 +122,7 @@ snippet: "
"
frame size: 8
parameter count: 1
bytecode array length: 234
bytecode array length: 233
bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(3),
B(Mov), R(closure), R(1),
@ -144,7 +143,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(5), R(2),
B(Jump), U8(140),
B(Jump), U8(139),
/* 22 S> */ B(LdaSmi), I8(42),
B(Star), R(6),
B(LdaFalse),
@ -161,7 +160,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(5), R(2),
B(Jump), U8(96),
B(Jump), U8(95),
B(LdaUndefined),
B(Star), R(6),
B(Mov), R(0), R(5),
@ -179,10 +178,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(5), R(2),
B(Jump), U8(53),
B(Jump), U8(37),
B(Jump), U8(52),
B(Jump), U8(36),
B(Star), R(5),
B(CreateCatchContext), R(5), U8(7), U8(8),
B(CreateCatchContext), R(5), U8(7),
B(Star), R(4),
B(LdaTheHole),
B(SetPendingMessage),
@ -211,7 +210,7 @@ bytecodes: [
B(Ldar), R(3),
B(SetPendingMessage),
B(Ldar), R(1),
B(SwitchOnSmiNoFeedback), U8(9), U8(3), I8(0),
B(SwitchOnSmiNoFeedback), U8(8), U8(3), I8(0),
B(Jump), U8(22),
B(LdaTrue),
B(Star), R(6),
@ -234,14 +233,13 @@ constant pool: [
Smi [7],
Smi [15],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
Smi [6],
Smi [20],
Smi [23],
]
handlers: [
[20, 179, 187],
[20, 178, 186],
[23, 142, 144],
]
@ -252,7 +250,7 @@ snippet: "
"
frame size: 22
parameter count: 1
bytecode array length: 492
bytecode array length: 490
bytecodes: [
B(SwitchOnGeneratorState), R(2), U8(0), U8(3),
B(Mov), R(closure), R(11),
@ -273,7 +271,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(11),
B(Mov), R(15), R(12),
B(JumpConstant), U8(19),
B(JumpConstant), U8(18),
B(LdaZero),
B(Star), R(7),
B(Mov), R(context), R(17),
@ -318,13 +316,13 @@ bytecodes: [
B(LdaZero),
B(Star), R(15),
B(Mov), R(19), R(16),
B(Jump), U8(60),
B(Jump), U8(59),
B(LdaZero),
B(Star), R(7),
B(JumpLoop), U8(87), I8(0),
B(Jump), U8(38),
B(Jump), U8(37),
B(Star), R(19),
B(CreateCatchContext), R(19), U8(12), U8(13),
B(CreateCatchContext), R(19), U8(12),
B(Star), R(18),
B(LdaTheHole),
B(SetPendingMessage),
@ -352,7 +350,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(14),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(4), U8(14), U8(15),
B(LdaNamedProperty), R(4), U8(13), U8(15),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -366,7 +364,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(18),
B(LdaConstant), U8(15),
B(LdaConstant), U8(14),
B(Star), R(19),
B(CallRuntime), U16(Runtime::kNewTypeError), R(18), U8(2),
B(Throw),
@ -390,12 +388,12 @@ bytecodes: [
B(Ldar), R(17),
B(SetPendingMessage),
B(Ldar), R(15),
B(SwitchOnSmiNoFeedback), U8(16), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(11),
B(Mov), R(16), R(12),
B(Jump), U8(99),
B(Jump), U8(98),
B(Ldar), R(16),
B(ReThrow),
B(LdaUndefined),
@ -415,10 +413,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(11),
B(Mov), R(15), R(12),
B(Jump), U8(53),
B(Jump), U8(37),
B(Jump), U8(52),
B(Jump), U8(36),
B(Star), R(15),
B(CreateCatchContext), R(15), U8(12), U8(18),
B(CreateCatchContext), R(15), U8(17),
B(Star), R(14),
B(LdaTheHole),
B(SetPendingMessage),
@ -447,7 +445,7 @@ bytecodes: [
B(Ldar), R(13),
B(SetPendingMessage),
B(Ldar), R(11),
B(SwitchOnSmiNoFeedback), U8(20), U8(3), I8(0),
B(SwitchOnSmiNoFeedback), U8(19), U8(3), I8(0),
B(Jump), U8(22),
B(LdaTrue),
B(Star), R(16),
@ -465,7 +463,7 @@ bytecodes: [
constant pool: [
Smi [30],
Smi [154],
Smi [372],
Smi [371],
Smi [15],
Smi [7],
TUPLE2_TYPE,
@ -475,24 +473,23 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [15],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
Smi [6],
Smi [14],
SCOPE_INFO_TYPE,
Smi [398],
Smi [396],
Smi [6],
Smi [20],
Smi [23],
]
handlers: [
[20, 437, 445],
[23, 400, 402],
[61, 223, 231],
[20, 435, 443],
[23, 399, 401],
[61, 222, 230],
[64, 185, 187],
[292, 302, 304],
[291, 301, 303],
]
---
@ -503,7 +500,7 @@ snippet: "
"
frame size: 17
parameter count: 1
bytecode array length: 480
bytecode array length: 479
bytecodes: [
B(SwitchOnGeneratorState), R(0), U8(0), U8(5),
B(Mov), R(closure), R(1),
@ -524,7 +521,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(5), R(2),
B(JumpConstant), U8(19),
B(JumpConstant), U8(18),
/* 49 S> */ B(LdaGlobal), U8(7), U8(0),
B(Star), R(12),
/* 56 E> */ B(CallUndefinedReceiver0), R(12), U8(2),
@ -561,7 +558,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(8), R(2),
B(JumpConstant), U8(20),
B(JumpConstant), U8(19),
B(LdaNamedProperty), R(7), U8(14), U8(20),
B(JumpIfUndefined), U8(13),
B(JumpIfNull), U8(11),
@ -631,7 +628,7 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(7), R(2),
B(Jump), U8(96),
B(Jump), U8(95),
B(LdaUndefined),
B(Star), R(6),
B(Mov), R(0), R(5),
@ -649,10 +646,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(1),
B(Mov), R(5), R(2),
B(Jump), U8(53),
B(Jump), U8(37),
B(Jump), U8(52),
B(Jump), U8(36),
B(Star), R(5),
B(CreateCatchContext), R(5), U8(17), U8(18),
B(CreateCatchContext), R(5), U8(17),
B(Star), R(4),
B(LdaTheHole),
B(SetPendingMessage),
@ -681,7 +678,7 @@ bytecodes: [
B(Ldar), R(3),
B(SetPendingMessage),
B(Ldar), R(1),
B(SwitchOnSmiNoFeedback), U8(21), U8(3), I8(0),
B(SwitchOnSmiNoFeedback), U8(20), U8(3), I8(0),
B(Jump), U8(22),
B(LdaTrue),
B(Star), R(6),
@ -714,16 +711,15 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
Smi [386],
Smi [287],
Smi [385],
Smi [286],
Smi [6],
Smi [20],
Smi [23],
]
handlers: [
[20, 425, 433],
[20, 424, 432],
[23, 388, 390],
]

View File

@ -16,7 +16,7 @@ snippet: "
"
frame size: 23
parameter count: 1
bytecode array length: 510
bytecode array length: 508
bytecodes: [
B(SwitchOnGeneratorState), R(2), U8(0), U8(3),
B(Mov), R(closure), R(12),
@ -81,9 +81,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(7),
B(JumpLoop), U8(82), I8(0),
B(Jump), U8(38),
B(Jump), U8(37),
B(Star), R(20),
B(CreateCatchContext), R(20), U8(9), U8(10),
B(CreateCatchContext), R(20), U8(9),
B(Star), R(19),
B(LdaTheHole),
B(SetPendingMessage),
@ -111,7 +111,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(18),
B(JumpIfTrue), U8(167),
B(LdaNamedProperty), R(4), U8(11), U8(19),
B(LdaNamedProperty), R(4), U8(10), U8(19),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -125,7 +125,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(19),
B(LdaConstant), U8(12),
B(LdaConstant), U8(11),
B(Star), R(20),
B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2),
B(Throw),
@ -189,10 +189,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(12),
B(Mov), R(11), R(13),
B(Jump), U8(56),
B(Jump), U8(40),
B(Jump), U8(55),
B(Jump), U8(39),
B(Star), R(16),
B(CreateCatchContext), R(16), U8(9), U8(13),
B(CreateCatchContext), R(16), U8(12),
B(Star), R(15),
B(LdaTheHole),
B(SetPendingMessage),
@ -223,7 +223,7 @@ bytecodes: [
B(Ldar), R(14),
B(SetPendingMessage),
B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(13),
/* 57 S> */ B(Return),
@ -234,15 +234,14 @@ bytecodes: [
]
constant pool: [
Smi [110],
Smi [307],
Smi [364],
Smi [306],
Smi [363],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -251,11 +250,11 @@ constant pool: [
Smi [9],
]
handlers: [
[26, 469, 477],
[29, 429, 431],
[35, 212, 220],
[26, 467, 475],
[29, 428, 430],
[35, 211, 219],
[38, 174, 176],
[280, 329, 331],
[279, 328, 330],
]
---
@ -267,7 +266,7 @@ snippet: "
"
frame size: 23
parameter count: 1
bytecode array length: 539
bytecode array length: 537
bytecodes: [
B(SwitchOnGeneratorState), R(2), U8(0), U8(3),
B(Mov), R(closure), R(12),
@ -332,10 +331,10 @@ bytecodes: [
/* 56 S> */ B(LdaZero),
B(Star), R(16),
B(Mov), R(8), R(17),
B(Jump), U8(54),
B(Jump), U8(38),
B(Jump), U8(53),
B(Jump), U8(37),
B(Star), R(20),
B(CreateCatchContext), R(20), U8(9), U8(10),
B(CreateCatchContext), R(20), U8(9),
B(Star), R(19),
B(LdaTheHole),
B(SetPendingMessage),
@ -363,7 +362,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(18),
B(JumpIfTrue), U8(167),
B(LdaNamedProperty), R(4), U8(11), U8(19),
B(LdaNamedProperty), R(4), U8(10), U8(19),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -377,7 +376,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(19),
B(LdaConstant), U8(12),
B(LdaConstant), U8(11),
B(Star), R(20),
B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2),
B(Throw),
@ -430,12 +429,12 @@ bytecodes: [
B(Ldar), R(18),
B(SetPendingMessage),
B(Ldar), R(16),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(12), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(12),
B(Mov), R(17), R(13),
B(Jump), U8(79),
B(Jump), U8(78),
B(Ldar), R(17),
B(ReThrow),
B(LdaUndefined),
@ -445,10 +444,10 @@ bytecodes: [
B(LdaSmi), I8(1),
B(Star), R(12),
B(Mov), R(11), R(13),
B(Jump), U8(57),
B(Jump), U8(41),
B(Jump), U8(56),
B(Jump), U8(40),
B(Star), R(16),
B(CreateCatchContext), R(16), U8(9), U8(15),
B(CreateCatchContext), R(16), U8(14),
B(Star), R(15),
B(LdaTheHole),
B(SetPendingMessage),
@ -479,7 +478,7 @@ bytecodes: [
B(Ldar), R(14),
B(SetPendingMessage),
B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(16), U8(3), I8(0),
B(SwitchOnSmiNoFeedback), U8(15), U8(3), I8(0),
B(Jump), U8(21),
B(Mov), R(11), R(15),
B(Mov), R(13), R(16),
@ -495,15 +494,14 @@ bytecodes: [
]
constant pool: [
Smi [110],
Smi [310],
Smi [367],
Smi [309],
Smi [366],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -515,11 +513,11 @@ constant pool: [
Smi [22],
]
handlers: [
[26, 485, 493],
[29, 444, 446],
[35, 214, 222],
[26, 483, 491],
[29, 443, 445],
[35, 213, 221],
[38, 176, 178],
[283, 332, 334],
[282, 331, 333],
]
---
@ -534,7 +532,7 @@ snippet: "
"
frame size: 23
parameter count: 1
bytecode array length: 528
bytecode array length: 526
bytecodes: [
B(SwitchOnGeneratorState), R(2), U8(0), U8(3),
B(Mov), R(closure), R(12),
@ -607,9 +605,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(7),
B(JumpLoop), U8(100), I8(0),
B(Jump), U8(38),
B(Jump), U8(37),
B(Star), R(20),
B(CreateCatchContext), R(20), U8(9), U8(10),
B(CreateCatchContext), R(20), U8(9),
B(Star), R(19),
B(LdaTheHole),
B(SetPendingMessage),
@ -637,7 +635,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(20),
B(JumpIfTrue), U8(167),
B(LdaNamedProperty), R(4), U8(11), U8(21),
B(LdaNamedProperty), R(4), U8(10), U8(21),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -651,7 +649,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(19),
B(LdaConstant), U8(12),
B(LdaConstant), U8(11),
B(Star), R(20),
B(CallRuntime), U16(Runtime::kNewTypeError), R(19), U8(2),
B(Throw),
@ -715,10 +713,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(12),
B(Mov), R(11), R(13),
B(Jump), U8(56),
B(Jump), U8(40),
B(Jump), U8(55),
B(Jump), U8(39),
B(Star), R(16),
B(CreateCatchContext), R(16), U8(9), U8(13),
B(CreateCatchContext), R(16), U8(12),
B(Star), R(15),
B(LdaTheHole),
B(SetPendingMessage),
@ -749,7 +747,7 @@ bytecodes: [
B(Ldar), R(14),
B(SetPendingMessage),
B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(13), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(13),
/* 114 S> */ B(Return),
@ -760,15 +758,14 @@ bytecodes: [
]
constant pool: [
Smi [110],
Smi [325],
Smi [382],
Smi [324],
Smi [381],
TUPLE2_TYPE,
SYMBOL_TYPE,
SYMBOL_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -777,11 +774,11 @@ constant pool: [
Smi [9],
]
handlers: [
[26, 487, 495],
[29, 447, 449],
[35, 230, 238],
[26, 485, 493],
[29, 446, 448],
[35, 229, 237],
[38, 192, 194],
[298, 347, 349],
[297, 346, 348],
]
---
@ -794,7 +791,7 @@ snippet: "
"
frame size: 20
parameter count: 1
bytecode array length: 399
bytecode array length: 397
bytecodes: [
/* 16 E> */ B(StackCheck),
B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
@ -836,10 +833,10 @@ bytecodes: [
B(Star), R(15),
B(LdaZero),
B(Star), R(14),
B(Jump), U8(54),
B(Jump), U8(38),
B(Jump), U8(53),
B(Jump), U8(37),
B(Star), R(18),
B(CreateCatchContext), R(18), U8(7), U8(8),
B(CreateCatchContext), R(18), U8(7),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
@ -867,7 +864,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(5), U8(19),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(2), U8(9), U8(20),
B(LdaNamedProperty), R(2), U8(8), U8(20),
B(Star), R(7),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -881,7 +878,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(17),
B(LdaConstant), U8(10),
B(LdaConstant), U8(9),
B(Star), R(18),
B(CallRuntime), U16(Runtime::kNewTypeError), R(17), U8(2),
B(Throw),
@ -905,12 +902,12 @@ bytecodes: [
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
B(Jump), U8(13),
B(LdaZero),
B(Star), R(10),
B(Mov), R(15), R(11),
B(Jump), U8(79),
B(Jump), U8(78),
B(Ldar), R(15),
B(ReThrow),
B(LdaUndefined),
@ -920,10 +917,10 @@ bytecodes: [
B(LdaSmi), I8(1),
B(Star), R(10),
B(Mov), R(9), R(11),
B(Jump), U8(57),
B(Jump), U8(41),
B(Jump), U8(56),
B(Jump), U8(40),
B(Star), R(14),
B(CreateCatchContext), R(14), U8(7), U8(13),
B(CreateCatchContext), R(14), U8(12),
B(Star), R(13),
B(LdaTheHole),
B(SetPendingMessage),
@ -954,7 +951,7 @@ bytecodes: [
B(Ldar), R(12),
B(SetPendingMessage),
B(Ldar), R(10),
B(SwitchOnSmiNoFeedback), U8(14), U8(3), I8(0),
B(SwitchOnSmiNoFeedback), U8(13), U8(3), I8(0),
B(Jump), U8(21),
B(Mov), R(9), R(13),
B(Mov), R(11), R(14),
@ -976,7 +973,6 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -988,10 +984,10 @@ constant pool: [
Smi [22],
]
handlers: [
[10, 345, 353],
[13, 304, 306],
[27, 151, 159],
[10, 343, 351],
[13, 303, 305],
[27, 150, 158],
[30, 113, 115],
[220, 230, 232],
[219, 229, 231],
]

View File

@ -11,7 +11,7 @@ snippet: "
"
frame size: 15
parameter count: 1
bytecode array length: 246
bytecode array length: 245
bytecodes: [
/* 30 E> */ B(StackCheck),
B(LdaZero),
@ -46,9 +46,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(5),
B(JumpLoop), U8(44), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(13),
B(CreateCatchContext), R(13), U8(5), U8(6),
B(CreateCatchContext), R(13), U8(5),
B(PushContext), R(13),
B(Star), R(12),
B(LdaSmi), I8(2),
@ -73,7 +73,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(5), U8(14),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(2), U8(7), U8(15),
B(LdaNamedProperty), R(2), U8(6), U8(15),
B(Star), R(7),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -87,7 +87,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(12),
B(LdaConstant), U8(8),
B(LdaConstant), U8(7),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Throw),
@ -124,15 +124,14 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
[7, 122, 130],
[7, 121, 129],
[10, 88, 90],
[190, 200, 202],
[189, 199, 201],
]
---
@ -142,7 +141,7 @@ snippet: "
"
frame size: 16
parameter count: 1
bytecode array length: 256
bytecode array length: 255
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaConstant), U8(0),
@ -178,10 +177,10 @@ bytecodes: [
/* 73 S> */ B(LdaZero),
B(Star), R(10),
B(Mov), R(7), R(11),
B(Jump), U8(50),
B(Jump), U8(34),
B(Jump), U8(49),
B(Jump), U8(33),
B(Star), R(14),
B(CreateCatchContext), R(14), U8(5), U8(6),
B(CreateCatchContext), R(14), U8(5),
B(PushContext), R(14),
B(Star), R(13),
B(LdaSmi), I8(2),
@ -206,7 +205,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(6), U8(13),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(3), U8(7), U8(14),
B(LdaNamedProperty), R(3), U8(6), U8(14),
B(Star), R(8),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -220,7 +219,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(13),
B(LdaConstant), U8(8),
B(LdaConstant), U8(7),
B(Star), R(14),
B(CallRuntime), U16(Runtime::kNewTypeError), R(13), U8(2),
B(Throw),
@ -244,7 +243,7 @@ bytecodes: [
B(Ldar), R(12),
B(SetPendingMessage),
B(Ldar), R(10),
B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(8), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(11),
/* 85 S> */ B(Return),
@ -259,7 +258,6 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -267,9 +265,9 @@ constant pool: [
Smi [9],
]
handlers: [
[11, 125, 133],
[11, 124, 132],
[14, 91, 93],
[194, 204, 206],
[193, 203, 205],
]
---
@ -281,7 +279,7 @@ snippet: "
"
frame size: 15
parameter count: 1
bytecode array length: 264
bytecode array length: 263
bytecodes: [
/* 30 E> */ B(StackCheck),
B(LdaZero),
@ -324,9 +322,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(5),
B(JumpLoop), U8(62), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(13),
B(CreateCatchContext), R(13), U8(5), U8(6),
B(CreateCatchContext), R(13), U8(5),
B(PushContext), R(13),
B(Star), R(12),
B(LdaSmi), I8(2),
@ -351,7 +349,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(5), U8(16),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(2), U8(7), U8(17),
B(LdaNamedProperty), R(2), U8(6), U8(17),
B(Star), R(7),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -365,7 +363,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(12),
B(LdaConstant), U8(8),
B(LdaConstant), U8(7),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Throw),
@ -402,15 +400,14 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
[7, 140, 148],
[7, 139, 147],
[10, 106, 108],
[208, 218, 220],
[207, 217, 219],
]
---
@ -420,7 +417,7 @@ snippet: "
"
frame size: 14
parameter count: 1
bytecode array length: 266
bytecode array length: 265
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(CreateObjectLiteral), U8(0), U8(0), U8(41), R(8),
@ -458,10 +455,10 @@ bytecodes: [
B(Star), R(9),
B(LdaZero),
B(Star), R(8),
B(Jump), U8(50),
B(Jump), U8(34),
B(Jump), U8(49),
B(Jump), U8(33),
B(Star), R(12),
B(CreateCatchContext), R(12), U8(7), U8(8),
B(CreateCatchContext), R(12), U8(7),
B(PushContext), R(12),
B(Star), R(11),
B(LdaSmi), I8(2),
@ -486,7 +483,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(4), U8(19),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(1), U8(9), U8(20),
B(LdaNamedProperty), R(1), U8(8), U8(20),
B(Star), R(6),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -500,7 +497,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(11),
B(LdaConstant), U8(10),
B(LdaConstant), U8(9),
B(Star), R(12),
B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
B(Throw),
@ -524,7 +521,7 @@ bytecodes: [
B(Ldar), R(10),
B(SetPendingMessage),
B(Ldar), R(8),
B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(9),
/* 105 S> */ B(Return),
@ -541,7 +538,6 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -549,8 +545,8 @@ constant pool: [
Smi [9],
]
handlers: [
[15, 135, 143],
[15, 134, 142],
[18, 101, 103],
[204, 214, 216],
[203, 213, 215],
]

View File

@ -15,7 +15,7 @@ snippet: "
"
frame size: 17
parameter count: 2
bytecode array length: 246
bytecode array length: 245
bytecodes: [
/* 10 E> */ B(StackCheck),
B(LdaZero),
@ -50,9 +50,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(7),
B(JumpLoop), U8(47), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(15),
/* 49 E> */ B(CreateCatchContext), R(15), U8(4), U8(5),
/* 49 E> */ B(CreateCatchContext), R(15), U8(4),
B(PushContext), R(15),
B(Star), R(14),
B(LdaSmi), I8(2),
@ -77,7 +77,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(13),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(4), U8(6), U8(14),
B(LdaNamedProperty), R(4), U8(5), U8(14),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -91,7 +91,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(14),
B(LdaConstant), U8(7),
B(LdaConstant), U8(6),
B(Star), R(15),
B(CallRuntime), U16(Runtime::kNewTypeError), R(14), U8(2),
B(Throw),
@ -127,15 +127,14 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
[7, 122, 130],
[7, 121, 129],
[10, 88, 90],
[190, 200, 202],
[189, 199, 201],
]
---
@ -147,7 +146,7 @@ snippet: "
"
frame size: 24
parameter count: 2
bytecode array length: 326
bytecode array length: 325
bytecodes: [
B(CreateFunctionContext), U8(0), U8(4),
B(PushContext), R(9),
@ -218,9 +217,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(4),
B(JumpLoop), U8(95), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(15),
B(CreateCatchContext), R(15), U8(9), U8(10),
B(CreateCatchContext), R(15), U8(9),
B(PushContext), R(15),
B(Star), R(14),
B(LdaSmi), I8(2),
@ -245,7 +244,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(4), U8(17),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(1), U8(11), U8(18),
B(LdaNamedProperty), R(1), U8(10), U8(18),
B(Star), R(6),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -259,7 +258,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(14),
B(LdaConstant), U8(12),
B(LdaConstant), U8(11),
B(Star), R(15),
B(CallRuntime), U16(Runtime::kNewTypeError), R(14), U8(2),
B(Throw),
@ -301,15 +300,14 @@ constant pool: [
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["eval"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["1"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
[34, 200, 208],
[34, 199, 207],
[37, 166, 168],
[268, 278, 280],
[267, 277, 279],
]
---
@ -321,7 +319,7 @@ snippet: "
"
frame size: 15
parameter count: 2
bytecode array length: 262
bytecode array length: 261
bytecodes: [
/* 10 E> */ B(StackCheck),
B(LdaZero),
@ -364,9 +362,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(5),
B(JumpLoop), U8(63), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(13),
B(CreateCatchContext), R(13), U8(6), U8(7),
B(CreateCatchContext), R(13), U8(6),
B(PushContext), R(13),
B(Star), R(12),
B(LdaSmi), I8(2),
@ -391,7 +389,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(5), U8(16),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(2), U8(8), U8(17),
B(LdaNamedProperty), R(2), U8(7), U8(17),
B(Star), R(7),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -405,7 +403,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(12),
B(LdaConstant), U8(9),
B(LdaConstant), U8(8),
B(Star), R(13),
B(CallRuntime), U16(Runtime::kNewTypeError), R(12), U8(2),
B(Throw),
@ -443,15 +441,14 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
SCOPE_INFO_TYPE,
SHARED_FUNCTION_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
[7, 138, 146],
[7, 137, 145],
[10, 104, 106],
[206, 216, 218],
[205, 215, 217],
]
---
@ -463,7 +460,7 @@ snippet: "
"
frame size: 20
parameter count: 2
bytecode array length: 284
bytecode array length: 283
bytecodes: [
/* 10 E> */ B(StackCheck),
B(LdaZero),
@ -514,9 +511,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(10),
B(JumpLoop), U8(85), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(18),
/* 56 E> */ B(CreateCatchContext), R(18), U8(6), U8(7),
/* 56 E> */ B(CreateCatchContext), R(18), U8(6),
B(PushContext), R(18),
B(Star), R(17),
B(LdaSmi), I8(2),
@ -541,7 +538,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(10), U8(18),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(7), U8(8), U8(19),
B(LdaNamedProperty), R(7), U8(7), U8(19),
B(Star), R(12),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -555,7 +552,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(17),
B(LdaConstant), U8(9),
B(LdaConstant), U8(8),
B(Star), R(18),
B(CallRuntime), U16(Runtime::kNewTypeError), R(17), U8(2),
B(Throw),
@ -593,15 +590,14 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["y"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
[7, 160, 168],
[7, 159, 167],
[10, 126, 128],
[228, 238, 240],
[227, 237, 239],
]
---
@ -613,7 +609,7 @@ snippet: "
"
frame size: 19
parameter count: 2
bytecode array length: 297
bytecode array length: 296
bytecodes: [
B(SwitchOnGeneratorState), R(3), U8(0), U8(1),
B(CreateFunctionContext), U8(1), U8(1),
@ -667,9 +663,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(8),
B(JumpLoop), U8(47), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(17),
/* 50 E> */ B(CreateCatchContext), R(17), U8(8), U8(9),
/* 50 E> */ B(CreateCatchContext), R(17), U8(8),
B(PushContext), R(17),
B(Star), R(16),
B(LdaSmi), I8(2),
@ -694,7 +690,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(8), U8(13),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(5), U8(10), U8(14),
B(LdaNamedProperty), R(5), U8(9), U8(14),
B(Star), R(10),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -708,7 +704,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(16),
B(LdaConstant), U8(11),
B(LdaConstant), U8(10),
B(Star), R(17),
B(CallRuntime), U16(Runtime::kNewTypeError), R(16), U8(2),
B(Throw),
@ -748,15 +744,14 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
]
handlers: [
[57, 173, 181],
[57, 172, 180],
[60, 139, 141],
[241, 251, 253],
[240, 250, 252],
]
---
@ -768,7 +763,7 @@ snippet: "
"
frame size: 18
parameter count: 2
bytecode array length: 341
bytecode array length: 340
bytecodes: [
B(SwitchOnGeneratorState), R(2), U8(0), U8(2),
B(CreateFunctionContext), U8(2), U8(1),
@ -832,13 +827,13 @@ bytecodes: [
B(LdaZero),
B(Star), R(12),
B(Mov), R(16), R(13),
B(Jump), U8(56),
B(Jump), U8(55),
B(LdaZero),
B(Star), R(7),
B(JumpLoop), U8(84), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(16),
B(CreateCatchContext), R(16), U8(11), U8(12),
B(CreateCatchContext), R(16), U8(11),
B(PushContext), R(16),
B(Star), R(15),
B(LdaSmi), I8(2),
@ -863,7 +858,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(13),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(4), U8(13), U8(14),
B(LdaNamedProperty), R(4), U8(12), U8(14),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -877,7 +872,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(15),
B(LdaConstant), U8(14),
B(LdaConstant), U8(13),
B(Star), R(16),
B(CallRuntime), U16(Runtime::kNewTypeError), R(15), U8(2),
B(Throw),
@ -901,7 +896,7 @@ bytecodes: [
B(Ldar), R(14),
B(SetPendingMessage),
B(Ldar), R(12),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(13),
/* 49 S> */ B(Return),
@ -922,7 +917,6 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [15],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -930,9 +924,9 @@ constant pool: [
Smi [9],
]
handlers: [
[57, 210, 218],
[57, 209, 217],
[60, 176, 178],
[279, 289, 291],
[278, 288, 290],
]
---
@ -944,7 +938,7 @@ snippet: "
"
frame size: 24
parameter count: 2
bytecode array length: 369
bytecode array length: 367
bytecodes: [
B(CreateFunctionContext), U8(0), U8(1),
B(PushContext), R(13),
@ -988,9 +982,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(8),
B(JumpLoop), U8(47), I8(0),
B(Jump), U8(38),
B(Jump), U8(37),
B(Star), R(22),
/* 55 E> */ B(CreateCatchContext), R(22), U8(5), U8(6),
/* 55 E> */ B(CreateCatchContext), R(22), U8(5),
B(Star), R(21),
B(LdaTheHole),
B(SetPendingMessage),
@ -1018,7 +1012,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(8), U8(13),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(5), U8(7), U8(14),
B(LdaNamedProperty), R(5), U8(6), U8(14),
B(Star), R(10),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -1032,7 +1026,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(21),
B(LdaConstant), U8(8),
B(LdaConstant), U8(7),
B(Star), R(22),
B(CallRuntime), U16(Runtime::kNewTypeError), R(21), U8(2),
B(Throw),
@ -1067,10 +1061,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(14),
B(Mov), R(12), R(15),
B(Jump), U8(56),
B(Jump), U8(40),
B(Jump), U8(55),
B(Jump), U8(39),
B(Star), R(18),
B(CreateCatchContext), R(18), U8(5), U8(9),
B(CreateCatchContext), R(18), U8(8),
B(Star), R(17),
B(LdaTheHole),
B(SetPendingMessage),
@ -1101,7 +1095,7 @@ bytecodes: [
B(Ldar), R(16),
B(SetPendingMessage),
B(Ldar), R(14),
B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(9), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(15),
/* 60 S> */ B(Return),
@ -1116,7 +1110,6 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -1125,11 +1118,11 @@ constant pool: [
Smi [9],
]
handlers: [
[19, 328, 336],
[22, 288, 290],
[28, 148, 156],
[19, 326, 334],
[22, 287, 289],
[28, 147, 155],
[31, 110, 112],
[216, 226, 228],
[215, 225, 227],
]
---
@ -1141,7 +1134,7 @@ snippet: "
"
frame size: 24
parameter count: 2
bytecode array length: 420
bytecode array length: 418
bytecodes: [
B(SwitchOnGeneratorState), R(2), U8(0), U8(1),
B(CreateFunctionContext), U8(1), U8(1),
@ -1203,9 +1196,9 @@ bytecodes: [
B(LdaZero),
B(Star), R(7),
B(JumpLoop), U8(82), I8(0),
B(Jump), U8(38),
B(Jump), U8(37),
B(Star), R(21),
B(CreateCatchContext), R(21), U8(6), U8(7),
B(CreateCatchContext), R(21), U8(6),
B(Star), R(20),
B(LdaTheHole),
B(SetPendingMessage),
@ -1233,7 +1226,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(13),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(4), U8(8), U8(14),
B(LdaNamedProperty), R(4), U8(7), U8(14),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -1247,7 +1240,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(20),
B(LdaConstant), U8(9),
B(LdaConstant), U8(8),
B(Star), R(21),
B(CallRuntime), U16(Runtime::kNewTypeError), R(20), U8(2),
B(Throw),
@ -1282,10 +1275,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(13),
B(Mov), R(11), R(14),
B(Jump), U8(56),
B(Jump), U8(40),
B(Jump), U8(55),
B(Jump), U8(39),
B(Star), R(17),
B(CreateCatchContext), R(17), U8(6), U8(10),
B(CreateCatchContext), R(17), U8(9),
B(Star), R(16),
B(LdaTheHole),
B(SetPendingMessage),
@ -1316,7 +1309,7 @@ bytecodes: [
B(Ldar), R(15),
B(SetPendingMessage),
B(Ldar), R(13),
B(SwitchOnSmiNoFeedback), U8(11), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(14),
/* 54 S> */ B(Return),
@ -1332,7 +1325,6 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -1341,10 +1333,10 @@ constant pool: [
Smi [9],
]
handlers: [
[35, 379, 387],
[38, 339, 341],
[44, 199, 207],
[35, 377, 385],
[38, 338, 340],
[44, 198, 206],
[47, 161, 163],
[267, 277, 279],
[266, 276, 278],
]

View File

@ -100,7 +100,7 @@ snippet: "
"
frame size: 17
parameter count: 1
bytecode array length: 334
bytecode array length: 333
bytecodes: [
B(SwitchOnGeneratorState), R(2), U8(0), U8(2),
B(Mov), R(closure), R(11),
@ -160,13 +160,13 @@ bytecodes: [
B(LdaZero),
B(Star), R(11),
B(Mov), R(15), R(12),
B(Jump), U8(56),
B(Jump), U8(55),
B(LdaZero),
B(Star), R(7),
B(JumpLoop), U8(84), I8(0),
B(Jump), U8(34),
B(Jump), U8(33),
B(Star), R(15),
B(CreateCatchContext), R(15), U8(11), U8(12),
B(CreateCatchContext), R(15), U8(11),
B(PushContext), R(15),
B(Star), R(14),
B(LdaSmi), I8(2),
@ -191,7 +191,7 @@ bytecodes: [
B(LdaZero),
B(TestEqualStrict), R(7), U8(14),
B(JumpIfTrue), U8(90),
B(LdaNamedProperty), R(4), U8(13), U8(15),
B(LdaNamedProperty), R(4), U8(12), U8(15),
B(Star), R(9),
B(TestUndetectable),
B(JumpIfFalse), U8(4),
@ -205,7 +205,7 @@ bytecodes: [
B(Jump), U8(18),
B(Wide), B(LdaSmi), I16(145),
B(Star), R(14),
B(LdaConstant), U8(14),
B(LdaConstant), U8(13),
B(Star), R(15),
B(CallRuntime), U16(Runtime::kNewTypeError), R(14), U8(2),
B(Throw),
@ -229,7 +229,7 @@ bytecodes: [
B(Ldar), R(13),
B(SetPendingMessage),
B(Ldar), R(11),
B(SwitchOnSmiNoFeedback), U8(15), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(14), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(12),
/* 44 S> */ B(Return),
@ -250,7 +250,6 @@ constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
Smi [15],
Smi [7],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
@ -258,9 +257,9 @@ constant pool: [
Smi [9],
]
handlers: [
[48, 203, 211],
[48, 202, 210],
[51, 169, 171],
[272, 282, 284],
[271, 281, 283],
]
---

View File

@ -381,7 +381,7 @@ snippet: "
"
frame size: 12
parameter count: 1
bytecode array length: 135
bytecode array length: 134
bytecodes: [
/* 16 E> */ B(StackCheck),
B(CallJSRuntime), U8(%async_function_promise_create), R(0), U8(0),
@ -406,10 +406,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(4),
B(Mov), R(3), R(5),
B(Jump), U8(56),
B(Jump), U8(40),
B(Jump), U8(55),
B(Jump), U8(39),
B(Star), R(8),
B(CreateCatchContext), R(8), U8(0), U8(1),
B(CreateCatchContext), R(8), U8(0),
B(Star), R(7),
B(LdaTheHole),
B(SetPendingMessage),
@ -440,7 +440,7 @@ bytecodes: [
B(Ldar), R(6),
B(SetPendingMessage),
B(Ldar), R(4),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(5),
/* 67 S> */ B(Return),
@ -450,13 +450,12 @@ bytecodes: [
/* 67 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
Smi [6],
Smi [9],
]
handlers: [
[10, 94, 102],
[10, 93, 101],
[13, 54, 56],
]
@ -469,7 +468,7 @@ snippet: "
"
frame size: 11
parameter count: 1
bytecode array length: 186
bytecode array length: 185
bytecodes: [
B(SwitchOnGeneratorState), R(1), U8(0), U8(1),
B(Mov), R(closure), R(3),
@ -512,10 +511,10 @@ bytecodes: [
B(LdaZero),
B(Star), R(3),
B(Mov), R(2), R(4),
B(Jump), U8(56),
B(Jump), U8(40),
B(Jump), U8(55),
B(Jump), U8(39),
B(Star), R(7),
B(CreateCatchContext), R(7), U8(1), U8(2),
B(CreateCatchContext), R(7), U8(1),
B(Star), R(6),
B(LdaTheHole),
B(SetPendingMessage),
@ -546,7 +545,7 @@ bytecodes: [
B(Ldar), R(5),
B(SetPendingMessage),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(3), U8(2), I8(0),
B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
B(Jump), U8(8),
B(Ldar), R(4),
/* 61 S> */ B(Return),
@ -557,13 +556,12 @@ bytecodes: [
]
constant pool: [
Smi [58],
ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
SCOPE_INFO_TYPE,
Smi [6],
Smi [9],
]
handlers: [
[26, 145, 153],
[26, 144, 152],
[29, 105, 107],
]

View File

@ -11,15 +11,15 @@ snippet: "
"
frame size: 2
parameter count: 1
bytecode array length: 28
bytecode array length: 27
bytecodes: [
/* 30 E> */ B(StackCheck),
B(Mov), R(context), R(0),
/* 40 S> */ B(LdaSmi), I8(1),
/* 49 S> */ B(Return),
B(Jump), U8(19),
B(Jump), U8(18),
B(Star), R(1),
B(CreateCatchContext), R(1), U8(0), U8(1),
B(CreateCatchContext), R(1), U8(0),
B(Star), R(0),
B(LdaTheHole),
B(SetPendingMessage),
@ -31,7 +31,6 @@ bytecodes: [
/* 75 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["e"],
SCOPE_INFO_TYPE,
]
handlers: [
@ -46,15 +45,15 @@ snippet: "
"
frame size: 3
parameter count: 1
bytecode array length: 57
bytecode array length: 55
bytecodes: [
/* 30 E> */ B(StackCheck),
B(Mov), R(context), R(1),
/* 47 S> */ B(LdaSmi), I8(1),
B(Star), R(0),
B(Jump), U8(18),
B(Jump), U8(17),
B(Star), R(2),
/* 49 E> */ B(CreateCatchContext), R(2), U8(0), U8(1),
/* 49 E> */ B(CreateCatchContext), R(2), U8(0),
B(Star), R(1),
B(LdaTheHole),
B(SetPendingMessage),
@ -64,9 +63,9 @@ bytecodes: [
B(Mov), R(context), R(1),
/* 75 S> */ B(LdaSmi), I8(2),
B(Star), R(0),
B(Jump), U8(22),
B(Jump), U8(21),
B(Star), R(2),
/* 77 E> */ B(CreateCatchContext), R(2), U8(2), U8(3),
/* 77 E> */ B(CreateCatchContext), R(2), U8(1),
B(Star), R(1),
B(LdaTheHole),
B(SetPendingMessage),
@ -79,13 +78,11 @@ bytecodes: [
/* 103 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["e1"],
SCOPE_INFO_TYPE,
ONE_BYTE_INTERNALIZED_STRING_TYPE ["e2"],
SCOPE_INFO_TYPE,
]
handlers: [
[4, 8, 10],
[29, 33, 35],
[28, 32, 34],
]

View File

@ -55,7 +55,7 @@ snippet: "
"
frame size: 6
parameter count: 1
bytecode array length: 71
bytecode array length: 70
bytecodes: [
/* 30 E> */ B(StackCheck),
/* 42 S> */ B(LdaSmi), I8(1),
@ -64,9 +64,9 @@ bytecodes: [
B(Mov), R(context), R(4),
/* 51 S> */ B(LdaSmi), I8(2),
B(Star), R(0),
B(Jump), U8(22),
B(Jump), U8(21),
B(Star), R(5),
/* 53 E> */ B(CreateCatchContext), R(5), U8(0), U8(1),
/* 53 E> */ B(CreateCatchContext), R(5), U8(0),
B(Star), R(4),
B(LdaTheHole),
B(SetPendingMessage),
@ -98,11 +98,10 @@ bytecodes: [
/* 99 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["e"],
SCOPE_INFO_TYPE,
]
handlers: [
[8, 37, 45],
[8, 36, 44],
[11, 15, 17],
]
@ -114,7 +113,7 @@ snippet: "
"
frame size: 7
parameter count: 1
bytecode array length: 92
bytecode array length: 90
bytecodes: [
/* 30 E> */ B(StackCheck),
B(Mov), R(context), R(3),
@ -122,9 +121,9 @@ bytecodes: [
B(Mov), R(context), R(5),
/* 55 S> */ B(LdaSmi), I8(1),
B(Star), R(0),
B(Jump), U8(22),
B(Jump), U8(21),
B(Star), R(6),
/* 57 E> */ B(CreateCatchContext), R(6), U8(0), U8(1),
/* 57 E> */ B(CreateCatchContext), R(6), U8(0),
B(Star), R(5),
B(LdaTheHole),
B(SetPendingMessage),
@ -133,9 +132,9 @@ bytecodes: [
/* 74 S> */ B(LdaSmi), I8(2),
B(Star), R(0),
B(PopContext), R(6),
B(Jump), U8(22),
B(Jump), U8(21),
B(Star), R(5),
/* 76 E> */ B(CreateCatchContext), R(5), U8(0), U8(2),
/* 76 E> */ B(CreateCatchContext), R(5), U8(1),
B(Star), R(4),
B(LdaTheHole),
B(SetPendingMessage),
@ -167,13 +166,12 @@ bytecodes: [
/* 123 S> */ B(Return),
]
constant pool: [
ONE_BYTE_INTERNALIZED_STRING_TYPE ["e"],
SCOPE_INFO_TYPE,
SCOPE_INFO_TYPE,
]
handlers: [
[4, 58, 66],
[7, 36, 38],
[4, 56, 64],
[7, 35, 37],
[10, 14, 16],
]

View File

@ -183,15 +183,14 @@ TEST_F(JSCreateLoweringTest, JSCreateWithContext) {
// JSCreateCatchContext
TEST_F(JSCreateLoweringTest, JSCreateCatchContext) {
Handle<String> name = factory()->length_string();
Handle<ScopeInfo> scope_info(factory()->NewScopeInfo(1));
Node* const exception = Parameter(Type::Receiver());
Node* const context = Parameter(Type::Any());
Node* const effect = graph()->start();
Node* const control = graph()->start();
Reduction r = Reduce(
graph()->NewNode(javascript()->CreateCatchContext(name, scope_info),
exception, context, effect, control));
Reduction r =
Reduce(graph()->NewNode(javascript()->CreateCatchContext(scope_info),
exception, context, effect, control));
ASSERT_TRUE(r.Changed());
EXPECT_THAT(r.replacement(),
IsFinishRegion(IsAllocate(IsNumberConstant(Context::SizeFor(

View File

@ -168,7 +168,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
// Emit create context operation.
builder.CreateBlockContext(&scope);
builder.CreateCatchContext(reg, name, &scope);
builder.CreateCatchContext(reg, &scope);
builder.CreateFunctionContext(&scope, 1);
builder.CreateEvalContext(&scope, 1);
builder.CreateWithContext(reg, &scope);