Skip to content

Commit

Permalink
[promises] Clean up promise utils and remove dead code
Browse files Browse the repository at this point in the history
BUG=v8:5343

Review-Url: https://codereview.chromium.org/2637523002
Cr-Commit-Position: refs/heads/master@{#42423}
  • Loading branch information
gsathya authored and Commit bot committed Jan 17, 2017
1 parent bb89869 commit 875165e
Show file tree
Hide file tree
Showing 10 changed files with 45 additions and 147 deletions.
2 changes: 0 additions & 2 deletions BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -1632,8 +1632,6 @@ v8_source_set("v8_base") {
"src/profiler/tracing-cpu-profiler.h",
"src/profiler/unbound-queue-inl.h",
"src/profiler/unbound-queue.h",
"src/promise-utils.cc",
"src/promise-utils.h",
"src/property-descriptor.cc",
"src/property-descriptor.h",
"src/property-details.h",
Expand Down
33 changes: 14 additions & 19 deletions src/builtins/builtins-promise.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
#include "src/builtins/builtins.h"
#include "src/code-factory.h"
#include "src/code-stub-assembler.h"
#include "src/promise-utils.h"

namespace v8 {
namespace internal {
Expand Down Expand Up @@ -211,23 +210,20 @@ Node* PromiseBuiltinsAssembler::CreatePromiseContext(Node* native_context,
Node* PromiseBuiltinsAssembler::CreatePromiseResolvingFunctionsContext(
Node* promise, Node* debug_event, Node* native_context) {
Node* const context =
CreatePromiseContext(native_context, PromiseUtils::kPromiseContextLength);
StoreContextElementNoWriteBarrier(context, PromiseUtils::kAlreadyVisitedSlot,
CreatePromiseContext(native_context, kPromiseContextLength);
StoreContextElementNoWriteBarrier(context, kAlreadyVisitedSlot,
SmiConstant(0));
StoreContextElementNoWriteBarrier(context, PromiseUtils::kPromiseSlot,
promise);
StoreContextElementNoWriteBarrier(context, PromiseUtils::kDebugEventSlot,
debug_event);
StoreContextElementNoWriteBarrier(context, kPromiseSlot, promise);
StoreContextElementNoWriteBarrier(context, kDebugEventSlot, debug_event);
return context;
}

Node* PromiseBuiltinsAssembler::CreatePromiseGetCapabilitiesExecutorContext(
Node* promise_capability, Node* native_context) {
int kContextLength = GetPromiseCapabilityExecutor::kContextLength;
int kContextLength = kCapabilitiesContextLength;
Node* context = CreatePromiseContext(native_context, kContextLength);
StoreContextElementNoWriteBarrier(
context, GetPromiseCapabilityExecutor::kCapabilitySlot,
promise_capability);
StoreContextElementNoWriteBarrier(context, kCapabilitySlot,
promise_capability);
return context;
}

Expand Down Expand Up @@ -996,7 +992,7 @@ TF_BUILTIN(PromiseRejectClosure, PromiseBuiltinsAssembler) {
Label out(this);

// 3. Let alreadyResolved be F.[[AlreadyResolved]].
int has_already_visited_slot = PromiseUtils::kAlreadyVisitedSlot;
int has_already_visited_slot = kAlreadyVisitedSlot;

Node* const has_already_visited =
LoadContextElement(context, has_already_visited_slot);
Expand All @@ -1010,9 +1006,9 @@ TF_BUILTIN(PromiseRejectClosure, PromiseBuiltinsAssembler) {

// 2. Let promise be F.[[Promise]].
Node* const promise =
LoadContextElement(context, IntPtrConstant(PromiseUtils::kPromiseSlot));
Node* const debug_event = LoadContextElement(
context, IntPtrConstant(PromiseUtils::kDebugEventSlot));
LoadContextElement(context, IntPtrConstant(kPromiseSlot));
Node* const debug_event =
LoadContextElement(context, IntPtrConstant(kDebugEventSlot));

InternalPromiseReject(context, promise, value, debug_event);
Return(UndefinedConstant());
Expand Down Expand Up @@ -1203,7 +1199,7 @@ TF_BUILTIN(PromiseResolveClosure, PromiseBuiltinsAssembler) {
Label out(this);

// 3. Let alreadyResolved be F.[[AlreadyResolved]].
int has_already_visited_slot = PromiseUtils::kAlreadyVisitedSlot;
int has_already_visited_slot = kAlreadyVisitedSlot;

Node* const has_already_visited =
LoadContextElement(context, has_already_visited_slot);
Expand All @@ -1217,7 +1213,7 @@ TF_BUILTIN(PromiseResolveClosure, PromiseBuiltinsAssembler) {

// 2. Let promise be F.[[Promise]].
Node* const promise =
LoadContextElement(context, IntPtrConstant(PromiseUtils::kPromiseSlot));
LoadContextElement(context, IntPtrConstant(kPromiseSlot));

InternalResolvePromise(context, promise, value);
Return(UndefinedConstant());
Expand Down Expand Up @@ -1470,8 +1466,7 @@ TF_BUILTIN(PromiseGetCapabilitiesExecutor, PromiseBuiltinsAssembler) {
Node* const reject = Parameter(2);
Node* const context = Parameter(5);

Node* const capability = LoadContextElement(
context, GetPromiseCapabilityExecutor::kCapabilitySlot);
Node* const capability = LoadContextElement(context, kCapabilitySlot);

Label if_alreadyinvoked(this, Label::kDeferred);
GotoIf(WordNotEqual(
Expand Down
21 changes: 20 additions & 1 deletion src/builtins/builtins-promise.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// found in the LICENSE file.

#include "src/code-stub-assembler.h"
#include "src/contexts.h"

namespace v8 {
namespace internal {
Expand All @@ -13,9 +14,27 @@ typedef compiler::CodeAssemblerState CodeAssemblerState;

class PromiseBuiltinsAssembler : public CodeStubAssembler {
public:
enum PromiseResolvingFunctionContextSlot {
// Whether the resolve/reject callback was already called.
kAlreadyVisitedSlot = Context::MIN_CONTEXT_SLOTS,

// The promise which resolve/reject callbacks fulfill.
kPromiseSlot,

// Whether to trigger a debug event or not. Used in catch
// prediction.
kDebugEventSlot,
kPromiseContextLength,
};

enum FunctionContextSlot {
kCapabilitySlot = Context::MIN_CONTEXT_SLOTS,

kCapabilitiesContextLength,
};

explicit PromiseBuiltinsAssembler(CodeAssemblerState* state)
: CodeStubAssembler(state) {}

// These allocate and initialize a promise with pending state and
// undefined fields.
//
Expand Down
25 changes: 0 additions & 25 deletions src/factory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -998,38 +998,13 @@ Handle<Context> Factory::NewBlockContext(Handle<JSFunction> function,
return context;
}

Handle<Context> Factory::NewPromiseResolvingFunctionContext(int length) {
DCHECK_GE(length, Context::MIN_CONTEXT_SLOTS);
Handle<FixedArray> array = NewFixedArray(length);
array->set_map_no_write_barrier(*function_context_map());
Handle<Context> context = Handle<Context>::cast(array);
context->set_extension(*the_hole_value());
return context;
}

Handle<Struct> Factory::NewStruct(InstanceType type) {
CALL_HEAP_FUNCTION(
isolate(),
isolate()->heap()->AllocateStruct(type),
Struct);
}

Handle<PromiseReactionJobInfo> Factory::NewPromiseReactionJobInfo(
Handle<Object> value, Handle<Object> tasks, Handle<Object> deferred_promise,
Handle<Object> deferred_on_resolve, Handle<Object> deferred_on_reject,
Handle<Context> context) {
Handle<PromiseReactionJobInfo> result = Handle<PromiseReactionJobInfo>::cast(
NewStruct(PROMISE_REACTION_JOB_INFO_TYPE));
result->set_value(*value);
result->set_tasks(*tasks);
result->set_deferred_promise(*deferred_promise);
result->set_deferred_on_resolve(*deferred_on_resolve);
result->set_deferred_on_reject(*deferred_on_reject);
result->set_debug_id(kDebugPromiseFirstID);
result->set_context(*context);
return result;
}

Handle<AliasedArgumentsEntry> Factory::NewAliasedArgumentsEntry(
int aliased_context_slot) {
Handle<AliasedArgumentsEntry> entry = Handle<AliasedArgumentsEntry>::cast(
Expand Down
8 changes: 0 additions & 8 deletions src/factory.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,6 @@ class V8_EXPORT_PRIVATE Factory final {
// Create a new boxed value.
Handle<Box> NewBox(Handle<Object> value);

// Create a new PromiseReactionJobInfo struct.
Handle<PromiseReactionJobInfo> NewPromiseReactionJobInfo(
Handle<Object> value, Handle<Object> tasks,
Handle<Object> deferred_promise, Handle<Object> deferred_on_resolve,
Handle<Object> deferred_on_reject, Handle<Context> context);

// Create a new PrototypeInfo struct.
Handle<PrototypeInfo> NewPrototypeInfo();

Expand Down Expand Up @@ -320,8 +314,6 @@ class V8_EXPORT_PRIVATE Factory final {
Handle<Context> NewBlockContext(Handle<JSFunction> function,
Handle<Context> previous,
Handle<ScopeInfo> scope_info);
// Create a promise context.
Handle<Context> NewPromiseResolvingFunctionContext(int length);

// Allocate a new struct. The struct is pretenured (allocated directly in
// the old generation).
Expand Down
31 changes: 0 additions & 31 deletions src/promise-utils.cc

This file was deleted.

50 changes: 0 additions & 50 deletions src/promise-utils.h

This file was deleted.

1 change: 0 additions & 1 deletion src/runtime/runtime-promise.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

#include "src/debug/debug.h"
#include "src/elements.h"
#include "src/promise-utils.h"

namespace v8 {
namespace internal {
Expand Down
2 changes: 0 additions & 2 deletions src/v8.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -1141,8 +1141,6 @@
'profiler/tracing-cpu-profiler.h',
'profiler/unbound-queue-inl.h',
'profiler/unbound-queue.h',
'promise-utils.h',
'promise-utils.cc',
'property-descriptor.cc',
'property-descriptor.h',
'property-details.h',
Expand Down
19 changes: 11 additions & 8 deletions test/cctest/test-code-stub-assembler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
#include "src/code-stub-assembler.h"
#include "src/compiler/node.h"
#include "src/isolate.h"
#include "src/promise-utils.h"
#include "test/cctest/compiler/code-assembler-tester.h"
#include "test/cctest/compiler/function-tester.h"

Expand Down Expand Up @@ -2005,10 +2004,11 @@ TEST(CreatePromiseResolvingFunctionsContext) {
CHECK_EQ(isolate->native_context()->closure(), context_js->closure());
CHECK_EQ(isolate->heap()->the_hole_value(), context_js->extension());
CHECK_EQ(*isolate->native_context(), context_js->native_context());
CHECK_EQ(Smi::FromInt(0), context_js->get(PromiseUtils::kAlreadyVisitedSlot));
CHECK(context_js->get(PromiseUtils::kPromiseSlot)->IsJSPromise());
CHECK_EQ(Smi::FromInt(0),
context_js->get(PromiseBuiltinsAssembler::kAlreadyVisitedSlot));
CHECK(context_js->get(PromiseBuiltinsAssembler::kPromiseSlot)->IsJSPromise());
CHECK_EQ(isolate->heap()->false_value(),
context_js->get(PromiseUtils::kDebugEventSlot));
context_js->get(PromiseBuiltinsAssembler::kDebugEventSlot));
}

TEST(CreatePromiseResolvingFunctions) {
Expand Down Expand Up @@ -2175,11 +2175,12 @@ TEST(CreatePromiseGetCapabilitiesExecutorContext) {
ft.Call(isolate->factory()->undefined_value()).ToHandleChecked();
CHECK(result_obj->IsContext());
Handle<Context> context_js = Handle<Context>::cast(result_obj);
CHECK_EQ(GetPromiseCapabilityExecutor::kContextLength, context_js->length());
CHECK_EQ(PromiseBuiltinsAssembler::kCapabilitiesContextLength,
context_js->length());
CHECK_EQ(isolate->native_context()->closure(), context_js->closure());
CHECK_EQ(isolate->heap()->the_hole_value(), context_js->extension());
CHECK_EQ(*isolate->native_context(), context_js->native_context());
CHECK(context_js->get(GetPromiseCapabilityExecutor::kCapabilitySlot)
CHECK(context_js->get(PromiseBuiltinsAssembler::kCapabilitySlot)
->IsJSPromiseCapability());
}

Expand Down Expand Up @@ -2226,8 +2227,10 @@ TEST(NewPromiseCapability) {
CHECK_EQ(isolate->native_context()->closure(), context->closure());
CHECK_EQ(isolate->heap()->the_hole_value(), context->extension());
CHECK_EQ(*isolate->native_context(), context->native_context());
CHECK_EQ(PromiseUtils::kPromiseContextLength, context->length());
CHECK_EQ(context->get(PromiseUtils::kPromiseSlot), result->promise());
CHECK_EQ(PromiseBuiltinsAssembler::kPromiseContextLength,
context->length());
CHECK_EQ(context->get(PromiseBuiltinsAssembler::kPromiseSlot),
result->promise());
}
}

Expand Down

0 comments on commit 875165e

Please sign in to comment.