diff options
Diffstat (limited to 'deps/v8/src/builtins/base.tq')
-rw-r--r-- | deps/v8/src/builtins/base.tq | 301 |
1 files changed, 256 insertions, 45 deletions
diff --git a/deps/v8/src/builtins/base.tq b/deps/v8/src/builtins/base.tq index aa5d4cc50a..065cd08e4c 100644 --- a/deps/v8/src/builtins/base.tq +++ b/deps/v8/src/builtins/base.tq @@ -90,11 +90,28 @@ type bool generates 'TNode<BoolT>' constexpr 'bool'; type bint generates 'TNode<BInt>' constexpr 'BInt'; type string constexpr 'const char*'; -type NameDictionary extends FixedArray; +// The HashTable inheritance hierarchy doesn't actually look like this in C++ +// because it uses some class templates that we can't yet (and may never) +// express in Torque, but this is the expected organization of instance types. +@abstract @dirtyInstantiatedAbstractClass +extern class HashTable extends FixedArray generates 'TNode<FixedArray>'; +extern class OrderedHashMap extends HashTable; +extern class OrderedHashSet extends HashTable; +extern class OrderedNameDictionary extends HashTable; +extern class NameDictionary extends HashTable; +extern class GlobalDictionary extends HashTable; +extern class SimpleNumberDictionary extends HashTable; +extern class StringTable extends HashTable; +extern class EphemeronHashTable extends HashTable; +type ObjectHashTable extends HashTable + generates 'TNode<ObjectHashTable>'; +extern class NumberDictionary extends HashTable; type RawPtr generates 'TNode<RawPtrT>' constexpr 'void*'; -type Code extends HeapObject generates 'TNode<Code>'; +extern class Code extends HeapObject; type BuiltinPtr extends Smi generates 'TNode<BuiltinPtr>'; + +@abstract extern class Context extends HeapObject { length: Smi; scope_info: ScopeInfo; @@ -102,10 +119,27 @@ extern class Context extends HeapObject { extension: Object; native_context: Object; } -type NativeContext extends Context generates 'TNode<NativeContext>'; +extern class AwaitContext extends Context generates 'TNode<Context>'; +extern class BlockContext extends Context generates 'TNode<Context>'; +extern class CatchContext extends Context generates 'TNode<Context>'; +extern class DebugEvaluateContext extends Context + generates 'TNode<Context>'; +extern class EvalContext extends Context generates 'TNode<Context>'; +extern class FunctionContext extends Context generates 'TNode<Context>'; +extern class ModuleContext extends Context generates 'TNode<Context>'; +extern class NativeContext extends Context; +extern class ScriptContext extends Context generates 'TNode<Context>'; +extern class WithContext extends Context generates 'TNode<Context>'; + +@generateCppClass +@abstract +extern class PrimitiveHeapObject extends HeapObject { +} @generateCppClass -extern class Oddball extends HeapObject { +@apiExposedInstanceTypeValue(0x43) +@highestInstanceTypeWithinParentClassRange +extern class Oddball extends PrimitiveHeapObject { to_number_raw: float64; to_string: String; to_number: Number; @@ -113,13 +147,13 @@ extern class Oddball extends HeapObject { kind: Smi; } -extern class HeapNumber extends HeapObject { value: float64; } +extern class HeapNumber extends PrimitiveHeapObject { value: float64; } type Number = Smi | HeapNumber; type Numeric = Number | BigInt; @abstract @generateCppClass -extern class Name extends HeapObject { +extern class Name extends PrimitiveHeapObject { hash_field: uint32; } // This is the same as Name, but with the information that there are no other @@ -137,6 +171,7 @@ type PrivateSymbol extends Symbol; @abstract @generateCppClass +@reserveBitsInInstanceType(6) extern class String extends Name { length: int32; } @@ -222,20 +257,35 @@ extern class FixedArrayBase extends HeapObject { length: Smi; } -extern class FixedArray extends FixedArrayBase { objects[length]: Object; } +@abstract +@dirtyInstantiatedAbstractClass +extern class FixedArray extends FixedArrayBase { + objects[length]: Object; +} extern class FixedDoubleArray extends FixedArrayBase { floats[length]: float64; } -extern class WeakFixedArray extends HeapObject { length: Smi; } +@abstract +@dirtyInstantiatedAbstractClass +extern class WeakFixedArray extends HeapObject { + length: Smi; +} extern class ByteArray extends FixedArrayBase {} +@hasSameInstanceTypeAsParent +extern class ArrayList extends FixedArray { +} + +extern class ObjectBoilerplateDescription extends FixedArray; +extern class ClosureFeedbackCellArray extends FixedArray; +extern class ScriptContextTable extends FixedArray; + type LayoutDescriptor extends ByteArray generates 'TNode<LayoutDescriptor>'; -type TransitionArray extends WeakFixedArray - generates 'TNode<TransitionArray>'; +extern class TransitionArray extends WeakFixedArray; type InstanceType extends uint16 constexpr 'v8::internal::InstanceType'; @@ -282,6 +332,7 @@ extern class SourcePositionTableWithFrameCache extends Struct { // We make this class abstract because it is missing the variable-sized part, // which is still impossible to express in Torque. @abstract +@dirtyInstantiatedAbstractClass extern class DescriptorArray extends HeapObject { number_of_all_descriptors: uint16; number_of_descriptors: uint16; @@ -327,7 +378,9 @@ intrinsic } } +// JSReceiver corresponds to objects in the JS sense. @abstract +@highestInstanceTypeWithinParentClassRange extern class JSReceiver extends HeapObject { properties_or_hash: FixedArrayBase | PropertyArray | Smi; } @@ -337,6 +390,8 @@ type Constructor extends JSReceiver; @abstract @dirtyInstantiatedAbstractClass @generateCppClass +@apiExposedInstanceTypeValue(0x421) +@highestInstanceTypeWithinParentClassRange extern class JSObject extends JSReceiver { // [elements]: The elements (properties with names that are integers). // @@ -368,6 +423,18 @@ macro NewJSObject(implicit context: Context)(): JSObject { }; } +@abstract +@generateCppClass +@lowestInstanceTypeWithinParentClassRange +extern class JSCustomElementsObject extends JSObject { +} + +@abstract +@generateCppClass +@lowestInstanceTypeWithinParentClassRange +extern class JSSpecialObject extends JSCustomElementsObject { +} + extern macro HasPrototypeSlot(JSFunction): bool; macro GetDerivedMap(implicit context: Context)( @@ -401,7 +468,8 @@ macro AllocateFastOrSlowJSObjectFromMap(implicit context: Context)(map: Map): map, properties, kEmptyFixedArray, kNone, kWithSlackTracking); } -extern class JSFunction extends JSObject { +@highestInstanceTypeWithinParentClassRange +extern class JSFunction extends JSFunctionOrBoundFunction { shared_function_info: SharedFunctionInfo; context: Context; feedback_cell: FeedbackCell; @@ -419,6 +487,7 @@ extern class JSProxy extends JSReceiver { // Just a starting shape for JSObject; properties can move after initialization. @noVerifier +@hasSameInstanceTypeAsParent extern class JSProxyRevocableResult extends JSObject { proxy: JSAny; revoke: JSAny; @@ -436,14 +505,14 @@ macro NewJSProxyRevocableResult(implicit context: Context)( } @generateCppClass -extern class JSGlobalProxy extends JSObject { +extern class JSGlobalProxy extends JSSpecialObject { // [native_context]: the owner native context of this global proxy object. // It is null value if this object is not used by any context. native_context: Object; } @generateCppClass -extern class JSPrimitiveWrapper extends JSObject { +extern class JSPrimitiveWrapper extends JSCustomElementsObject { value: JSAny; } @@ -531,8 +600,6 @@ extern class CallHandlerInfo extends Struct { data: Object; } -type ObjectHashTable extends FixedArray; - @abstract extern class Module extends HeapObject { exports: ObjectHashTable; @@ -569,9 +636,12 @@ extern class SourceTextModule extends Module { // Lazily initialized on first access. It's the hole before first access and // a JSObject afterwards. import_meta: TheHole | JSObject; - + async_parent_modules: ArrayList; + top_level_capability: JSPromise | Undefined; dfs_index: Smi; dfs_ancestor_index: Smi; + pending_async_dependencies: Smi; + flags: Smi; } @generateCppClass @@ -583,7 +653,8 @@ extern class SyntheticModule extends Module { @abstract @generateCppClass -extern class JSModuleNamespace extends JSObject { +@dirtyInstantiatedAbstractClass +extern class JSModuleNamespace extends JSSpecialObject { module: Module; } @@ -606,6 +677,7 @@ extern class JSWeakMap extends JSWeakCollection { } @generateCppClass +@abstract extern class JSCollectionIterator extends JSObject { // The backing hash table mapping keys to values. table: Object; @@ -613,6 +685,20 @@ extern class JSCollectionIterator extends JSObject { index: Object; } +@abstract extern class JSMapIterator extends JSCollectionIterator; +extern class JSMapKeyIterator extends JSMapIterator + generates 'TNode<JSMapIterator>'; +extern class JSMapKeyValueIterator extends JSMapIterator + generates 'TNode<JSMapIterator>'; +extern class JSMapValueIterator extends JSMapIterator + generates 'TNode<JSMapIterator>'; + +@abstract extern class JSSetIterator extends JSCollectionIterator; +extern class JSSetKeyValueIterator extends JSSetIterator + generates 'TNode<JSSetIterator>'; +extern class JSSetValueIterator extends JSSetIterator + generates 'TNode<JSSetIterator>'; + extern class JSMessageObject extends JSObject { // Tagged fields. message_type: Smi; @@ -656,7 +742,7 @@ extern class Script extends Struct { line_ends: Object; id: Smi; eval_from_shared_or_wrapped_arguments: Object; - eval_from_position: Smi; + eval_from_position: Smi | Foreign; // Smi or Managed<wasm::NativeModule> shared_function_infos: Object; flags: Smi; source_url: Object; @@ -669,12 +755,13 @@ extern class EmbedderDataArray extends HeapObject { length: Smi; } -type ScopeInfo extends HeapObject generates 'TNode<ScopeInfo>'; +extern class ScopeInfo extends FixedArray; +@generateCppClass extern class PreparseData extends HeapObject { // TODO(v8:8983): Add declaration for variable-sized region. data_length: int32; - inner_length: int32; + children_length: int32; } extern class InterpreterData extends Struct { @@ -697,13 +784,36 @@ extern class SharedFunctionInfo extends HeapObject { @if(V8_SFI_HAS_UNIQUE_ID) unique_id: int32; } +@abstract +@generateCppClass +extern class UncompiledData extends HeapObject { + inferred_name: String; + start_position: int32; + end_position: int32; +} + +@generateCppClass +extern class UncompiledDataWithoutPreparseData extends UncompiledData { +} + +@generateCppClass +extern class UncompiledDataWithPreparseData extends UncompiledData { + preparse_data: PreparseData; +} + +@abstract +@generateCppClass +@highestInstanceTypeWithinParentClassRange +extern class JSFunctionOrBoundFunction extends JSObject { +} + @generateCppClass -extern class JSBoundFunction extends JSObject { +extern class JSBoundFunction extends JSFunctionOrBoundFunction { // The wrapped function object. bound_target_function: Callable; // The value that is always passed as the this value when calling the wrapped // function. - bound_this: JSAny; + bound_this: JSAny | SourceTextModule; // A list of values whose elements are used as the first arguments to any call // to the wrapped function. bound_arguments: FixedArray; @@ -728,8 +838,6 @@ extern operator '.length_intptr' macro LoadAndUntagFixedArrayBaseLength( FixedArrayBase): intptr; type SloppyArgumentsElements extends FixedArray; -type NumberDictionary extends HeapObject - generates 'TNode<NumberDictionary>'; extern class FreeSpace extends HeapObject { size: Smi; @@ -763,6 +871,8 @@ const PROXY_REVOCABLE_RESULT_MAP_INDEX: constexpr NativeContextSlot generates 'Context::PROXY_REVOCABLE_RESULT_MAP_INDEX'; const REFLECT_APPLY_INDEX: constexpr NativeContextSlot generates 'Context::REFLECT_APPLY_INDEX'; +const REGEXP_FUNCTION_INDEX: constexpr NativeContextSlot + generates 'Context::REGEXP_FUNCTION_INDEX'; const REGEXP_LAST_MATCH_INFO_INDEX: constexpr NativeContextSlot generates 'Context::REGEXP_LAST_MATCH_INFO_INDEX'; const INITIAL_STRING_ITERATOR_MAP_INDEX: constexpr NativeContextSlot @@ -834,7 +944,7 @@ extern class JSDate extends JSObject { cache_stamp: Undefined | Smi | NaN; } -extern class JSGlobalObject extends JSObject { +extern class JSGlobalObject extends JSSpecialObject { native_context: NativeContext; global_proxy: JSGlobalProxy; } @@ -847,9 +957,12 @@ extern class JSAsyncFromSyncIterator extends JSObject { next: Object; } +@generateCppClass extern class JSStringIterator extends JSObject { + // The [[IteratedString]] inobject property. string: String; - next_index: Smi; + // The [[StringIteratorNextIndex]] inobject property. + index: Smi; } @abstract @@ -885,7 +998,7 @@ extern class FunctionTemplateRareData extends Struct { @generateCppClass extern class FunctionTemplateInfo extends TemplateInfo { // Handler invoked when calling an instance of this FunctionTemplateInfo. - // Either CallInfoHandler or Undefined. + // Either CallHandlerInfo or Undefined. call_code: Object; class_name: Object; // If the signature is a FunctionTemplateInfo it is used to check whether the @@ -946,7 +1059,10 @@ const UTF16: const UTF32: constexpr UnicodeEncoding generates 'UnicodeEncoding::UTF32'; -extern class Foreign extends HeapObject { foreign_address: RawPtr; } +@apiExposedInstanceTypeValue(0x46) +extern class Foreign extends HeapObject { + foreign_address: RawPtr; +} @generateCppClass extern class InterceptorInfo extends Struct { @@ -985,6 +1101,7 @@ extern class Cell extends HeapObject { value: Object; } +@abstract extern class DataHandler extends Struct { smi_handler: Smi | Code; validity_cell: Smi | Cell; @@ -996,6 +1113,9 @@ extern class DataHandler extends Struct { @noVerifier weak data_3: Object; } +extern class LoadHandler extends DataHandler; +extern class StoreHandler extends DataHandler; + @abstract @dirtyInstantiatedAbstractClass @generateCppClass @@ -1087,7 +1207,7 @@ extern class ClassPositions extends Struct { end: Smi; } -type WasmInstanceObject extends JSObject; +extern class WasmInstanceObject extends JSObject; extern class WasmExportedFunctionData extends Struct { wrapper_code: Code; @@ -1129,6 +1249,7 @@ extern class WasmIndirectFunctionTable extends Struct { extern class WasmDebugInfo extends Struct { instance: WasmInstanceObject; interpreter_handle: Foreign | Undefined; + interpreter_reference_stack: Cell; locals_names: FixedArray | Undefined; c_wasm_entries: FixedArray | Undefined; c_wasm_entry_map: Foreign | Undefined; // Managed<wasm::SignatureMap> @@ -1305,9 +1426,6 @@ const kStrictReadOnlyProperty: constexpr MessageTemplate const kString: constexpr PrimitiveType generates 'PrimitiveType::kString'; -const kExternalPointerForOnHeapArray: constexpr RawPtr - generates 'JSTypedArray::ExternalPointerForOnHeapArray()'; - const kNameDictionaryInitialCapacity: constexpr int32 generates 'NameDictionary::kInitialCapacity'; @@ -1332,6 +1450,7 @@ extern macro EmptyStringConstant(): EmptyString; extern macro LengthStringConstant(): String; extern macro NanConstant(): NaN; extern macro IteratorSymbolConstant(): Symbol; +extern macro MatchSymbolConstant(): Symbol; const TheHole: TheHole = TheHoleConstant(); const Null: Null = NullConstant(); @@ -1443,15 +1562,30 @@ RegExpBuiltinsAssembler::FastStoreLastIndex(FastJSRegExp, Smi): void; @hasSameInstanceTypeAsParent extern class JSRegExpResult extends JSArray { + // In-object properties: + // The below fields are externally exposed. index: JSAny; input: JSAny; groups: JSAny; + + // The below fields are for internal use only. + cached_indices_or_match_info: JSRegExpResultIndices | RegExpMatchInfo; + names: FixedArray | Undefined; } +@hasSameInstanceTypeAsParent +extern class JSRegExpResultIndices extends JSArray { + // In-object properties: + // The groups field is externally exposed. + groups: JSAny; +} + +transient type FastJSRegExpResult extends JSRegExpResult; + @generateCppClass extern class JSRegExpStringIterator extends JSObject { // The [[IteratingRegExp]] internal property. - iterating_reg_exp: JSAny; + iterating_reg_exp: JSReceiver; // The [[IteratedString]] internal property. iterated_string: String; flags: Smi; @@ -1493,21 +1627,33 @@ extern class AccessorInfo extends Struct { data: Object; } +@generateCppClass extern class AccessorPair extends Struct { getter: Object; setter: Object; } -extern class BreakPoint extends Tuple2 {} -extern class BreakPointInfo extends Tuple2 {} +@hasSameInstanceTypeAsParent +extern class BreakPoint extends Tuple2 { +} +@hasSameInstanceTypeAsParent +extern class BreakPointInfo extends Tuple2 { +} type CoverageInfo extends FixedArray; +@generateCppClass extern class DebugInfo extends Struct { - shared_function_info: SharedFunctionInfo; + shared: SharedFunctionInfo; debugger_hints: Smi; + // Script field from shared function info. script: Undefined | Script; + // The original uninstrumented bytecode array for functions with break + // points - the instrumented bytecode is held in the shared function info. original_bytecode_array: Undefined | BytecodeArray; + // The debug instrumented bytecode array for functions with break points + // - also pointed to by the shared function info. debug_bytecode_array: Undefined | BytecodeArray; + // Fixed array holding status information for each active break point. break_points: FixedArray; flags: Smi; coverage_info: CoverageInfo | Undefined; @@ -1527,12 +1673,15 @@ extern class FeedbackVector extends HeapObject { padding: uint32; } +@generateCppClass extern class FeedbackCell extends Struct { value: Undefined | FeedbackVector | FixedArray; interrupt_budget: int32; } -type AllocationSite extends Struct; +extern class FeedbackMetadata extends HeapObject; + +extern class AllocationSite extends Struct; extern class AllocationMemento extends Struct { allocation_site: AllocationSite; } @@ -1541,9 +1690,7 @@ extern class WasmModuleObject extends JSObject { native_module: Foreign; export_wrappers: FixedArray; script: Script; - weak_instance_list: WeakArrayList; asm_js_offset_table: ByteArray | Undefined; - break_point_infos: FixedArray | Undefined; } extern class WasmTableObject extends JSObject { @@ -1590,22 +1737,35 @@ extern class JSFinalizationGroup extends JSObject { flags: Smi; } +@generateCppClass extern class JSFinalizationGroupCleanupIterator extends JSObject { finalization_group: JSFinalizationGroup; } +@generateCppClass extern class WeakCell extends HeapObject { finalization_group: Undefined | JSFinalizationGroup; target: Undefined | JSReceiver; holdings: Object; + + // For storing doubly linked lists of WeakCells in JSFinalizationGroup's + // "active_cells" and "cleared_cells" lists. prev: Undefined | WeakCell; next: Undefined | WeakCell; + + // For storing doubly linked lists of WeakCells per key in + // JSFinalizationGroup's key-based hashmap. WeakCell also needs to know its + // key, so that we can remove the key from the key_map when we remove the last + // WeakCell associated with it. key: Object; key_list_prev: Undefined | WeakCell; key_list_next: Undefined | WeakCell; } -extern class JSWeakRef extends JSObject { target: Undefined | JSReceiver; } +@generateCppClass +extern class JSWeakRef extends JSObject { + target: Undefined | JSReceiver; +} extern class BytecodeArray extends FixedArrayBase { // TODO(v8:8983): bytecode array object sizes vary based on their contents. @@ -1620,6 +1780,29 @@ extern class BytecodeArray extends FixedArrayBase { bytecode_age: int8; } +extern class Filler extends HeapObject generates 'TNode<HeapObject>'; +extern class CodeDataContainer extends HeapObject; +@abstract +extern class SmallOrderedHashTable extends HeapObject + generates 'TNode<HeapObject>'; +extern class SmallOrderedHashMap extends SmallOrderedHashTable; +extern class SmallOrderedHashSet extends SmallOrderedHashTable; +extern class SmallOrderedNameDictionary extends SmallOrderedHashTable; + +// Various logical subclasses of JSObject, which have their own instance types +// but not their own class definitions: + +// Like JSObject, but created from API function. +@apiExposedInstanceTypeValue(0x420) +extern class JSApiObject extends JSObject generates 'TNode<JSObject>'; +// Like JSApiObject, but requires access checks and/or has interceptors. +@apiExposedInstanceTypeValue(0x410) +extern class JSSpecialApiObject extends JSSpecialObject + generates 'TNode<JSSpecialObject>'; +extern class JSContextExtensionObject extends JSObject + generates 'TNode<JSObject>'; +extern class JSError extends JSObject generates 'TNode<JSObject>'; + extern macro Is64(): constexpr bool; extern macro SelectBooleanConstant(bool): Boolean; @@ -1657,6 +1840,8 @@ extern transitioning builtin HasProperty(implicit context: Context)( extern transitioning macro HasProperty_Inline(implicit context: Context)( JSReceiver, JSAny): Boolean; extern builtin LoadIC(Context, JSAny, JSAny, Smi, FeedbackVector): JSAny; +extern macro CollectCallFeedback( + JSAny, Context, Undefined | FeedbackVector, uintptr); extern macro ThrowRangeError(implicit context: Context)( constexpr MessageTemplate): never; @@ -1674,6 +1859,10 @@ extern macro ThrowTypeError(implicit context: Context)( constexpr MessageTemplate, Object, Object, Object): never; extern transitioning runtime ThrowTypeErrorIfStrict(implicit context: Context)( Smi, Object, Object): void; +extern transitioning runtime ThrowCalledNonCallable(implicit context: Context)( + JSAny): never; +extern transitioning runtime ThrowSymbolIteratorInvalid( + implicit context: Context)(): never; extern transitioning macro ThrowIfNotJSReceiver(implicit context: Context)( JSAny, constexpr MessageTemplate, constexpr string): void; @@ -2232,6 +2421,14 @@ Cast<JSStringIterator>(o: HeapObject): JSStringIterator return HeapObjectToJSStringIterator(o) otherwise CastError; } +Cast<JSRegExpStringIterator>(o: HeapObject): JSRegExpStringIterator + labels CastError { + if (IsJSRegExpStringIterator(o)) { + return %RawDownCast<JSRegExpStringIterator>(o); + } + goto CastError; +} + Cast<JSTypedArray>(o: HeapObject): JSTypedArray labels CastError { if (IsJSTypedArray(o)) return %RawDownCast<JSTypedArray>(o); @@ -2354,12 +2551,25 @@ Cast<JSRegExp>(o: HeapObject): JSRegExp goto CastError; } +Cast<FastJSRegExpResult>(implicit context: Context)(o: HeapObject): + FastJSRegExpResult + labels CastError { + if (regexp::IsFastRegExpResult(o)) return %RawDownCast<FastJSRegExpResult>(o); + goto CastError; +} + Cast<Map>(implicit context: Context)(o: HeapObject): Map labels CastError { if (IsMap(o)) return %RawDownCast<Map>(o); goto CastError; } +Cast<FeedbackVector>(implicit context: Context)(o: HeapObject): FeedbackVector + labels CastError { + if (IsFeedbackVector(o)) return %RawDownCast<FeedbackVector>(o); + goto CastError; +} + Cast<JSPrimitiveWrapper>(o: HeapObject): JSPrimitiveWrapper labels CastError { if (IsJSPrimitiveWrapper(o)) return %RawDownCast<JSPrimitiveWrapper>(o); @@ -2513,6 +2723,7 @@ extern macro Signed(RawPtr): intptr; extern macro TruncateIntPtrToInt32(intptr): int32; extern macro SmiTag(intptr): Smi; extern macro SmiFromInt32(int32): Smi; +extern macro SmiFromUint32(uint32): Smi; extern macro SmiUntag(Smi): intptr; extern macro SmiToInt32(Smi): int32; extern macro RoundIntPtrToFloat64(intptr): float64; @@ -2556,6 +2767,7 @@ extern macro BitcastWordToTaggedSigned(uintptr): Smi; extern macro BitcastWordToTagged(intptr): Object; extern macro BitcastWordToTagged(uintptr): Object; extern macro BitcastTaggedToWord(Tagged): intptr; +extern macro BitcastTaggedToWordForTagAndSmiBits(Tagged): intptr; intrinsic %FromConstexpr<To: type, From: type>(b: From): To; macro FromConstexpr<To: type, From: type>(o: From): To; @@ -2674,7 +2886,7 @@ Convert<Number, uint32>(ui: uint32): Number { return ChangeUint32ToTagged(ui); } Convert<Smi, uint32>(ui: uint32): Smi { - return SmiFromInt32(Signed(ui)); + return SmiFromUint32(ui); } Convert<uintptr, uint32>(ui: uint32): uintptr { return ChangeUint32ToWord(ui); @@ -2811,8 +3023,7 @@ extern macro IsMockArrayBufferAllocatorFlag(): bool; extern macro IsPrototypeTypedArrayPrototype(implicit context: Context)(Map): bool; -extern operator '.data_ptr' macro LoadJSTypedArrayBackingStore(JSTypedArray): - RawPtr; +extern operator '.data_ptr' macro LoadJSTypedArrayDataPtr(JSTypedArray): RawPtr; extern operator '.elements_kind' macro LoadMapElementsKind(Map): ElementsKind; extern operator '.elements_kind' macro LoadElementsKind(JSTypedArray): @@ -2879,8 +3090,6 @@ extern macro LoadConstructorOrBackPointer(Map): Object; extern macro BasicLoadNumberDictionaryElement(NumberDictionary, intptr): JSAny labels NotData, IfHole; -extern macro BasicStoreNumberDictionaryElement(NumberDictionary, intptr, JSAny) - labels NotData, IfHole, ReadOnly; extern macro IsFastElementsKind(ElementsKind): bool; extern macro IsDoubleElementsKind(ElementsKind): bool; @@ -3255,9 +3464,11 @@ extern macro PerformStackCheck(implicit context: Context)(): void; extern macro IsCallable(HeapObject): bool; extern macro IsConstructor(HeapObject): bool; +extern macro IsFeedbackVector(HeapObject): bool; extern macro IsJSArray(HeapObject): bool; extern macro IsJSProxy(HeapObject): bool; extern macro IsJSRegExp(HeapObject): bool; +extern macro IsJSRegExpStringIterator(HeapObject): bool; extern macro IsMap(HeapObject): bool; extern macro IsJSFunction(HeapObject): bool; extern macro IsJSObject(HeapObject): bool; |