Skip to content

Commit

Permalink
Web export now runs the demo program
Browse files Browse the repository at this point in the history
  • Loading branch information
fwsGonzo committed Jul 30, 2024
1 parent 37751b0 commit f59b73f
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 16 deletions.
2 changes: 1 addition & 1 deletion godot-cpp
Submodule godot-cpp updated 59 files
+1 −1 .github/ISSUE_TEMPLATE/bug_report.yml
+4 −5 .github/actions/godot-cache-restore/action.yml
+17 −0 .github/actions/godot-cache-save/action.yml
+10 −4 .github/workflows/ci.yml
+1 −1 README.md
+149 −2 binding_generator.py
+40,308 −20,119 gdextension/extension_api.json
+372 −36 gdextension/gdextension_interface.h
+4 −4 include/godot_cpp/classes/ref.hpp
+62 −15 include/godot_cpp/classes/wrapped.hpp
+17 −5 include/godot_cpp/core/class_db.hpp
+6 −3 include/godot_cpp/core/memory.hpp
+2 −0 include/godot_cpp/core/object.hpp
+11 −0 include/godot_cpp/core/property_info.hpp
+16 −10 include/godot_cpp/core/type_info.hpp
+19 −3 include/godot_cpp/godot.hpp
+42 −24 include/godot_cpp/templates/list.hpp
+4 −0 include/godot_cpp/templates/local_vector.hpp
+1 −1 include/godot_cpp/variant/aabb.hpp
+1 −0 include/godot_cpp/variant/callable_custom.hpp
+25 −0 include/godot_cpp/variant/callable_method_pointer.hpp
+5 −9 include/godot_cpp/variant/rect2.hpp
+5 −9 include/godot_cpp/variant/rect2i.hpp
+9 −0 include/godot_cpp/variant/typed_array.hpp
+3 −0 include/godot_cpp/variant/variant.hpp
+10 −0 include/godot_cpp/variant/vector2.hpp
+14 −0 include/godot_cpp/variant/vector2i.hpp
+11 −0 include/godot_cpp/variant/vector3.hpp
+22 −0 include/godot_cpp/variant/vector3i.hpp
+11 −0 include/godot_cpp/variant/vector4.hpp
+22 −0 include/godot_cpp/variant/vector4i.hpp
+9 −0 src/classes/low_level.cpp
+17 −7 src/classes/wrapped.cpp
+41 −0 src/core/class_db.cpp
+76 −6 src/godot.cpp
+16 −2 src/variant/callable_custom.cpp
+11 −2 src/variant/callable_method_pointer.cpp
+4 −4 src/variant/char_string.cpp
+19 −0 src/variant/packed_arrays.cpp
+8 −0 src/variant/variant.cpp
+12 −0 src/variant/vector2.cpp
+26 −0 src/variant/vector2i.cpp
+19 −0 src/variant/vector3.cpp
+21 −0 src/variant/vector3i.cpp
+21 −0 src/variant/vector4.cpp
+24 −0 src/variant/vector4i.cpp
+4 −0 test/SConstruct
+25 −0 test/doc_classes/Example.xml
+5 −0 test/project/example.gd
+4 −2 test/project/example.gdextension
+14 −1 test/project/main.gd
+3 −1 test/project/main.tscn
+1 −1 test/project/project.godot
+54 −1 test/src/example.cpp
+26 −0 test/src/example.h
+1 −0 test/src/register_types.cpp
+54 −1 tools/godotcpp.py
+3 −13 tools/ios.py
+9 −4 tools/web.py
2 changes: 1 addition & 1 deletion libriscv
3 changes: 1 addition & 2 deletions src/riscv.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class Sandbox : public Node
const auto& machine() const { return *m_machine; }

// Functions.
void load(const PackedByteArray& buffer, const TypedArray<String>& arguments);
void load(Variant vbuf, const TypedArray<String>& arguments);
// Make a function call to a function in the guest by its name.
Variant vmcall(const Variant **args, GDExtensionInt arg_count, GDExtensionCallError &error);
Variant vmcall_address(gaddr_t address, const Variant **args, GDExtensionInt arg_count, GDExtensionCallError &error);
Expand All @@ -50,7 +50,6 @@ class Sandbox : public Node
void add_scoped_variant(uint32_t hash) { m_scoped_variants.insert(hash); }
bool is_scoped_variant(uint32_t hash) const noexcept { return m_scoped_variants.count(hash) > 0; }
private:
void execute();
void handle_exception(gaddr_t);
void handle_timeout(gaddr_t);
void initialize_syscalls();
Expand Down
21 changes: 9 additions & 12 deletions src/shmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ void Sandbox::_bind_methods() {
Sandbox::Sandbox() {
// In order to reduce checks we guarantee that this
// class is well-formed at all times.
this->m_machine = new machine_t{};
this->m_machine = new machine_t {};
set_name("(name)");
UtilityFunctions::print("Constructor, sizeof(Variant) == ", static_cast<int32_t>(sizeof(Variant)));
UtilityFunctions::print("Constructor, alignof(Variant) == ", static_cast<int32_t>(alignof(Variant)));
Expand All @@ -53,8 +53,13 @@ Sandbox::~Sandbox() {
}

// Methods.
void Sandbox::load(const PackedByteArray &buffer, const TypedArray<String> &arguments) {
UtilityFunctions::print("Loading file from buffer");
void Sandbox::load(Variant vbuf, const TypedArray<String> &arguments) {

auto buffer = vbuf.operator godot::PackedByteArray();
if (buffer.is_empty()) {
UtilityFunctions::print("Empty binary, cannot load program.");
return;
}

m_binary = std::vector<uint8_t>{ buffer.ptr(), buffer.ptr() + buffer.size() };

Expand Down Expand Up @@ -95,6 +100,7 @@ void Sandbox::load(const PackedByteArray &buffer, const TypedArray<String> &argu
} catch (const std::exception &e) {
this->handle_exception(machine().cpu.pc());
}

}

Variant Sandbox::vmcall_address(gaddr_t address, const Variant **args, GDExtensionInt arg_count, GDExtensionCallError &error) {
Expand Down Expand Up @@ -183,15 +189,6 @@ void RiscvCallable::call(const Variant **p_arguments, int p_argcount, Variant &r
r_call_error.error = GDEXTENSION_CALL_OK;
}

void Sandbox::execute() {
machine_t &m = machine();

UtilityFunctions::print("Simulating...");
m.simulate(MAX_INSTRUCTIONS);
UtilityFunctions::print("Done, instructions: ", m.instruction_counter(),
" result: ", m.return_value<int64_t>());
}

void Sandbox::handle_exception(gaddr_t address) {
auto callsite = machine().memory.lookup(address);
UtilityFunctions::print(
Expand Down

0 comments on commit f59b73f

Please sign in to comment.