Index: src/wasm/wasm-objects.cc |
diff --git a/src/wasm/wasm-objects.cc b/src/wasm/wasm-objects.cc |
index 42c2a27ffa6264c65f64dc092a4b228010347a22..7b468e95a99d052dd773e891f7c7fb12773eb19c 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()); |
@@ -134,7 +134,7 @@ Handle<WasmTableObject> WasmTableObject::New(Isolate* isolate, uint32_t initial, |
} |
table_obj->SetInternalField(kFunctions, *(*js_functions)); |
table_obj->SetInternalField(kMaximum, |
- static_cast<Object*>(Smi::FromInt(maximum))); |
+ *isolate->factory()->NewNumber(maximum)); |
rossberg
2017/01/17 14:22:06
Lossy conversion paranoia triggered
titzer
2017/01/17 16:47:18
Yeah, even though the input is an int64_t, it is r
|
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))); |
+ *isolate->factory()->NewNumber(maximum)); |
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) { |