| Index: src/wasm/wasm-objects.cc
|
| diff --git a/src/wasm/wasm-objects.cc b/src/wasm/wasm-objects.cc
|
| index 42c2a27ffa6264c65f64dc092a4b228010347a22..3c0139242d23b48b495e91461bfb5b7cf1220227 100644
|
| --- a/src/wasm/wasm-objects.cc
|
| +++ b/src/wasm/wasm-objects.cc
|
| @@ -122,7 +122,7 @@ DEFINE_OBJ_GETTER(WasmModuleObject, compiled_module, kCompiledModule,
|
| WasmCompiledModule)
|
|
|
| Handle<WasmTableObject> WasmTableObject::New(Isolate* isolate, uint32_t initial,
|
| - uint32_t maximum,
|
| + int64_t maximum,
|
| Handle<FixedArray>* js_functions) {
|
| Handle<JSFunction> table_ctor(
|
| isolate->native_context()->wasm_table_constructor());
|
| @@ -133,8 +133,8 @@ Handle<WasmTableObject> WasmTableObject::New(Isolate* isolate, uint32_t initial,
|
| (*js_functions)->set(i, null);
|
| }
|
| table_obj->SetInternalField(kFunctions, *(*js_functions));
|
| - table_obj->SetInternalField(kMaximum,
|
| - static_cast<Object*>(Smi::FromInt(maximum)));
|
| + Handle<Object> max = isolate->factory()->NewNumber(maximum);
|
| + table_obj->SetInternalField(kMaximum, *max);
|
|
|
| Handle<FixedArray> dispatch_tables = isolate->factory()->NewFixedArray(0);
|
| table_obj->SetInternalField(kDispatchTables, *dispatch_tables);
|
| @@ -176,8 +176,12 @@ DEFINE_OBJ_ACCESSORS(WasmTableObject, functions, kFunctions, FixedArray)
|
|
|
| uint32_t WasmTableObject::current_length() { return functions()->length(); }
|
|
|
| -uint32_t WasmTableObject::maximum_length() {
|
| - return SafeUint32(GetInternalField(kMaximum));
|
| +bool WasmTableObject::has_maximum_length() {
|
| + return GetInternalField(kMaximum)->Number() >= 0;
|
| +}
|
| +
|
| +int64_t WasmTableObject::maximum_length() {
|
| + return static_cast<int64_t>(GetInternalField(kMaximum)->Number());
|
| }
|
|
|
| WasmTableObject* WasmTableObject::cast(Object* object) {
|
| @@ -195,14 +199,14 @@ void WasmTableObject::Grow(Isolate* isolate, Handle<WasmTableObject> table,
|
|
|
| Handle<WasmMemoryObject> WasmMemoryObject::New(Isolate* isolate,
|
| Handle<JSArrayBuffer> buffer,
|
| - int maximum) {
|
| + int32_t maximum) {
|
| Handle<JSFunction> memory_ctor(
|
| isolate->native_context()->wasm_memory_constructor());
|
| Handle<JSObject> memory_obj =
|
| isolate->factory()->NewJSObject(memory_ctor, TENURED);
|
| memory_obj->SetInternalField(kArrayBuffer, *buffer);
|
| - memory_obj->SetInternalField(kMaximum,
|
| - static_cast<Object*>(Smi::FromInt(maximum)));
|
| + Handle<Object> max = isolate->factory()->NewNumber(maximum);
|
| + memory_obj->SetInternalField(kMaximum, *max);
|
| Handle<Symbol> memory_sym(isolate->native_context()->wasm_memory_sym());
|
| Object::SetProperty(memory_obj, memory_sym, memory_obj, STRICT).Check();
|
| return Handle<WasmMemoryObject>::cast(memory_obj);
|
| @@ -216,8 +220,12 @@ uint32_t WasmMemoryObject::current_pages() {
|
| return SafeUint32(buffer()->byte_length()) / wasm::WasmModule::kPageSize;
|
| }
|
|
|
| +bool WasmMemoryObject::has_maximum_pages() {
|
| + return GetInternalField(kMaximum)->Number() >= 0;
|
| +}
|
| +
|
| int32_t WasmMemoryObject::maximum_pages() {
|
| - return SafeInt32(GetInternalField(kMaximum));
|
| + return static_cast<int32_t>(GetInternalField(kMaximum)->Number());
|
| }
|
|
|
| WasmMemoryObject* WasmMemoryObject::cast(Object* object) {
|
|
|