Skip to content

Commit e428dfd

Browse files
mathiasbynensCommit Bot
authored andcommitted
[objects] Rename JSValue to JSPrimitiveWrapper
We currently use the class name “JSValue” for JSObjects that wrap primitive values. This name is a common source of confusion. This patch switches to a name that’s more clear. In addition to manual tweaks, the patch applies the following mechanical global replacements: before | after --------------------------------|-------------------------------------- if_valueisnotvalue | if_valueisnotwrapper if_valueisvalue | if_valueiswrapper js_value | js_primitive_wrapper JS_VALUE_TYPE | JS_PRIMITIVE_WRAPPER_TYPE JSPrimitiveWrapperType | JSPrimitiveWrapper type jsvalue | js_primitive_wrapper JSValue | JSPrimitiveWrapper _GENERATED_JSVALUE_FIELDS | _GENERATED_JSPRIMITIVE_WRAPPER_FIELDS Change-Id: I9d9edea784eab6067b013e1f781e4db2070f807c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1672942 Reviewed-by: Tamer Tas <tmrts@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#62337}
1 parent cc21e58 commit e428dfd

49 files changed

Lines changed: 290 additions & 242 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/api/api.cc

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6388,10 +6388,11 @@ Local<v8::Value> v8::NumberObject::New(Isolate* isolate, double value) {
63886388

63896389
double v8::NumberObject::ValueOf() const {
63906390
i::Handle<i::Object> obj = Utils::OpenHandle(this);
6391-
i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj);
6392-
i::Isolate* isolate = jsvalue->GetIsolate();
6391+
i::Handle<i::JSPrimitiveWrapper> js_primitive_wrapper =
6392+
i::Handle<i::JSPrimitiveWrapper>::cast(obj);
6393+
i::Isolate* isolate = js_primitive_wrapper->GetIsolate();
63936394
LOG_API(isolate, NumberObject, NumberValue);
6394-
return jsvalue->value().Number();
6395+
return js_primitive_wrapper->value().Number();
63956396
}
63966397

63976398
Local<v8::Value> v8::BigIntObject::New(Isolate* isolate, int64_t value) {
@@ -6406,11 +6407,12 @@ Local<v8::Value> v8::BigIntObject::New(Isolate* isolate, int64_t value) {
64066407

64076408
Local<v8::BigInt> v8::BigIntObject::ValueOf() const {
64086409
i::Handle<i::Object> obj = Utils::OpenHandle(this);
6409-
i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj);
6410-
i::Isolate* isolate = jsvalue->GetIsolate();
6410+
i::Handle<i::JSPrimitiveWrapper> js_primitive_wrapper =
6411+
i::Handle<i::JSPrimitiveWrapper>::cast(obj);
6412+
i::Isolate* isolate = js_primitive_wrapper->GetIsolate();
64116413
LOG_API(isolate, BigIntObject, BigIntValue);
6412-
return Utils::ToLocal(
6413-
i::Handle<i::BigInt>(i::BigInt::cast(jsvalue->value()), isolate));
6414+
return Utils::ToLocal(i::Handle<i::BigInt>(
6415+
i::BigInt::cast(js_primitive_wrapper->value()), isolate));
64146416
}
64156417

64166418
Local<v8::Value> v8::BooleanObject::New(Isolate* isolate, bool value) {
@@ -6428,10 +6430,11 @@ Local<v8::Value> v8::BooleanObject::New(Isolate* isolate, bool value) {
64286430

64296431
bool v8::BooleanObject::ValueOf() const {
64306432
i::Handle<i::Object> obj = Utils::OpenHandle(this);
6431-
i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj);
6432-
i::Isolate* isolate = jsvalue->GetIsolate();
6433+
i::Handle<i::JSPrimitiveWrapper> js_primitive_wrapper =
6434+
i::Handle<i::JSPrimitiveWrapper>::cast(obj);
6435+
i::Isolate* isolate = js_primitive_wrapper->GetIsolate();
64336436
LOG_API(isolate, BooleanObject, BooleanValue);
6434-
return jsvalue->value().IsTrue(isolate);
6437+
return js_primitive_wrapper->value().IsTrue(isolate);
64356438
}
64366439

64376440
Local<v8::Value> v8::StringObject::New(Isolate* v8_isolate,
@@ -6447,11 +6450,12 @@ Local<v8::Value> v8::StringObject::New(Isolate* v8_isolate,
64476450

64486451
Local<v8::String> v8::StringObject::ValueOf() const {
64496452
i::Handle<i::Object> obj = Utils::OpenHandle(this);
6450-
i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj);
6451-
i::Isolate* isolate = jsvalue->GetIsolate();
6453+
i::Handle<i::JSPrimitiveWrapper> js_primitive_wrapper =
6454+
i::Handle<i::JSPrimitiveWrapper>::cast(obj);
6455+
i::Isolate* isolate = js_primitive_wrapper->GetIsolate();
64526456
LOG_API(isolate, StringObject, StringValue);
6453-
return Utils::ToLocal(
6454-
i::Handle<i::String>(i::String::cast(jsvalue->value()), isolate));
6457+
return Utils::ToLocal(i::Handle<i::String>(
6458+
i::String::cast(js_primitive_wrapper->value()), isolate));
64556459
}
64566460

64576461
Local<v8::Value> v8::SymbolObject::New(Isolate* isolate, Local<Symbol> value) {
@@ -6466,11 +6470,12 @@ Local<v8::Value> v8::SymbolObject::New(Isolate* isolate, Local<Symbol> value) {
64666470

64676471
Local<v8::Symbol> v8::SymbolObject::ValueOf() const {
64686472
i::Handle<i::Object> obj = Utils::OpenHandle(this);
6469-
i::Handle<i::JSValue> jsvalue = i::Handle<i::JSValue>::cast(obj);
6470-
i::Isolate* isolate = jsvalue->GetIsolate();
6473+
i::Handle<i::JSPrimitiveWrapper> js_primitive_wrapper =
6474+
i::Handle<i::JSPrimitiveWrapper>::cast(obj);
6475+
i::Isolate* isolate = js_primitive_wrapper->GetIsolate();
64716476
LOG_API(isolate, SymbolObject, SymbolValue);
6472-
return Utils::ToLocal(
6473-
i::Handle<i::Symbol>(i::Symbol::cast(jsvalue->value()), isolate));
6477+
return Utils::ToLocal(i::Handle<i::Symbol>(
6478+
i::Symbol::cast(js_primitive_wrapper->value()), isolate));
64746479
}
64756480

64766481
MaybeLocal<v8::Value> v8::Date::New(Local<Context> context, double time) {

src/builtins/accessors.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,8 @@ void Accessors::StringLengthGetter(
287287
if (!value.IsString()) {
288288
// Not a string value. That means that we either got a String wrapper or
289289
// a Value with a String wrapper in its prototype chain.
290-
value = JSValue::cast(*Utils::OpenHandle(*info.Holder())).value();
290+
value =
291+
JSPrimitiveWrapper::cast(*Utils::OpenHandle(*info.Holder())).value();
291292
}
292293
Object result = Smi::FromInt(String::cast(value).length());
293294
info.GetReturnValue().Set(Utils::ToLocal(Handle<Object>(result, isolate)));

src/builtins/base.tq

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ macro NewJSProxyRevocableResult(implicit context: Context)(
363363

364364
extern class JSGlobalProxy extends JSObject { native_context: Object; }
365365

366-
extern class JSValue extends JSObject { value: Object; }
366+
extern class JSPrimitiveWrapper extends JSObject { value: Object; }
367367

368368
extern class JSArgumentsObject extends JSObject {}
369369

@@ -1914,9 +1914,9 @@ Cast<Map>(implicit context: Context)(o: HeapObject): Map
19141914
goto CastError;
19151915
}
19161916

1917-
Cast<JSValue>(o: HeapObject): JSValue
1917+
Cast<JSPrimitiveWrapper>(o: HeapObject): JSPrimitiveWrapper
19181918
labels CastError {
1919-
if (IsJSValue(o)) return %RawDownCast<JSValue>(o);
1919+
if (IsJSPrimitiveWrapper(o)) return %RawDownCast<JSPrimitiveWrapper>(o);
19201920
goto CastError;
19211921
}
19221922

@@ -2814,7 +2814,7 @@ extern macro IsOddball(HeapObject): bool;
28142814
extern macro IsSymbol(HeapObject): bool;
28152815
extern macro IsJSArrayMap(Map): bool;
28162816
extern macro IsExtensibleMap(Map): bool;
2817-
extern macro IsJSValue(HeapObject): bool;
2817+
extern macro IsJSPrimitiveWrapper(HeapObject): bool;
28182818
extern macro IsCustomElementsReceiverInstanceType(int32): bool;
28192819
extern macro Typeof(Object): Object;
28202820

src/builtins/boolean.tq

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ namespace boolean {
1515

1616
const map = GetDerivedMap(target, UnsafeCast<JSReceiver>(newTarget));
1717

18-
const obj = UnsafeCast<JSValue>(AllocateFastOrSlowJSObjectFromMap(map));
18+
const obj =
19+
UnsafeCast<JSPrimitiveWrapper>(AllocateFastOrSlowJSObjectFromMap(map));
1920
obj.value = value;
2021
return obj;
2122
}

src/builtins/builtins-array.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -970,8 +970,9 @@ void CollectElementIndices(Isolate* isolate, Handle<JSObject> object,
970970
}
971971
case FAST_STRING_WRAPPER_ELEMENTS:
972972
case SLOW_STRING_WRAPPER_ELEMENTS: {
973-
DCHECK(object->IsJSValue());
974-
Handle<JSValue> js_value = Handle<JSValue>::cast(object);
973+
DCHECK(object->IsJSPrimitiveWrapper());
974+
Handle<JSPrimitiveWrapper> js_value =
975+
Handle<JSPrimitiveWrapper>::cast(object);
975976
DCHECK(js_value->value().IsString());
976977
Handle<String> string(String::cast(js_value->value()), isolate);
977978
uint32_t length = static_cast<uint32_t>(string->length());

src/builtins/builtins-bigint.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ MaybeHandle<BigInt> ThisBigIntValue(Isolate* isolate, Handle<Object> value,
8080
// 1. If Type(value) is BigInt, return value.
8181
if (value->IsBigInt()) return Handle<BigInt>::cast(value);
8282
// 2. If Type(value) is Object and value has a [[BigIntData]] internal slot:
83-
if (value->IsJSValue()) {
83+
if (value->IsJSPrimitiveWrapper()) {
8484
// 2a. Assert: value.[[BigIntData]] is a BigInt value.
8585
// 2b. Return value.[[BigIntData]].
86-
Object data = JSValue::cast(*value).value();
86+
Object data = JSPrimitiveWrapper::cast(*value).value();
8787
if (data.IsBigInt()) return handle(BigInt::cast(data), isolate);
8888
}
8989
// 3. Throw a TypeError exception.

src/builtins/builtins-constructor-gen.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ TF_BUILTIN(NumberConstructor, ConstructorBuiltinsAssembler) {
728728
TNode<JSFunction> target = LoadTargetFromFrame();
729729
Node* result =
730730
CallBuiltin(Builtins::kFastNewObject, context, target, new_target);
731-
StoreObjectField(result, JSValue::kValueOffset, n_value);
731+
StoreObjectField(result, JSPrimitiveWrapper::kValueOffset, n_value);
732732
args.PopAndReturn(result);
733733
}
734734
}
@@ -794,7 +794,7 @@ TF_BUILTIN(StringConstructor, ConstructorBuiltinsAssembler) {
794794

795795
Node* result =
796796
CallBuiltin(Builtins::kFastNewObject, context, target, new_target);
797-
StoreObjectField(result, JSValue::kValueOffset, s_value);
797+
StoreObjectField(result, JSPrimitiveWrapper::kValueOffset, s_value);
798798
args.PopAndReturn(result);
799799
}
800800
}

src/builtins/builtins-conversion-gen.cc

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,8 @@ TF_BUILTIN(ToInteger_TruncateMinusZero, CodeStubAssembler) {
392392
// ES6 section 7.1.13 ToObject (argument)
393393
TF_BUILTIN(ToObject, CodeStubAssembler) {
394394
Label if_smi(this, Label::kDeferred), if_jsreceiver(this),
395-
if_noconstructor(this, Label::kDeferred), if_wrapjsvalue(this);
395+
if_noconstructor(this, Label::kDeferred),
396+
if_wrapjs_primitive_wrapper(this);
396397

397398
Node* context = Parameter(Descriptor::kContext);
398399
Node* object = Parameter(Descriptor::kArgument);
@@ -411,27 +412,30 @@ TF_BUILTIN(ToObject, CodeStubAssembler) {
411412
IntPtrConstant(Map::kNoConstructorFunctionIndex)),
412413
&if_noconstructor);
413414
constructor_function_index_var.Bind(constructor_function_index);
414-
Goto(&if_wrapjsvalue);
415+
Goto(&if_wrapjs_primitive_wrapper);
415416

416417
BIND(&if_smi);
417418
constructor_function_index_var.Bind(
418419
IntPtrConstant(Context::NUMBER_FUNCTION_INDEX));
419-
Goto(&if_wrapjsvalue);
420+
Goto(&if_wrapjs_primitive_wrapper);
420421

421-
BIND(&if_wrapjsvalue);
422+
BIND(&if_wrapjs_primitive_wrapper);
422423
TNode<Context> native_context = LoadNativeContext(context);
423424
Node* constructor = LoadContextElement(
424425
native_context, constructor_function_index_var.value());
425426
Node* initial_map =
426427
LoadObjectField(constructor, JSFunction::kPrototypeOrInitialMapOffset);
427-
Node* js_value = Allocate(JSValue::kSize);
428-
StoreMapNoWriteBarrier(js_value, initial_map);
429-
StoreObjectFieldRoot(js_value, JSValue::kPropertiesOrHashOffset,
428+
Node* js_primitive_wrapper = Allocate(JSPrimitiveWrapper::kSize);
429+
StoreMapNoWriteBarrier(js_primitive_wrapper, initial_map);
430+
StoreObjectFieldRoot(js_primitive_wrapper,
431+
JSPrimitiveWrapper::kPropertiesOrHashOffset,
430432
RootIndex::kEmptyFixedArray);
431-
StoreObjectFieldRoot(js_value, JSObject::kElementsOffset,
433+
StoreObjectFieldRoot(js_primitive_wrapper,
434+
JSPrimitiveWrapper::kElementsOffset,
432435
RootIndex::kEmptyFixedArray);
433-
StoreObjectField(js_value, JSValue::kValueOffset, object);
434-
Return(js_value);
436+
StoreObjectField(js_primitive_wrapper, JSPrimitiveWrapper::kValueOffset,
437+
object);
438+
Return(js_primitive_wrapper);
435439

436440
BIND(&if_noconstructor);
437441
ThrowTypeError(context, MessageTemplate::kUndefinedOrNullToObject,

src/builtins/builtins-handler-gen.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ TF_BUILTIN(LoadIC_StringLength, CodeStubAssembler) {
4848

4949
TF_BUILTIN(LoadIC_StringWrapperLength, CodeStubAssembler) {
5050
Node* value = Parameter(Descriptor::kReceiver);
51-
Node* string = LoadJSValueValue(value);
51+
Node* string = LoadJSPrimitiveWrapperValue(value);
5252
Return(LoadStringLengthAsSmi(string));
5353
}
5454

src/builtins/builtins-internal-gen.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -614,8 +614,9 @@ class SetOrCopyDataPropertiesAssembler : public CodeStubAssembler {
614614
Label if_done(this), if_noelements(this),
615615
if_sourcenotjsobject(this, Label::kDeferred);
616616

617-
// JSValue wrappers for numbers don't have any enumerable own properties,
618-
// so we can immediately skip the whole operation if {source} is a Smi.
617+
// JSPrimitiveWrapper wrappers for numbers don't have any enumerable own
618+
// properties, so we can immediately skip the whole operation if {source} is
619+
// a Smi.
619620
GotoIf(TaggedIsSmi(source), &if_done);
620621

621622
// Otherwise check if {source} is a proper JSObject, and if not, defer

0 commit comments

Comments
 (0)