Commit 4fda85aa authored by gsathya's avatar gsathya Committed by Commit bot

[promises] rename PromiseContainer to PromiseResolveThenableJobInfo

This is a much more descriptive name.

BUG=v8:5343
TBR=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2412263002
Cr-Commit-Position: refs/heads/master@{#40240}
parent 6f94a8f1
...@@ -261,7 +261,7 @@ AstType::bitset AstBitsetType::Lub(i::Map* map) { ...@@ -261,7 +261,7 @@ AstType::bitset AstBitsetType::Lub(i::Map* map) {
case ACCESS_CHECK_INFO_TYPE: case ACCESS_CHECK_INFO_TYPE:
case INTERCEPTOR_INFO_TYPE: case INTERCEPTOR_INFO_TYPE:
case CALL_HANDLER_INFO_TYPE: case CALL_HANDLER_INFO_TYPE:
case PROMISE_CONTAINER_TYPE: case PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE:
case PROMISE_REACTION_JOB_INFO_TYPE: case PROMISE_REACTION_JOB_INFO_TYPE:
case FUNCTION_TEMPLATE_INFO_TYPE: case FUNCTION_TEMPLATE_INFO_TYPE:
case OBJECT_TEMPLATE_INFO_TYPE: case OBJECT_TEMPLATE_INFO_TYPE:
......
...@@ -264,7 +264,7 @@ Type::bitset BitsetType::Lub(i::Map* map) { ...@@ -264,7 +264,7 @@ Type::bitset BitsetType::Lub(i::Map* map) {
case TYPE_FEEDBACK_INFO_TYPE: case TYPE_FEEDBACK_INFO_TYPE:
case ALIASED_ARGUMENTS_ENTRY_TYPE: case ALIASED_ARGUMENTS_ENTRY_TYPE:
case BOX_TYPE: case BOX_TYPE:
case PROMISE_CONTAINER_TYPE: case PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE:
case PROMISE_REACTION_JOB_INFO_TYPE: case PROMISE_REACTION_JOB_INFO_TYPE:
case DEBUG_INFO_TYPE: case DEBUG_INFO_TYPE:
case BREAK_POINT_INFO_TYPE: case BREAK_POINT_INFO_TYPE:
......
...@@ -923,12 +923,13 @@ Handle<Struct> Factory::NewStruct(InstanceType type) { ...@@ -923,12 +923,13 @@ Handle<Struct> Factory::NewStruct(InstanceType type) {
Struct); Struct);
} }
Handle<PromiseContainer> Factory::NewPromiseContainer( Handle<PromiseResolveThenableJobInfo> Factory::NewPromiseResolveThenableJobInfo(
Handle<JSReceiver> thenable, Handle<JSReceiver> then, Handle<JSReceiver> thenable, Handle<JSReceiver> then,
Handle<JSFunction> resolve, Handle<JSFunction> reject, Handle<JSFunction> resolve, Handle<JSFunction> reject,
Handle<Object> before_debug_event, Handle<Object> after_debug_event) { Handle<Object> before_debug_event, Handle<Object> after_debug_event) {
Handle<PromiseContainer> result = Handle<PromiseResolveThenableJobInfo> result =
Handle<PromiseContainer>::cast(NewStruct(PROMISE_CONTAINER_TYPE)); Handle<PromiseResolveThenableJobInfo>::cast(
NewStruct(PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE));
result->set_thenable(*thenable); result->set_thenable(*thenable);
result->set_then(*then); result->set_then(*then);
result->set_resolve(*resolve); result->set_resolve(*resolve);
......
...@@ -66,8 +66,8 @@ class Factory final { ...@@ -66,8 +66,8 @@ class Factory final {
Handle<Object> before_debug, Handle<Object> after_debug_event, Handle<Object> before_debug, Handle<Object> after_debug_event,
Handle<Context> context); Handle<Context> context);
// Create a new PromiseContainer struct. // Create a new PromiseResolveThenableJobInfo struct.
Handle<PromiseContainer> NewPromiseContainer( Handle<PromiseResolveThenableJobInfo> NewPromiseResolveThenableJobInfo(
Handle<JSReceiver> thenable, Handle<JSReceiver> then, Handle<JSReceiver> thenable, Handle<JSReceiver> then,
Handle<JSFunction> resolve, Handle<JSFunction> reject, Handle<JSFunction> resolve, Handle<JSFunction> reject,
Handle<Object> before_debug_event, Handle<Object> after_debug_event); Handle<Object> before_debug_event, Handle<Object> after_debug_event);
......
...@@ -3136,16 +3136,16 @@ void Isolate::PromiseReactionJob(Handle<PromiseReactionJobInfo> info, ...@@ -3136,16 +3136,16 @@ void Isolate::PromiseReactionJob(Handle<PromiseReactionJobInfo> info,
} }
} }
void Isolate::PromiseResolveThenableJob(Handle<PromiseContainer> container, void Isolate::PromiseResolveThenableJob(
MaybeHandle<Object>* result, Handle<PromiseResolveThenableJobInfo> info, MaybeHandle<Object>* result,
MaybeHandle<Object>* maybe_exception) { MaybeHandle<Object>* maybe_exception) {
PromiseDebugEventScope helper(this, container->before_debug_event(), PromiseDebugEventScope helper(this, info->before_debug_event(),
container->after_debug_event()); info->after_debug_event());
Handle<JSReceiver> thenable(container->thenable(), this); Handle<JSReceiver> thenable(info->thenable(), this);
Handle<JSFunction> resolve(container->resolve(), this); Handle<JSFunction> resolve(info->resolve(), this);
Handle<JSFunction> reject(container->reject(), this); Handle<JSFunction> reject(info->reject(), this);
Handle<JSReceiver> then(container->then(), this); Handle<JSReceiver> then(info->then(), this);
Handle<Object> argv[] = {resolve, reject}; Handle<Object> argv[] = {resolve, reject};
*result = Execution::TryCall(this, then, thenable, arraysize(argv), argv, *result = Execution::TryCall(this, then, thenable, arraysize(argv), argv,
maybe_exception); maybe_exception);
...@@ -3162,7 +3162,7 @@ void Isolate::PromiseResolveThenableJob(Handle<PromiseContainer> container, ...@@ -3162,7 +3162,7 @@ void Isolate::PromiseResolveThenableJob(Handle<PromiseContainer> container,
void Isolate::EnqueueMicrotask(Handle<Object> microtask) { void Isolate::EnqueueMicrotask(Handle<Object> microtask) {
DCHECK(microtask->IsJSFunction() || microtask->IsCallHandlerInfo() || DCHECK(microtask->IsJSFunction() || microtask->IsCallHandlerInfo() ||
microtask->IsPromiseContainer() || microtask->IsPromiseResolveThenableJobInfo() ||
microtask->IsPromiseReactionJobInfo()); microtask->IsPromiseReactionJobInfo());
Handle<FixedArray> queue(heap()->microtask_queue(), this); Handle<FixedArray> queue(heap()->microtask_queue(), this);
int num_tasks = pending_microtask_count(); int num_tasks = pending_microtask_count();
...@@ -3218,9 +3218,10 @@ void Isolate::RunMicrotasksInternal() { ...@@ -3218,9 +3218,10 @@ void Isolate::RunMicrotasksInternal() {
Context* context; Context* context;
if (microtask->IsJSFunction()) { if (microtask->IsJSFunction()) {
context = Handle<JSFunction>::cast(microtask)->context(); context = Handle<JSFunction>::cast(microtask)->context();
} else if (microtask->IsPromiseContainer()) { } else if (microtask->IsPromiseResolveThenableJobInfo()) {
context = context = Handle<PromiseResolveThenableJobInfo>::cast(microtask)
Handle<PromiseContainer>::cast(microtask)->resolve()->context(); ->resolve()
->context();
} else { } else {
context = Handle<PromiseReactionJobInfo>::cast(microtask)->context(); context = Handle<PromiseReactionJobInfo>::cast(microtask)->context();
} }
...@@ -3238,9 +3239,10 @@ void Isolate::RunMicrotasksInternal() { ...@@ -3238,9 +3239,10 @@ void Isolate::RunMicrotasksInternal() {
result = Execution::TryCall(this, microtask_function, result = Execution::TryCall(this, microtask_function,
factory()->undefined_value(), 0, NULL, factory()->undefined_value(), 0, NULL,
&maybe_exception); &maybe_exception);
} else if (microtask->IsPromiseContainer()) { } else if (microtask->IsPromiseResolveThenableJobInfo()) {
PromiseResolveThenableJob(Handle<PromiseContainer>::cast(microtask), PromiseResolveThenableJob(
&result, &maybe_exception); Handle<PromiseResolveThenableJobInfo>::cast(microtask), &result,
&maybe_exception);
} else { } else {
PromiseReactionJob(Handle<PromiseReactionJobInfo>::cast(microtask), PromiseReactionJob(Handle<PromiseReactionJobInfo>::cast(microtask),
&result, &maybe_exception); &result, &maybe_exception);
......
...@@ -1112,7 +1112,7 @@ class Isolate { ...@@ -1112,7 +1112,7 @@ class Isolate {
void PromiseReactionJob(Handle<PromiseReactionJobInfo> info, void PromiseReactionJob(Handle<PromiseReactionJobInfo> info,
MaybeHandle<Object>* result, MaybeHandle<Object>* result,
MaybeHandle<Object>* maybe_exception); MaybeHandle<Object>* maybe_exception);
void PromiseResolveThenableJob(Handle<PromiseContainer> container, void PromiseResolveThenableJob(Handle<PromiseResolveThenableJobInfo> info,
MaybeHandle<Object>* result, MaybeHandle<Object>* result,
MaybeHandle<Object>* maybe_exception); MaybeHandle<Object>* maybe_exception);
void EnqueueMicrotask(Handle<Object> microtask); void EnqueueMicrotask(Handle<Object> microtask);
......
...@@ -912,14 +912,17 @@ void Box::BoxVerify() { ...@@ -912,14 +912,17 @@ void Box::BoxVerify() {
value()->ObjectVerify(); value()->ObjectVerify();
} }
void PromiseContainer::PromiseContainerVerify() { void PromiseResolveThenableJobInfo::PromiseResolveThenableJobInfoVerify() {
CHECK(IsPromiseContainer()); Isolate* isolate = GetIsolate();
thenable()->ObjectVerify(); CHECK(IsPromiseResolveThenableJobInfo());
then()->ObjectVerify(); CHECK(thenable()->IsJSReceiver());
resolve()->ObjectVerify(); CHECK(then()->IsJSReceiver());
reject()->ObjectVerify(); CHECK(resolve()->IsJSFunction());
before_debug_event()->ObjectVerify(); CHECK(reject()->IsJSFunction());
after_debug_event()->ObjectVerify(); CHECK(before_debug_event()->IsJSObject() ||
before_debug_event()->IsUndefined(isolate));
CHECK(after_debug_event()->IsJSObject() ||
after_debug_event()->IsUndefined(isolate));
} }
void PromiseReactionJobInfo::PromiseReactionJobInfoVerify() { void PromiseReactionJobInfo::PromiseReactionJobInfoVerify() {
......
...@@ -5654,12 +5654,14 @@ ACCESSORS(AccessorInfo, data, Object, kDataOffset) ...@@ -5654,12 +5654,14 @@ ACCESSORS(AccessorInfo, data, Object, kDataOffset)
ACCESSORS(Box, value, Object, kValueOffset) ACCESSORS(Box, value, Object, kValueOffset)
ACCESSORS(PromiseContainer, thenable, JSReceiver, kThenableOffset) ACCESSORS(PromiseResolveThenableJobInfo, thenable, JSReceiver, kThenableOffset)
ACCESSORS(PromiseContainer, then, JSReceiver, kThenOffset) ACCESSORS(PromiseResolveThenableJobInfo, then, JSReceiver, kThenOffset)
ACCESSORS(PromiseContainer, resolve, JSFunction, kResolveOffset) ACCESSORS(PromiseResolveThenableJobInfo, resolve, JSFunction, kResolveOffset)
ACCESSORS(PromiseContainer, reject, JSFunction, kRejectOffset) ACCESSORS(PromiseResolveThenableJobInfo, reject, JSFunction, kRejectOffset)
ACCESSORS(PromiseContainer, before_debug_event, Object, kBeforeDebugEventOffset) ACCESSORS(PromiseResolveThenableJobInfo, before_debug_event, Object,
ACCESSORS(PromiseContainer, after_debug_event, Object, kAfterDebugEventOffset) kBeforeDebugEventOffset)
ACCESSORS(PromiseResolveThenableJobInfo, after_debug_event, Object,
kAfterDebugEventOffset)
ACCESSORS(PromiseReactionJobInfo, value, Object, kValueOffset); ACCESSORS(PromiseReactionJobInfo, value, Object, kValueOffset);
ACCESSORS(PromiseReactionJobInfo, tasks, Object, kTasksOffset); ACCESSORS(PromiseReactionJobInfo, tasks, Object, kTasksOffset);
......
...@@ -1150,8 +1150,9 @@ void Box::BoxPrint(std::ostream& os) { // NOLINT ...@@ -1150,8 +1150,9 @@ void Box::BoxPrint(std::ostream& os) { // NOLINT
os << "\n"; os << "\n";
} }
void PromiseContainer::PromiseContainerPrint(std::ostream& os) { // NOLINT void PromiseResolveThenableJobInfo::PromiseResolveThenableJobInfoPrint(
HeapObject::PrintHeader(os, "PromiseContainer"); std::ostream& os) { // NOLINT
HeapObject::PrintHeader(os, "PromiseResolveThenableJobInfo");
os << "\n - thenable: " << Brief(thenable()); os << "\n - thenable: " << Brief(thenable());
os << "\n - then: " << Brief(then()); os << "\n - then: " << Brief(then());
os << "\n - resolve: " << Brief(resolve()); os << "\n - resolve: " << Brief(resolve());
......
...@@ -143,7 +143,7 @@ ...@@ -143,7 +143,7 @@
// - Struct // - Struct
// - Box // - Box
// - AccessorInfo // - AccessorInfo
// - PromiseContainer // - PromiseResolveThenableJobInfo
// - PromiseReactionJobInfo // - PromiseReactionJobInfo
// - AccessorPair // - AccessorPair
// - AccessCheckInfo // - AccessCheckInfo
...@@ -400,7 +400,7 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1; ...@@ -400,7 +400,7 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
V(TYPE_FEEDBACK_INFO_TYPE) \ V(TYPE_FEEDBACK_INFO_TYPE) \
V(ALIASED_ARGUMENTS_ENTRY_TYPE) \ V(ALIASED_ARGUMENTS_ENTRY_TYPE) \
V(BOX_TYPE) \ V(BOX_TYPE) \
V(PROMISE_CONTAINER_TYPE) \ V(PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE) \
V(PROMISE_REACTION_JOB_INFO_TYPE) \ V(PROMISE_REACTION_JOB_INFO_TYPE) \
V(PROTOTYPE_INFO_TYPE) \ V(PROTOTYPE_INFO_TYPE) \
V(CONTEXT_EXTENSION_TYPE) \ V(CONTEXT_EXTENSION_TYPE) \
...@@ -508,7 +508,8 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1; ...@@ -508,7 +508,8 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
// manually. // manually.
#define STRUCT_LIST(V) \ #define STRUCT_LIST(V) \
V(BOX, Box, box) \ V(BOX, Box, box) \
V(PROMISE_CONTAINER, PromiseContainer, promise_container) \ V(PROMISE_RESOLVE_THENABLE_JOB_INFO, PromiseResolveThenableJobInfo, \
promise_resolve_thenable_job_info) \
V(PROMISE_REACTION_JOB_INFO, PromiseReactionJobInfo, \ V(PROMISE_REACTION_JOB_INFO, PromiseReactionJobInfo, \
promise_reaction_job_info) \ promise_reaction_job_info) \
V(ACCESSOR_INFO, AccessorInfo, accessor_info) \ V(ACCESSOR_INFO, AccessorInfo, accessor_info) \
...@@ -692,7 +693,7 @@ enum InstanceType { ...@@ -692,7 +693,7 @@ enum InstanceType {
TYPE_FEEDBACK_INFO_TYPE, TYPE_FEEDBACK_INFO_TYPE,
ALIASED_ARGUMENTS_ENTRY_TYPE, ALIASED_ARGUMENTS_ENTRY_TYPE,
BOX_TYPE, BOX_TYPE,
PROMISE_CONTAINER_TYPE, PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE,
PROMISE_REACTION_JOB_INFO_TYPE, PROMISE_REACTION_JOB_INFO_TYPE,
DEBUG_INFO_TYPE, DEBUG_INFO_TYPE,
BREAK_POINT_INFO_TYPE, BREAK_POINT_INFO_TYPE,
...@@ -6682,8 +6683,7 @@ class Struct: public HeapObject { ...@@ -6682,8 +6683,7 @@ class Struct: public HeapObject {
}; };
// A container struct to hold state required for PromiseResolveThenableJob. // A container struct to hold state required for PromiseResolveThenableJob.
// TODO(gsathya): Rename this to be less generic. class PromiseResolveThenableJobInfo : public Struct {
class PromiseContainer : public Struct {
public: public:
DECL_ACCESSORS(thenable, JSReceiver) DECL_ACCESSORS(thenable, JSReceiver)
DECL_ACCESSORS(then, JSReceiver) DECL_ACCESSORS(then, JSReceiver)
...@@ -6701,12 +6701,12 @@ class PromiseContainer : public Struct { ...@@ -6701,12 +6701,12 @@ class PromiseContainer : public Struct {
kBeforeDebugEventOffset + kPointerSize; kBeforeDebugEventOffset + kPointerSize;
static const int kSize = kAfterDebugEventOffset + kPointerSize; static const int kSize = kAfterDebugEventOffset + kPointerSize;
DECLARE_CAST(PromiseContainer) DECLARE_CAST(PromiseResolveThenableJobInfo)
DECLARE_PRINTER(PromiseContainer) DECLARE_PRINTER(PromiseResolveThenableJobInfo)
DECLARE_VERIFIER(PromiseContainer) DECLARE_VERIFIER(PromiseResolveThenableJobInfo)
private: private:
DISALLOW_IMPLICIT_CONSTRUCTORS(PromiseContainer); DISALLOW_IMPLICIT_CONSTRUCTORS(PromiseResolveThenableJobInfo);
}; };
// Struct to hold state required for PromiseReactionJob. // Struct to hold state required for PromiseReactionJob.
......
...@@ -596,9 +596,11 @@ RUNTIME_FUNCTION(Runtime_EnqueuePromiseResolveThenableJob) { ...@@ -596,9 +596,11 @@ RUNTIME_FUNCTION(Runtime_EnqueuePromiseResolveThenableJob) {
CONVERT_ARG_HANDLE_CHECKED(JSFunction, reject, 3); CONVERT_ARG_HANDLE_CHECKED(JSFunction, reject, 3);
CONVERT_ARG_HANDLE_CHECKED(Object, before_debug_event, 4); CONVERT_ARG_HANDLE_CHECKED(Object, before_debug_event, 4);
CONVERT_ARG_HANDLE_CHECKED(Object, after_debug_event, 5); CONVERT_ARG_HANDLE_CHECKED(Object, after_debug_event, 5);
Handle<PromiseContainer> container = isolate->factory()->NewPromiseContainer( Handle<PromiseResolveThenableJobInfo> info =
resolution, then, resolve, reject, before_debug_event, after_debug_event); isolate->factory()->NewPromiseResolveThenableJobInfo(
isolate->EnqueueMicrotask(container); resolution, then, resolve, reject, before_debug_event,
after_debug_event);
isolate->EnqueueMicrotask(info);
return isolate->heap()->undefined_value(); return isolate->heap()->undefined_value();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment